长亭百川云 - 文章详情

Workflow的代码注入导致SharePoint RCE(CVE-2020-0646)

木星安全实验室

51

2024-07-13

描述

2019年11月,通过Workflow代码注入在SharePoint Online执行远程代码的问题报告给了Microsoft,这个漏洞在在线平台上马上得到了解决。但2020年1月才在.NET Framework修补了主要漏洞。所以,没有2020年1月.NET补丁的SharePoint本地版本仍然会受到影响。

注意,如果IIS支持.XOML扩展名,文件上传攻击也可能滥用这个漏洞。

这个漏洞的影响与下面之前发现的漏洞相同(它们都影响相同的模块),但是它用了不同的技术,且不会绕过已实施的修复程序:

分析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">

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

所以,可以从函数转义,运行代码。注意,在影响InterfaceType属性的同时,其他字符串 类型的属性(如上述示例中的MethodName)也在被验证或转义 。

CodeActivity类的 ExecuteCode 参数也会受到影响, 但它在SharePoint Online版本上没有得到授权,只能在本地版本上使用。它还可能会滥用其他活动。

例如,以下HTTP请求能在SharePoint Online上执行代码:

POST http://[REDACTED].sharepoint.com/_vti_bin/webpartpages.asmx HTTP/1.1

DNS名称已解析:

上述请求也可以利用本地版本。

用了CVE-2020-0646补丁后,Workflow的所有XML元素和属性都会被检查一遍,确保它们仅包含有限数量的允许字符。选择nocode选项后,就不能在默认配置里把任意代码注入到已生成的C#代码中 。

本文作者是Soroush Dalili

木星安全实验室(MxLab),由中国网安·广州三零卫士成立,汇聚国内多名安全专家和反间谍专家组建而成,深耕工控安全、IoT安全、红队评估、反间谍、数据保护、APT分析等高级安全领域,木星安全实验室坚持在反间谍和业务安全的领域进行探索和研究。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2