こんにちは、ぎんたです。
今回はTryHackMeで提供されている「Linux PrivEsc Arena」というルームの攻略の過程を記事にしています。
ルームはこちらから無料でアクセスできます「Linux PrivEsc ArenaのURL」。
今回のルームはLinuxの権限昇格がテーマとなってます。
Taskが全部で17個あり長くなりますので、何回かに分けて記事にしたいと思います。
今回ご紹介するTaskは以下のものです。
- Task3 カーネルExploit
- Task4 保存されたパスワード(設定ファイル)
- Task5 保存されたパスワード(History)
- Task6 弱いファイルパーミッション
- Task7 SSH Keys
- Task8 Sudo(Shell Escaping)
カーネル Exploitを使った権限昇格の方法を知りたい方
サーバで確認できる設定ファイル、実行したコマンドの履歴からroot権限のパスワードを発見する方法に興味がある方
ファイルのパーミッションの設定不備からの権限昇格の方法に興味がある方
CTFに興味のある方
が今回の対象です。
無料でアクセス可能なので、試してみたい方はぜひやってみてください。
スポンサーリンク
前提条件の説明
Linuxの権限昇格がテーマとなっているため、すでにユーザ権限で被害サーバに侵入している状態となっています(ユーザの認証情報が判明している)。
侵入先のサーバを探索して設定の不備や脆弱性などを調査し、それぞれのTaskごとで実際に権限昇格をしていく方法を解説していきます。
Linuxの権限昇格(Task3 カーネルexploit)
ここでは、Linuxのカーネルバージョンの既知の脆弱性を利用した権限昇格について解説します。
今回は既知の脆弱性を調査するために、「linux-exploit-suggester」というツールを使っていきます。
実際は攻撃者が準備したサーバや公開サーバからツールをダウンロードすることが多いかなと思いますが、親切にもすでに侵入先のサーバに該当のツールがある状態です。
サーバ上でそのまま実行します。
/home/user/tools/linux-exploit-suggester/linux-exploit-suggester.sh
結果を確認すると、Dirty COWの脆弱性があることが判明します。
ローカル環境より読み取り専用メモリのマッピングに対して書き込みが可能となる脆弱性で、「copy-on-write(COW)」を破壊することで権限の昇格が可能になるという。
出典:Security NEXT
Dirty COWのexploitツールもすでにサーバ内にあるので、gccコマンドでコンパイルして実行します。
実施したコマンド:
gcc -pthread /home/user/tools/dirtycow/c0w.c -o c0w
./c0w
1-2分ほど経過したところスクリプトが終了しました。
passwdコマンドを打つことでrootシェルを取得できました。
このexploitは/etc/passwdファイルをシェルを起動するものに置き換えるものです。
/etc/passwdファイルはSUIDが付与されているので、ファイルの所有者の権限で実行されます。
そして/etc/passwdファイルの所有者はrootですので、起動したシェルはroot権限のものとなります。
Linuxの権限昇格(Task4 保存されたパスワード「設定ファイル」)
権限昇格に利用できそうな認証情報を探索する内容となっています。
まず、ユーザのディレクトリの中身を確認すると、「myvpn.ovpn」という興味深いファイル名があるのを確認しました。
内容を見ると、auth-user-passの箇所で「auth.txt」というファイルを参照しているのが分かりました。
「auth.txt」のファイル内を確認すると、userアカウントのパスワードを確認できました。
「設定ファイル内にある権限昇格に利用できそうな認証情報を見つける」という演習でした。
Linuxの権限昇格(Task5 保存されたパスワード「History」)
今度はユーザがbash実行時に入力したコマンドの履歴を確認し、権限昇格に利用できそうな認証情報を探索する内容となっています。
ファイルの内容を確認し、passwでパスワードと思われる該当箇所を抽出します。
cat ~/.bash_history | grep -i passw
結果を確認すると、mysqlでrootユーザでの接続を試みているコマンド履歴がありました。
-p以降の箇所にrootユーザのパスワードを確認できました。
このタスクも認証情報を発見して終了となります。
Linuxの権限昇格(Task6 弱いファイルパーミッション)
このタスクでは、ファイルのパーミッションの設定不備を悪用します。
ユーザのパスワードハッシュを格納している「/etc/shadow」ファイルのパーミッションを確認します。
ls -la /etc/shadow
-rw-rw-r– 1 root shadow 809 Jun 17 2020 /etc/shadow
shadowファイルの内容が誰でも読める状態になっています。
このように、rootのパスワードハッシュを確認できます。
「/etc/passwd」ファイルの内容も同様に誰でも読めるので、両方のファイルの内容を攻撃側の端末にコピーしておきます(以下の作業は攻撃側の端末で実施)。
vim passwd #コピーしたpasswdファイルの内容を書きこむ
vim shadow #コピーしたshadowファイルの内容を書きこむ
次にunshadowコマンドを使ってpasswdファイルとshadowファイルを結合します。
unshadow passwd shadow > unshadowed.txt
最後にhashcatを使ってパスワード解析を行います。
使用する辞書ファイルはAttackBoxにすでにある「rockyou.txt」を使用しました。
hashcat -m 1800 unshadowed.txt /usr/share/wordlists/rockyou.txt -O
なお、「-m」でモードを指定しています。ここでは、1800に指定しています。
「hashcatのGeneric hash typesのURL」
数分後にパスワードが判明しました。
このTaskではrootのパスワードを解析して終了となります。
Linuxの権限昇格(Task7 SSH Keys)
root権限でSSH接続ができるよう、侵入したサーバ内で利用可能なSSHキーを探します。
以下のコマンドで「authorized_keys」「id_rsa」を探索します。
find / -name authorized_keys 2> /dev/null
find / -name id_rsa 2> /dev/null
/backups/supersecretkeys/id_rsa
今回の探索で「/backups/supersecretkeys/id_rsa」が見つかりました。
ファイルのパーミッションを確認すると、誰でも読み書き可能で所有者がrootになっています。
TCM@debian:~$ ls -la /backups/supersecretkeys/id_rsa
–rwxrwxrwx 1 root root 2590 Jun 17 2020 /backups/supersecretkeys/id_rsa
またファイルの内容を確認すると、SSHの秘密鍵であることが分かりました。
攻撃側の端末でid_rsaという名前のファイルに秘密鍵の内容をコピーしました。
以下のコマンドを攻撃側の端末で実行しコピーしたSSH鍵でサーバに接続したところ、rootのシェルを取得できました。
chmod 400 id_rsa
ssh -i id_rsa root@10.10.49.166
Linuxの権限昇格 (Task8 Sudo「Shell Escaping」)
rootで実行できるコマンドを以下のコマンドを使って調査します。
sudo -l
多くのコマンドがパスワード無しでroot権限で実行できそうです。
権限昇格に利用できそうなコマンドは数多くありますが、今回はVimを使っていきます。
GTFOBinsのサイトへ移動して、Vimを調査します。
こちらが調査したURLです「GTFOBinsのURL」。
一番上に表示された、「sudo vim -c ‘!sh’」のコマンドを使用してみます。
コマンドを実行することでrootシェルを取得できました。
また、GTFOBinsについて解説している別の記事もありますので、よろしければご覧ください。
まとめ
今回はLinuxの権限昇格の方法をいくつか解説しました。
解説したTaskは6つあり、以下のものでした。
- Task3 カーネルexploit
- Task4 保存されたパスワード(設定ファイル)
- Task5 保存されたパスワード(History)
- Task6 弱いファイルパーミッション
- Task7 SSH Keys
- Task8 Sudo(Shell Escaping)
残りのTaskは次回の記事で解説するよ。
後11個のTaskがあるのか~、ちょっと多いけど頑張ろうと。。
今回の記事が参考になれば幸いです。
以上、ぎんたでした。
サイバーセキュリティを学ぶ上で必要な攻撃と解析に関する他の記事は、以下のリンクで確認できます。
学習に関しましては、以下のセキュリティの勉強法、おすすめの学習本・動画の記事が多くの方に読まれています。
資格の記事については以下の記事がおすすめです。
ITエンジニアへの転職については以下の記事がおすすめです。
その他学習・転職関連に関しましては、以下の記事もあわせて読まれています。
ぜひご覧ください!