見出し画像

Writeup: Vulnhub Deathnote 攻略

Vulnhub の Deathnote というマシンの攻略メモ。
随所にヒントが書かれていてサクっと解ける内容だった。
マンガの Deathnote のストーリーが引用されているので、もとの話を知っているとなんだか懐かしいようで面白い。

1.ダウンロード

下記のリンクからダウンロードできる。サイズは658MB 。

ダウンロード後、VirtualBoxにインポートし、ネットワークアダプタをホストオンリーアダプタに変更して起動。メモリは1GB で問題無く動作した。

deathnote 起動画面

2.攻略

1)ポートスキャン

とりあえずIPアドレスを調べる。 nmap -sP で Pingスキャンを実行する。

nmap pingscan

次にポートスキャンを実行。
80/tcp で Apach が、 22/tcp で OpenSSHが稼働している。

nmap portscan

ブラウザで 80/tcp に接続してみると、リダイレクトされて下図のエラーが表示された。

リダイレクト後のエラー画面

このままではサイトにアクセスできないので、名前解決できるよう、下図のように /etc/hosts にエントリを追加する。

/etc/hosts へエントリ追加

再度アクセスしてみると、問題無く表示できた。

" L 、おまえを抹殺してやる!” 
それにしても、キラ とか L とか、なんだか懐かしいなぁ。。 

deathnote ホーム画面

2)侵入

画面をスクロールしてみると、このサイトは Wordpress で作られていることが判る。

もう一度、記事をよく見ると最初の「i will eliminate you, L」という KIRA の投稿に L のコメント("my fav line is iamjustic3")が書いてあるのが判る。

iamjustic3 がパスワードっぽい文字列になっているのが気にかかる。  

というわけで、Wordpress の管理画面 ( wp-login.php )から ユーザー KIRA 、パスワード iamjustic3 でログインできるか試してみる。

あらら、、ログインできてしまった。。

Wordpress 管理画面

次にやるのは、侵入用の「 Webシェル」の設置である。
リバースシェル用の PHP スクリプトを 404テンプレートと入れ替えしようとしたところ、あらら、、エラーが出て更新に失敗してしまう。。

調べてみると、Wordperss 4.9 以後、PHPスクリプトの更新時に自動チェックが行われるようになっており、何等かの理由でチェックが失敗したときにこのエラーが出現するようだ。

自動チェックで必要な通信が許可されていない等、何か不具合が発生している可能性がある。管理画面から Tools → Site Health でエラーの有無をチェックしてみると、サイトのREST API でエラーが起きていることが判った。

エラーの内容は下記の通り。
どうやら、deathnote.vuln の名前解決に失敗しているらしい。。 

Error: cURL error 6: Could not resolve host: deathnote.vuln (http_request_failed)

エラーを回避するためには、「名前解決をしない」ようにすれば良い。
つまりサイトの名前を deathnote.vuln から IP アドレス( 192.168.56.129 ) へ置き換えれば良い。

ということで、Setting → General Settings の画面からサイト名をIPアドレスに変更してみた。 

Site Health を確認すると、先ほどのREST API のエラーは解消している。

この状態で再度、404 テンプレートを Webシェルに置き換えてみる。
今度は問題無く更新できた。

攻撃側のマシンで 4444/tcp で待ち受けする。

次に サイト上の「存在しない URL」にアクセスする。 
URL は「既存のURL の文字列」を幾つか変更すれば良い。

Webシェルが起動し、予定通りサーバーへ侵入できた。

3)権限昇格

このままだとコマンドが入力しづらいので、ターミナルの設定を幾つか追加して使いやすくする。

このサーバーに登録されているユーザーは l とkira の二つ。 
次の目標はこれらのユーザーへの権限昇格だ。

とりえあえず  l のホームディレクトリにある user.txt を見てみよう。
おぉ、BrainFuck だ。久々に目にするなぁ。。

BrainFuck はプログラミング言語で、+ , > などの数種類の記号だけを使ってプログラミングができるのが特徴でCTFではパズルや暗号のような題材で時々出てくる。

オンラインで実行できるサイトがあるので実行してみると、以下の文字列が表示された。「まだまだだ。。」というところか? なんのこっちゃ。。

i think u got the shell , but you wont be able to kill me -kira

気を取り直して、サーバのファイルをチェックしてみる。
最初にチェックするのは、wp-config.php である。

wp-config.php

上記のパスワードであっさりと、 l に権限昇格できた。

権限昇格

少し調べてみたがこの ユーザー   自体には特別な権限は無さそうだった。
気を取り直して、サーバーのファイルをもう少し調べてみる。

通常は何も無いはずの /opt に L というディレクトリがあるのを発見。
なにやら怪しげなディレクトリが見つかった。

kira-case というディレクトリには、case-file.txt があった。
映画「デスノート」1作目を思い出させる内容。。う~ん懐かしい。

指示通り "fake-notebook-rule" フォルダを見てみる。
case.wav というファイルに何やら怪しげな文字列が書かれている。

とりえあえずデコードしてみよう。
単純に文字コードを16進数に並べただけのようだ。デコードすると以下の文字列になった。

cGFzc3dkIDoga2lyYWlzZXZpbCA=

文字列の最後に "="が付くのは Base64 エンコードの特徴である。
デコードしてみると以下のようになった。

これはおそらく kira のパスワードに違いない。
su してみると、あっさりと kira に権限昇格できた。

これで最初の kira.txt が読める。
ホームディレクトリに移動し内容を見てみると、またbase64っぽい文字列。

デコードしてみると、 L ,  Misa をチェックしろと書いてある。
Misa は デスノートに出てくる重要キャラの一人。映画ではたしか、戸田恵梨香がミサ役をやっていたなぁ、、懐かしい。。

ということで、指示通り /var/misa をチェックする。
「遅すぎ。。」ってなんのこっちゃ。

気を取り直して、kira の権限をチェックする。
おぉ、このユーザーは何でもできる権限を持っているではないか。

ということで、kira から root権限にこのまま昇格。

これで攻略完了。フラグを見てみよう。
アスキーアートで何やら書いてあるようだけど、何て書いてあるんだろう?

root.txt

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

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