描述
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分析等高级安全领域,木星安全实验室坚持在反间谍和业务安全的领域进行探索和研究。