Writeup: Vulnhub DC-3 攻略
Vlunhub の DC-3を攻略したのでメモ。
「バージョンを特定し脆弱性を探す」ことで素直に解くことができた。
0.ダウンロード
この仮想マシンは下記のリンクからダウンロードできる。
https://www.vulnhub.com/entry/dc-32,312/
ダウンロード後、Virtual Boxにインポートし、ネットワークインターフェースを「ホストオンリーアダプタ」に変更して起動する。
1.攻略
1)ポートスキャン
nmap で Ping スキャンしてターゲットのIPアドレスを調べる。
筆者の環境では 192.168.56.122 だった。
続いて、このIPアドレスをポートスキャンしてみる。
開いているポートは 80/tcp (http) のみ。Apacheが稼働しているようだ。
2)脆弱性探し
80/tcp が開いているので、とりあえずブラウザでアクセスしてみる。
右側にログイン画面が見えている。何かのCMSっぽい。
CMSで作成された画面の場合、html ソースに metaタグなどでCMSの名前が書かれていることがある。
ソースを表示してみると、"Joomla" というCMSであることが判った。
あとは、CMSのバージョンが判れば、脆弱性がチェックできる。
とりあえずページを隅々探してみたがバージョン表記は見当たらなかった。
CMSのバージョン表記は、インストール時に設置される Readme や Changelog などで判ることがある。
ということで、Webサーバのディレクトリをスキャンしてみることにした。
ツールはgobuster を使用。コマンドは下記の通り。
gobuster dir -u http://192.168.56.122/ -w /usr/share/wordlists/dirb/common.txt -x txt,php
スキャンした結果、README.txt が見つかった。
README.txt をブラウザで眺めてみる。
どうやら Joomla のバージョンは 3. 7 のようだ。
調べてみると、このバージョンには SQL インジェクションの脆弱性があることが判った。
3)侵入
まずは、SQLインジェクションの脆弱性を突いてCMSにログインすることが最初の目標である。
下記のリンクで公開されているPythonスクリプトを使用した。
このスクリプトを実行した結果、CMSのユーザーID ( admin ) とパスワードハッシュが判った。
パスワードハッシュが入手できたので、これを解読してパスワードを入手する。とはいうものの、 md5 , sha256 などハッシュには様々な種類があるので、まずは種類を調べる必要がある。
ハッシュは "$2y$" で始まる文字列となっており、これは bcrypt という種類であることが判った。
ハッシュの種類は下記のサイトに一覧があり、チェックするのに役に立つ。
あとは辞書を使ってこのハッシュを解読するだけだ。
ハッシュの解読には hashcat という定番のツールがあり、下記のリンクからダウンロードできる。
このツールはGPUを使用するためか仮想マシンでは動作しなかったので、ホストOSになっている WIndows 側で実行。パスワードが判明した。
判明した ID (admin)とパスワード(snoopy)で 管理画面にログインする。
ログイン後、CMSテンプレートの設定画面に移動し、error.php を リバースシェル用のスクリプトに入れ替える。このスクリプトは攻撃者の 4444/tcp にシェルを返すようになっている。
次に攻撃側のマシンで 4444/tcp をオープンして待ち受けする。
これで準備完了。
最後にブラウザでCMS上の「存在しないURL」へアクセスする。既存の記事のURLを何文字か変更したものを使用すれば良い。
すり替えた error.php が起動し、攻撃側マシンから相手サーバー側のシェルが操作可能になった。侵入成功である。
4)権限昇格(root権限奪取)
次の目標は root権限の奪取である。
suid や cron 、DBのパスワード使いまわしの有無など、いくつかチェックしたが問題無さそうだったので、linpeas.sh を使用して脆弱性をチェックすることにした。
このツールはカーネルの脆弱性をチェックするツールで下記のリンクからダウンロードできる。
実行結果を見ると、CVE-2021-4034 の脆弱性が検出されていた。
CVE-2021-4034 は PwnKitと呼ばれる脆弱性でこれを利用することでrootに権限昇格することが可能になる。攻撃コードは下記リンクのものを使用した。
まず、上記のリンクからダウンロードした cve-2021-4034-poc.c を相手側サーバにアップロードする。
次に普通にコンパイルする。
最後にコンパイルしたファイルを実行する。
すんなりと root権限に昇格することができた。
root 権限を手にすることができたので、フラグを見てみよう。
今回はこれでおしまい。めでたし、めでたし。
この記事が気に入ったらサポートをしてみませんか?