一、漏洞环境搭建
我简单写了一个poc,地址:https://github.com/W01fh4cker/CVE-2024-30043-XXE
我采用的是SqlServer 2019
+ Microsoft Sharepoint 2019
+ DC
联网安装的搭建方式,也可以把前两个装一块,看个人;如果要断网安装,网上也有对应的文章。
如果你实在是太懒,那就下载我搭建好的:
链接: https://pan.baidu.com/s/1LF7GmE8ujNEXnMw2Bi8Q_A 提取码: 5grq
还是推荐自己搭建,感受过程,积累排错经验:
SharePoint Server 2019
下载地址:
https://download.microsoft.com/download/C/B/A/CBA01793-1C8A-4671-BE0D-38C9E5BBD0E9/officeserver.img
SqlServer 2019
在线安装工具下载地址:
https://download.microsoft.com/download/d/a/2/da259851-b941-459d-989c-54a18a5d44dd/SQL2019-SSEI-Dev.exe
SQL Server Management Studio
下载地址:
https://download.microsoft.com/download/b/9/7/b97061b9-9b9c-4bc7-86de-22b262c016d1/SSMS-Setup-CHS.exe
SharePoint Designer 2013
下载地址:
https://download.microsoft.com/download/3/E/3/3E383BC4-C6EC-4DEA-A86A-C0E99F0F3BD9/sharepointdesigner_64bit.exe
由于原Dnspy
作者不再维护,于是可以考虑下载社区维护版:
https://github.com/dnSpyEx/dnSpy/releases/download/v6.5.0/dnSpy-net-win64.zip
Microsoft .NET Framework 4.7.2
下载地址:
https://download.visualstudio.microsoft.com/download/pr/1f5af042-d0e4-4002-9c59-9ba66bcf15f6/089f837de42708daacaae7c04b7494db/ndp472-kb4054530-x86-x64-allos-enu.exe
安装完成之后,切记要先打个快照。
如果用了我的镜像,发现sp2019
机器配置了NAT
但是显示电缆未插入的话,说明宿主机的NAT
服务没启动,需要手动启动:
管理员账户访问http://sp2019:21548/
并创建站点cvetest
,这部分网上也有教程,就不细说了,实在遇到问题公众号后台发私信。
二、漏洞复现踩坑
搭建完成之后我打开sp2019
机器的时候,系统提示我要进行Windows
更新,但是我向来是不更新的,因此就略过了,没想到这打开了我三天的漏洞复现折磨之旅。
漏洞作者Piotr Bazydło
在zerodayinitiative
的博客上发布了一篇poc
:
https://www.zerodayinitiative.com/blog/2024/5/29/cve-2024-30043-abusing-url-parsing-confusion-to-exploit-xxe-on-sharepoint-server-and-cloud
作者开篇即说明,漏洞点位于Microsoft.SharePoint.WebControls.BaseXmlDataSource
,那么我们就利用Dnspy
调试看看。
打开Dnspy
,点击Debug-->Attach to Process
:
可以看到这个就是我们之前创建的位于80
端口的站点所对应的进程,选中后点击Attach
:
然后选择模块:
搜索Microsoft.SharePoint.dll
并双击反编译:
找到Microsoft.SharePoint.WebControls
下的BaseXmlDataSource
:
然后在如下几个位置打上断点:
根据原作者的提示,我们很容易就想到利用
Microsoft Sharepoint
的api
去上传文件,具体代码我放后面展示。
上传并访问http://sp2019/sites/cvetest/6Svab8Fl.aspx
,触发断点:
看到读取我们上传的恶意xml
文件内容没问题:
我们继续一步步F10
,发现报错无权限:
回过头重新再来调试一遍,发现这里的PermissionSet
好像不太对劲:
正常来说应该会按照作者视频里这样:
展开发现我们的m_Unrestricted
属性为false
:
我决定跟进XmlSecureResolver
看看是什么情况,在如下位置打断点:
进入CreateFromUrl
方法这里:
一步步F11
的过程中我们发现,我们的file://localhostc$/sites/cvetest/6Svab8Fl.xml
这个payload
居然会被认为是Internet
这个SecurityZone
,正常来说应该是MyComputer
才对:
SecurityManager
里面的GetStandardSandbox
中判断只有是MyComputer
的时候才会有无限制的权限:
就这一点困扰了我整整三天,我确实挺郁闷,这复现过程和作者完全一致,为什么会导致PermissionSet
的不同呢?
于是我询问作者,详见推文https://x.com/chudyPB/status/1790437036723249381
:
作者认为可能是因为没有进行Windows
安全更新的缘故,一语道破天机,于是我去更新了一下,利用成功:
切记必须是http://sp2019
而不能是http://192.168.198.142
这种形式,否则通过浏览器或者requests
库会触发失败,只能通过SharePoint Designer
去访问触发,具体的原因可以自行调试观察,这里不再赘述
三、漏洞分析(略)与总结
作者的文章中已经描述的通俗易懂了,我上面也提到了一些调试的东西。
总的来说,这个洞我只能用非常鸡肋来形容,首先你得搞到账号密码或者通过某种手段能上传文件,然后你还得确保对方系统是打了KB103723
这种累计更新的补丁的,就这样你才能成功利用,并且就算可以成功利用,你也无法读取web.config
这种文件,因为里面包含%
亦或是#
这样的特殊字符串,导致按dtd
去解析实体的时候会有如下报错:
但是,咱们可以出于学习目的去进行调试分析研究,以达到触类旁通的效果,形成对这种大型框架的全局观。
如果你喜欢我写的文章,欢迎关注我的公众号,我是W01fh4cker
,我们下篇见。
原文始发于微信公众号(追梦信安):【复现踩坑】浅谈Microsoft Sharepoint鸡肋XXE新洞:CVE-2024-30043
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论