【Hack The Box二十五番勝負 Advent Calendar 2020】8日目 vs Bank(●)
はじめに
これは、Hack The Box二十五番勝負 Advent Calendar 2020 8日目の記事です。
サマリ
- 対戦相手:Bank
- 対戦日時:2020年12月9日 18:00 - 23:59
- 結果:敗北
- 主な敗因:
- ディレクトリ列挙……
- 通算成績:8戦1勝7敗
対戦相手
今回の対戦相手は「Bank」です。 www.hackthebox.eu
Walkthrough
※以下、解法に関するネタバレです。
自分でやったこと
情報収集
- nmap
- 以下のポートが開いていることを確認した。
- Firefox
- Dirbuster
- IPアドレスに対して midiumサイズの辞書を使って実行したが、
index.html
とserver-status
しか見つからなかった。
- IPアドレスに対して midiumサイズの辞書を使って実行したが、
侵入
- Hydra
- ユーザーを
chris
に固定して、パスワードはrockyou.txt
で実行したが、当たりなし。
- ユーザーを
Writeupの冒頭を確認 - 1
以降どう頑張っても糸口が見つからなかったため、ギブアップのつもりで公式Writeupの冒頭を確認しました。 /etc/hosts
に bank.htb
を書け、とのこと。これ直近で試したやんけ……。とは言え、前回は証明書経由でドメインを確認できたからで、今回に関しては完全にノーヒントで /etc/hosts
に書けというものでした。まあ理不尽と思わず、覚えておこう……。
以下、上記のみインプットした後にやったことです。
情報収集
- Dirbuster
- 今度は
bank.htb
に対して、midiumの辞書で試行しました。PHPアプリケーションのログイン画面が見つかった。
- 今度は
しかし、何を試せどログイン画面を看破できず。
Writeupの冒頭を確認 - 2
またもスタックしたためWriteup確認。Dirbusterでディレクトリ列挙すると /balance-transfer/
が出てくる、とのこと。やったはずなのにな……という感じですが、回線が貧弱なこともあり満足に試行できていなかったのかもしれません。本当に悔やまれる。
以下、上記のみインプットした後にやったことです。
侵入
/balance-transfer
の中には、決済トランザクションのログと思しきファイルが1000ファイル近くあった。- メールアドレスやパスワードは暗号化されており、ファイルの先頭行に暗号化の結果が書かれていた。
- ブラウザで適当に数ファイル開くと、暗号化の結果はいずれも
SUCCESS
だった。 SUCCESS
以外のファイルがあると踏んで、ログファイルを全てローカルに落とし、ワンライナーでSUCCESS
以外の結果になっているファイルを探すと、--ERR ENCRYPT FAILED
となっているファイルを発見した。中を見ると、メールアドレス(chris@bank.htb
)とパスワードが平文で保存されていた。- 入手したメールアドレスとパスワードで、Webアプリにログインした。
- サポートページにファイルアップロード機能があった。ウェブシェルのアップロードを複数手法で試したがいずれも失敗した。
- ソースを見たら「
.htb
拡張子のファイルはPHPファイルとしてアップロードできるようにしてあるよ」的なことが書いてあった(どうかしている)。 先のPHPファイルの拡張子を.htb
に書き換えると、アップロードが成功した。 - ウェブシェルから
nc
でリバースシェルを確立した(ユーザーはwww-data
)。
権限昇格
- MySQLが動いているようだったが、クレデンシャルは見つからなかった。
- ローカルマシンから
linpeas.sh
をwget
でダウンロードし実行。/etc/passwd
のパーミッションが666になっていた(!)。 - リバースシェルだとViの操作がうまくできないので、以下の手順でrootのパスワードを
x
から任意のパスワードハッシュに書き換えた。cp -p /etc/passwd /tmp
sed -i -e 's/root:x/{{任意のパスワードハッシュ}}/' passwd
cp -p passwd /etc/passwd
cp: preserving times for '/etc/passwd': Operation not permitted
というエラーがでるものの、書き換えは成功していた。
su root
できるようになるので、そのままown user / root。
KPT(Keep-Problem-Try)
Keep
/balance-transfer/
発見後は自力でown rootまでいけた。リバースシェルや/etc/passwd
の発見などはまあまあ手際がよかったと思う。
Problem
- ディレクトリ列挙、こうなってくるとちょっとどうしたらいいか分からない……。
Try
- ディレクトリ列挙に関しては、やるにはやるものの、Writeupを見たときここでつまづいていても、気にしないぐらいがいいのかもしれない……?