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)实现代码执行。

漏洞技术细节

漏洞成因

  1. 类型转换器滥用:SharePoint在解析WebParts的XML配置时,未限制属性的可用类型
  2. 不安全反序列化:攻击者可指定类型名称和字符串值,SharePoint会尝试使用类型转换器将字符串转换为指定类型的对象
  3. 关键攻击点:某些类型转换器可被用于任意代码执行

攻击入口点

攻击通过WebPartPages Web服务实现,具体位置:

http://<Site>/_vti_bin/WebPartPages.asmx

关键方法:RenderWebPartForEdit(可通过HTTP请求调用的WebMethod)

漏洞利用链

  1. XML解析流程

    • XML配置传递给ImportWebPartBase()函数
    • property元素由ImportWebPartFile.AddToProperyArrayLists()处理
    • 攻击者控制两个关键字符串:
      • text:来自property元素的文本内容
      • xmlAttributeValue2:来自元素的type属性
  2. 类型转换器选择

    • 使用System.Resources.ResXFileRef类型及其转换器System.Resources.ResXFileRef.Converter
    • 转换器解析攻击者提供的字符串为:
      • 第一个值:.resources资源文件的路径
      • 第二个值:任意.NET Type对象名称
  3. 反序列化执行

    • 实例化指定的Type对象
    • 将流参数传递给构造函数(包含攻击者控制的.resources文件内容)
    • 通过System.Resources.ResourceSetSystem.Resources.ResourceReader触发BinaryFormatter反序列化

漏洞利用步骤

准备工作

  1. 创建恶意.resources文件

    • 使用Visual Studio创建.resx文件
    • 编辑.resx文件,替换data节点为恶意内容
    • 编译项目生成.resources文件(位于/obj文件夹)
  2. 设置攻击环境

    • 配置匿名SMB共享服务器(无需身份验证)
    • 在共享文件夹的"安全性"选项卡中启用"所有人"、"访客"和"匿名登录"选项
    • 将恶意.resources文件放置在共享目录中

攻击流程

  1. 获取有效凭据

    • 需要SharePoint网站的普通用户账号
    • 默认配置允许任何经过身份验证的用户创建自己的网站
  2. 创建攻击者网站

    • 登录后点击"SharePoint" → "+创建站点"
    • 选择"Team Site"类型
    • 记录新站点的BaseURL(如http://sp2019/sites/siteofuser2
  3. 执行攻击

    • 使用专门工具(如SP_soap_RCE_PoC.exe)发送攻击指令
    • 需要提供以下参数:
      • 目标SharePoint网站的BaseUrl
      • 用户名
      • 密码
      • 有效负载文件的远程路径
  4. 验证攻击结果

    • 检查目标服务器上的文件创建等操作
    • 如成功,将在服务器上执行指定命令

漏洞修复

Microsoft通过"更正SharePoint如何检查应用程序包的源标记"修复了此漏洞。建议用户:

  1. 及时安装Microsoft发布的安全更新
  2. 将所有SharePoint漏洞视为"严重"级别处理
  3. 限制用户创建网站的权限(如需)

防御建议

  1. 即时防护

    • 禁用匿名SMB共享访问(修改注册表项HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters中的AllowInsecureGuestAuth值为0)
  2. 长期防护

    • 实施最小权限原则,限制用户创建网站的权限
    • 监控和审核SharePoint服务器的异常活动
    • 使用网络隔离限制SharePoint服务器访问内部资源
  3. 检测措施

    • 监控对/_vti_bin/WebPartPages.asmx的异常请求
    • 检测异常的.resources文件加载行为

总结

CVE-2020-0932是一个严重的SharePoint远程代码执行漏洞,利用类型转换器和反序列化机制实现攻击。攻击者需要普通用户权限,但在默认配置下即可利用。该漏洞再次凸显了反序列化安全问题的重要性,管理员应及时应用补丁并实施适当的防护措施。

CVE-2020-0932:Microsoft SharePoint远程代码执行漏洞分析 漏洞概述 CVE-2020-0932是一个Microsoft SharePoint中的远程代码执行漏洞,允许经过身份验证的用户在SharePoint服务器上执行任意代码。该漏洞源于SharePoint在解析WebParts的XML配置时未对属性类型进行适当限制,导致攻击者可以利用类型转换器(TypeConverter)实现代码执行。 漏洞技术细节 漏洞成因 类型转换器滥用 :SharePoint在解析WebParts的XML配置时,未限制属性的可用类型 不安全反序列化 :攻击者可指定类型名称和字符串值,SharePoint会尝试使用类型转换器将字符串转换为指定类型的对象 关键攻击点 :某些类型转换器可被用于任意代码执行 攻击入口点 攻击通过WebPartPages Web服务实现,具体位置: 关键方法: RenderWebPartForEdit (可通过HTTP请求调用的WebMethod) 漏洞利用链 XML解析流程 : XML配置传递给 ImportWebPartBase() 函数 property 元素由 ImportWebPartFile.AddToProperyArrayLists() 处理 攻击者控制两个关键字符串: text :来自property元素的文本内容 xmlAttributeValue2 :来自元素的type属性 类型转换器选择 : 使用 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) 长期防护 : 实施最小权限原则,限制用户创建网站的权限 监控和审核SharePoint服务器的异常活动 使用网络隔离限制SharePoint服务器访问内部资源 检测措施 : 监控对 /_vti_bin/WebPartPages.asmx 的异常请求 检测异常的.resources文件加载行为 总结 CVE-2020-0932是一个严重的SharePoint远程代码执行漏洞,利用类型转换器和反序列化机制实现攻击。攻击者需要普通用户权限,但在默认配置下即可利用。该漏洞再次凸显了反序列化安全问题的重要性,管理员应及时应用补丁并实施适当的防护措施。