![見出し画像](https://assets.st-note.com/production/uploads/images/113255160/rectangle_large_type_2_07d38aa2a2b3e67ee048dc116515e6e8.png?width=1200)
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 自身のアドレス)
![](https://assets.st-note.com/img/1691887775847-ZSZ7IiGBWo.png?width=1200)
ポートスキャンしてみる。
80/tcp, 111/tcp, 1337/tcp , 2049/tcp などなど、派手にポートが開いている。
NFSが動いているようだ。
![](https://assets.st-note.com/img/1691887980147-KsYSF6zWsC.png?width=1200)
NFS で /mnt/nfs が共有されていたので、マウントしてみる。
![](https://assets.st-note.com/img/1691910592934-dHcdM0nLQR.png)
とりあえず1つ目のフラグを入手。
![](https://assets.st-note.com/img/1691910737343-SvVQFXtWsG.png)
次にWebサイトにアクセスしてみる。何やら面白そう。。
![](https://assets.st-note.com/img/1691888589044-bNFhSd3yec.png?width=1200)
画像をクリックすると、インベーダーゲームが現れた。キーボードの [Z] を押すと下からビームが出てインベーダーをやっつけられる。
JavaScriptでこんなゲームができるのかと感心。しばし遊んでみた。
![](https://assets.st-note.com/img/1691888727081-LZl5M6aFEE.png?width=1200)
さて、気を取り直して、Webサーバのディレクトリをスキャンしてみる。
面白そうなディレクトリが幾つか見つかった。
特に /file.php というわざとらしい名前が気になる…。
![](https://assets.st-note.com/img/1691890777392-3hpgH1LDGJ.png?width=1200)
2)脆弱性探し
/file.php にアクセスしてみる。
引数に指定したファイルが file.php でそのまま表示されそうな予感。。
![](https://assets.st-note.com/img/1691890202010-fPwoXAQrUC.png?width=1200)
引数の名前を調べるため、とりあえずファジングしてみよう。
パラメータの名前は "file"であることが判った。
![](https://assets.st-note.com/img/1691890353813-Eq3XdLCUfW.png?width=1200)
/file.php?file=/etc/passwd でパスワードファイルが閲覧できた。
![](https://assets.st-note.com/img/1691890459894-LDXuRElKuu.png?width=1200)
3)侵入
/file.php?file=[パス名] で指定したファイルを何でも読み込めるので、先ほどのNFS 共有(/mnt/nfs )に WebShell を置いておき、file.php から読み込みすれば侵入できる。
まずは NFS共有にWebShellを置く。スクリプト は下記のサイトから借用。backdoor.php として保存した。
![](https://assets.st-note.com/img/1691912828210-MksoXDn28i.png?width=1200)
次にローカルの 4444 で待ち受ける。
![](https://assets.st-note.com/img/1691912064245-xXKSJLr7CQ.png)
最後に、ブラウザで /file.php?file=/mnt/nfs/backdoor.php にアクセスする。
リバースシェル接続が成功し、サーバーに侵入できた。
![](https://assets.st-note.com/img/1691913213761-9cfFHwMejA.png?width=1200)
4)権限昇格
nfs の設定を眺めてみる。no_root_squash となっていた。
![](https://assets.st-note.com/img/1691915422076-TeSkMyxjId.png?width=1200)
この設定だと、リモートのrootユーザーがこのディレクトリをマウントした場合、そのまま root権限で共有ディレクトリにファイルを置いたり、パーミッションが設定できてしまう。これを利用すれば権限昇格は簡単。
まず、root で NFS共有に接続し、適当なディレクトリを 777 で作る。
![](https://assets.st-note.com/img/1691915644844-Ehrd8WtE2s.png?width=1200)
次に、サーバー側のシェルで /mnt/nfs/hoge に bash をコピーする。
![](https://assets.st-note.com/img/1691915762648-vO7LJK10mP.png)
手元のシェルから、コピーした bash の所有者を root に変更し SUIDビットをオンにする。
![](https://assets.st-note.com/img/1691915901261-LyW1kEpZAa.png?width=1200)
最後にサーバー側のシェルで root に suid された bash を実行する。
これで root のシェルに権限昇格できた。
![](https://assets.st-note.com/img/1691915993815-6gpgEnZGhU.png?width=1200)
rootフラグを見てみよう。
![](https://assets.st-note.com/img/1691916441857-kbbzt8TEzV.png?width=1200)
これで完了。
めでたし、めでたし。
この記事が気に入ったらサポートをしてみませんか?