見出し画像

Writeup: Vulnhub DC-3 攻略

M.Yoshi

Vlunhub の DC-3を攻略したのでメモ。
「バージョンを特定し脆弱性を探す」ことで素直に解くことができた。

0.ダウンロード

この仮想マシンは下記のリンクからダウンロードできる。

https://www.vulnhub.com/entry/dc-32,312/

ダウンロード後、Virtual Boxにインポートし、ネットワークインターフェースを「ホストオンリーアダプタ」に変更して起動する。

DC-3 起動完了

1.攻略

1)ポートスキャン

nmap で Ping スキャンしてターゲットのIPアドレスを調べる。
筆者の環境では 192.168.56.122 だった。

Pingスキャン

続いて、このIPアドレスをポートスキャンしてみる。
開いているポートは 80/tcp (http) のみ。Apacheが稼働しているようだ。

ポートスキャン

2)脆弱性探し

80/tcp が開いているので、とりあえずブラウザでアクセスしてみる。
右側にログイン画面が見えている。何かのCMSっぽい。

トップページの画面

CMSで作成された画面の場合、html ソースに metaタグなどでCMSの名前が書かれていることがある。
ソースを表示してみると、"Joomla" というCMSであることが判った。

HTMLソースから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 を発見

README.txt をブラウザで眺めてみる。
どうやら Joomla のバージョンは 3. 7 のようだ。

README.txt の内容

調べてみると、このバージョンには SQL インジェクションの脆弱性があることが判った。

3)侵入

まずは、SQLインジェクションの脆弱性を突いてCMSにログインすることが最初の目標である。

下記のリンクで公開されているPythonスクリプトを使用した。

このスクリプトを実行した結果、CMSのユーザーID ( admin ) とパスワードハッシュが判った。

ユーザーID、パスワードハッシュを取得

パスワードハッシュが入手できたので、これを解読してパスワードを入手する。とはいうものの、 md5 , sha256 などハッシュには様々な種類があるので、まずは種類を調べる必要がある。

ハッシュは "$2y$" で始まる文字列となっており、これは bcrypt という種類であることが判った。

ハッシュの種類は下記のサイトに一覧があり、チェックするのに役に立つ。

あとは辞書を使ってこのハッシュを解読するだけだ。
ハッシュの解読には hashcat という定番のツールがあり、下記のリンクからダウンロードできる。

このツールはGPUを使用するためか仮想マシンでは動作しなかったので、ホストOSになっている WIndows 側で実行。パスワードが判明した。 

hashcat実行画面

判明した ID (admin)とパスワード(snoopy)で 管理画面にログインする。 

Joomra 管理者画面へのログイン

ログイン後、CMSテンプレートの設定画面に移動し、error.php を リバースシェル用のスクリプトに入れ替える。このスクリプトは攻撃者の 4444/tcp にシェルを返すようになっている。

error.php のすり替え

次に攻撃側のマシンで 4444/tcp をオープンして待ち受けする。

4444/tcpで待ち受け(攻撃側)

これで準備完了。
最後にブラウザでCMS上の「存在しないURL」へアクセスする。既存の記事のURLを何文字か変更したものを使用すれば良い。

存在しないURLへのアクセス

すり替えた error.php が起動し、攻撃側マシンから相手サーバー側のシェルが操作可能になった。侵入成功である。

侵入成功

4)権限昇格(root権限奪取)

次の目標は root権限の奪取である。
suid や cron 、DBのパスワード使いまわしの有無など、いくつかチェックしたが問題無さそうだったので、linpeas.sh を使用して脆弱性をチェックすることにした。

このツールはカーネルの脆弱性をチェックするツールで下記のリンクからダウンロードできる。

実行結果を見ると、CVE-2021-4034 の脆弱性が検出されていた。

linpeas.sh での検出結果

CVE-2021-4034 は PwnKitと呼ばれる脆弱性でこれを利用することでrootに権限昇格することが可能になる。攻撃コードは下記リンクのものを使用した。

まず、上記のリンクからダウンロードした  cve-2021-4034-poc.c を相手側サーバにアップロードする。

cve-2021-4034-poc.c

次に普通にコンパイルする。

コンパイル

最後にコンパイルしたファイルを実行する。
すんなりと root権限に昇格することができた。

root権限奪取

 root 権限を手にすることができたので、フラグを見てみよう。

flag

今回はこれでおしまい。めでたし、めでたし。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!