-
Notifications
You must be signed in to change notification settings - Fork 341
漏洞利用 CVE 2019 0604 SharePoint GetShell Exploit
Microsoft SharePoint是美国微软(Microsoft)公司的一套企业业务协作平台。该平台用于对业务信息进行整合,并能够共享工作、与他人协同工作、组织项目和工作组、搜索人员和信息。
Microsoft SharePoint 远程代码执行漏洞(CVE-2019-0594、CVE-2019-0604,高危):Microsoft SharePoint软件无法检查应用程序包源标记时触发该漏洞。攻击者可在SharePoint应用程序池和SharePoint服务器中执行任意代码。
ItemPicker Web 控件实际上从来没有在一个 .aspx 页面中使用过。但是看看它基类型的用法,EntityEditorWithPicker,说明在 /_layouts/15/Picker.aspx 应该有一个 Picker.aspx 文件使用了它。
该页面要求使用选择器对话框的类型通过 URL 的 PickerDialogType 参数的形式提供。在这里,可以使用以下两种 ItemPickerDialog 类型中的任何一种:
· Microsoft.SharePoint.WebControls.ItemPickerDialog in Microsoft.SharePoint.dll
· Microsoft.SharePoint.Portal.WebControls.ItemPickerDialog in Microsoft.SharePoint.Portal.dll
利用第一种 PickerDialogType 类型
### 0x004 PoC
当表单提交 ctl00$PlaceHolderDialogBodySection$ctl05$hiddenSpanData 的值以 “__” 为开头时(类似于“_dummy”),
EntityInstanceIdEncoder.DecodeEntityInstanceId(string) 处的断点将显示以下情况:而调用另外一种 ItemPickerDialog 类型时,函数调用栈只是在最上面的两个有所不同。
这表明 ctl00$PlaceHolderDialogBodySection$ctl05$hiddenSpanData 的数据最终出现在了 EntityInstanceIdEncoder.DecodeEntityInstanceId(string) 中。 剩下的只需要拷贝实例 ID 和构造一个 XmlSerializer 的 payload 就可以了。
作者说只要构造一个XML序列化的Payload就可以了,但是Payload提交到哪里呢?
原文中只说了一半,完整POST以及具体参数如下:
URL: /Picker.aspx?PickerDialogType=控件的程序集限定名
参数: ctl00%24PlaceHolderDialogBodySection%24ctl05%24hiddenSpanData=payload
实际上还需访问Picker.aspx附带的其它参数,测试我不附带其它参数时提交表单是失败的。
python cve-2019-0604-exp.py http://k8gege.github.io
若成功返回WebShell地址
UAshell访问报错,大家不要慌,原本设计就是这样子
使用K8飞刀CMD连接,当然你可以通过CMD下载其它的WebShell过去管理
比如菜刀,因为飞刀UA系列的WebShell除了过WAF,均无文件管理功能
使用UA而不使用菜刀一句话,是因为菜刀一句话都是POST,容易被WAF拦截
当然你传过去后发现目标无WAF或无杀软,再传其它Webshell或植入远控都可以
Cscan.ini
[Cscan]
exe=F:\Python279\python.exe
arg=cve-2019-0604-exp.py
Cscan根目录放url.txt,启动Cscan即可批量利用
https://github.com/k8gege/CVE-2019-0604
https://github.com/k8gege/K8tools/raw/master/cve-2019-0604-exp.py