【Hack The Box二十五番勝負 Advent Calendar 2020】7日目 vs Teacher(●)
はじめに
これは、Hack The Box二十五番勝負 Advent Calendar 2020 7日目の記事です。
サマリ
- 対戦相手:Blocky
- 対戦日時:2020年12月8日 20:50 - 23:59
- 結果:敗北
- 主な敗因:
- 不自然だと感じたことの確認を放置した
- MySQLの出力結果をちゃんと検証しなかった
- 通算成績:7戦1勝6敗
対戦相手
今回の対戦相手は「Teacher」です。 www.hackthebox.eu
Walkthrough
※以下、解法に関するネタバレです。
自分でやったこと
情報収集
- nmap
- 以下のポートが開いていることを確認した。
- HTTP(80)
- 以下のポートが開いていることを確認した。
- Dirbuster
- midiumサイズの辞書を実行し、
/phpmyadmin
(403)や/Moodle
(200)を発見した。
- midiumサイズの辞書を実行し、
- Firefox
- "Giovanni" という教師が作成したコースがあることを確認した。
/gallery.html
で画像が1つ欠けていることを確認した。/images
の当該ファイルを確認すると、.jpg
として読み込めないファイルだった。- 当該ファイルを
wget
してfile
コマンドした結果テキストファイルであることが判明(これをやったのが23:00ぐらい)。 - 内容は「Giovanniがパスワードの最後の1文字を忘れた、覚えているのは
Th4C00lTheacha
までだから、あとはなんとかして欲しい」とのこと。
侵入
このあたりでタイムアップしました。以降は時間切れ後(だがWriteupは見ていない)のトライです。
権限昇格(一般ユーザー)
ss -atn | grep LISTEN
で、MySQLが動作していることを確認した。/etc/passwd
の内容から、giovanni
というユーザーが存在することを確認した。/var/www/html/moodle/config.php
内に、MySQLのクレデンシャルがあることを確認した。- MySQL
SELECT * FROM moodle.mdl_user
など確認するも特段の情報は得られず。
- LinPEAS
wget
でLinPEASを持ち込んで実行するも、特段の情報は得られず。
その他、PHPMyAdmin周りを確認するもめぼしいものは見つからず、ギブアップしました。
残りの手順
Writeupは公式のものを参考にしています。
権限昇格(一般ユーザー)
- MySQL
mdl_user
テーブルの内容をよく確認すると、Giovannibak
ユーザーのパスワードのみMD5だった。
- デハッシュ(と言うとおこられることがあるらしいが)
- (
hashcat
やjohn
が正しく使えなかったので)外部のMD5レインボーテーブルで確認したところ、平文はexpelled
であるようだった。
- (
giovanni
での権限昇格su giovanni
してパスワードはexpelled
でログイン試行したところ成功した。own user。
権限昇格(rootユーザー)
giovanni
のホームディレクトリ内にあるwork/tmp
にバックアップを作成するスクリプト/usr/bin/backup.sh
がroot
ユーザーのcronジョブで作成されているらしい(Writeup中には具体的な確認方法について記載がなかったが、pyps64
などで分かりそうだ)。/usr/bin/backup.sh
の中身を見ると、バックアップ元はcourses/*
と指定されているため、courses
という名前の/root
へのシンボリックリンクファイルを作ってしまえば、/root/*
がバックアップされる ということになる(悪いことを考える人がいるものだ、と思った)。- この方法で
root.txt
が生成され、own root。
KPT(Keep-Problem-Try)
Keep
Problem
- 画像の欠けについて、もっと早く確認するべきだった。
- MySQLの出力を見逃した。
Try
- 気づいた不自然な点はあらゆる確認をおこなう。具体的には、表示できない画像ファイルはその形式を確認する。
- MySQLのテーブルは、めぼしいフィールドに絞って出力する(
SELECT *
としていたために見逃したふしがある)。