CVE-2020-0932:使用TYPECONVERTERS在MICROSOFT SHAREPOINT上执行远程代码
字数 1952 2025-08-25 22:58:40
CVE-2020-0932:Microsoft SharePoint远程代码执行漏洞分析
漏洞概述
CVE-2020-0932是一个Microsoft SharePoint中的远程代码执行漏洞,允许经过身份验证的用户在SharePoint服务器上执行任意代码。该漏洞源于SharePoint在解析WebParts的XML配置时未对属性类型进行适当限制,导致攻击者可以利用类型转换器(TypeConverter)实现代码执行。
漏洞技术细节
漏洞成因
- 类型转换器滥用:SharePoint在解析WebParts的XML配置时,未限制属性的可用类型
- 不安全反序列化:攻击者可指定类型名称和字符串值,SharePoint会尝试使用类型转换器将字符串转换为指定类型的对象
- 关键攻击点:某些类型转换器可被用于任意代码执行
攻击入口点
攻击通过WebPartPages Web服务实现,具体位置:
http://<Site>/_vti_bin/WebPartPages.asmx
关键方法:RenderWebPartForEdit(可通过HTTP请求调用的WebMethod)
漏洞利用链
-
XML解析流程:
- XML配置传递给
ImportWebPartBase()函数 property元素由ImportWebPartFile.AddToProperyArrayLists()处理- 攻击者控制两个关键字符串:
text:来自property元素的文本内容xmlAttributeValue2:来自元素的type属性
- XML配置传递给
-
类型转换器选择:
- 使用
System.Resources.ResXFileRef类型及其转换器System.Resources.ResXFileRef.Converter - 转换器解析攻击者提供的字符串为:
- 第一个值:.resources资源文件的路径
- 第二个值:任意.NET Type对象名称
- 使用
-
反序列化执行:
- 实例化指定的Type对象
- 将流参数传递给构造函数(包含攻击者控制的.resources文件内容)
- 通过
System.Resources.ResourceSet和System.Resources.ResourceReader触发BinaryFormatter反序列化
漏洞利用步骤
准备工作
-
创建恶意.resources文件:
- 使用Visual Studio创建.resx文件
- 编辑.resx文件,替换data节点为恶意内容
- 编译项目生成.resources文件(位于/obj文件夹)
-
设置攻击环境:
- 配置匿名SMB共享服务器(无需身份验证)
- 在共享文件夹的"安全性"选项卡中启用"所有人"、"访客"和"匿名登录"选项
- 将恶意.resources文件放置在共享目录中
攻击流程
-
获取有效凭据:
- 需要SharePoint网站的普通用户账号
- 默认配置允许任何经过身份验证的用户创建自己的网站
-
创建攻击者网站:
- 登录后点击"SharePoint" → "+创建站点"
- 选择"Team Site"类型
- 记录新站点的BaseURL(如
http://sp2019/sites/siteofuser2)
-
执行攻击:
- 使用专门工具(如SP_soap_RCE_PoC.exe)发送攻击指令
- 需要提供以下参数:
- 目标SharePoint网站的BaseUrl
- 用户名
- 密码
- 域
- 有效负载文件的远程路径
-
验证攻击结果:
- 检查目标服务器上的文件创建等操作
- 如成功,将在服务器上执行指定命令
漏洞修复
Microsoft通过"更正SharePoint如何检查应用程序包的源标记"修复了此漏洞。建议用户:
- 及时安装Microsoft发布的安全更新
- 将所有SharePoint漏洞视为"严重"级别处理
- 限制用户创建网站的权限(如需)
防御建议
-
即时防护:
- 禁用匿名SMB共享访问(修改注册表项
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters中的AllowInsecureGuestAuth值为0)
- 禁用匿名SMB共享访问(修改注册表项
-
长期防护:
- 实施最小权限原则,限制用户创建网站的权限
- 监控和审核SharePoint服务器的异常活动
- 使用网络隔离限制SharePoint服务器访问内部资源
-
检测措施:
- 监控对
/_vti_bin/WebPartPages.asmx的异常请求 - 检测异常的.resources文件加载行为
- 监控对
总结
CVE-2020-0932是一个严重的SharePoint远程代码执行漏洞,利用类型转换器和反序列化机制实现攻击。攻击者需要普通用户权限,但在默认配置下即可利用。该漏洞再次凸显了反序列化安全问题的重要性,管理员应及时应用补丁并实施适当的防护措施。