見出し画像

Writeup: Vulnhub Hacksudo2

Vulnhub の Hacksudo2 攻略メモ。
このVMは簡単に攻略できた。


1.仮想マシンのダウンロード

下記のリンクからダウンロード。サイズは 1.8 GB。

ダウンロードしたファイルをVirtual Box へインポートして起動する。
ネットワークインターフェースは「ホストオンリーアダプタ」を使用。
メモリは 1GBで問題無く起動した。

2.攻略

1)ポートスキャン

netdiscover  でIPアドレスをスキャンする。
ターゲットのIPアドレスは 192.168.56.146 。
(192.168.56.1 と 100  は VirtualBox 自身のアドレス)

netdiscover -i eth1 -r 192.168.56.0/24

ポートスキャンしてみる。
80/tcp, 111/tcp, 1337/tcp , 2049/tcp などなど、派手にポートが開いている。
NFSが動いているようだ。

ポートスキャン

NFS で /mnt/nfs が共有されていたので、マウントしてみる。

とりあえず1つ目のフラグを入手。

flag1.txt

次にWebサイトにアクセスしてみる。何やら面白そう。。

画像をクリックすると、インベーダーゲームが現れた。キーボードの [Z] を押すと下からビームが出てインベーダーをやっつけられる。

JavaScriptでこんなゲームができるのかと感心。しばし遊んでみた。

ゲーム画面

さて、気を取り直して、Webサーバのディレクトリをスキャンしてみる。
面白そうなディレクトリが幾つか見つかった。
特に /file.php というわざとらしい名前が気になる…。

ディレクトリスキャン

2)脆弱性探し

/file.php にアクセスしてみる。
引数に指定したファイルが file.php でそのまま表示されそうな予感。。

引数の名前を調べるため、とりあえずファジングしてみよう。
パラメータの名前は "file"であることが判った。

ファジング

/file.php?file=/etc/passwd でパスワードファイルが閲覧できた。

LFI

3)侵入

/file.php?file=[パス名] で指定したファイルを何でも読み込めるので、先ほどのNFS 共有(/mnt/nfs )に WebShell を置いておき、file.php から読み込みすれば侵入できる。

まずは NFS共有にWebShellを置く。スクリプト は下記のサイトから借用。backdoor.php として保存した。

backdoor.php

次にローカルの 4444 で待ち受ける。

ローカル 4444/tcp で待ち受け

最後に、ブラウザで /file.php?file=/mnt/nfs/backdoor.php にアクセスする。
リバースシェル接続が成功し、サーバーに侵入できた。

リバースシェル接続

4)権限昇格

nfs の設定を眺めてみる。no_root_squash となっていた。

/etc/exports

この設定だと、リモートのrootユーザーがこのディレクトリをマウントした場合、そのまま root権限で共有ディレクトリにファイルを置いたり、パーミッションが設定できてしまう。これを利用すれば権限昇格は簡単。

まず、root で NFS共有に接続し、適当なディレクトリを 777 で作る。

次に、サーバー側のシェルで /mnt/nfs/hoge に bash をコピーする。

bash をコピー

手元のシェルから、コピーした bash の所有者を root に変更し SUIDビットをオンにする。

最後にサーバー側のシェルで root に suid された bash を実行する。
これで root のシェルに権限昇格できた。

rootフラグを見てみよう。

root.txt

これで完了。
めでたし、めでたし。

この記事が気に入ったらサポートをしてみませんか?