Microsoft SharePoint BDC 服务反序列化代码执行漏洞的分析(CVE-2019-1257)

今年早些时候,研究员Markus Wulftange(@mwulftange)报告了Microsoft SharePoint中的一个远程代码执行(RCE)漏洞,该漏洞最终被修补编号为CVE-2019-0604 。9月,Microsoft修复了Markus报告的其他三个SharePoint RCECVE-2019-1295CVE-2019-1296CVE-2019-1257。该博客更详细地介绍了最后一个CVE,也称为ZDI-19-812。此漏洞会影响所有受支持的SharePoint版本,并获得Microsoft最高的Exploit Index评分。

0x01 漏洞详情

由于自定义BDC模型定义中的任意方法参数类型,Microsoft SharePoint 2016中的业务数据连接(BDC)服务容易受到XmlSerializer数据流的反序列化的攻击。如AlvaroMuñoz和Oleksandr Mirosh在其Black Hat 2017 演讲中所示,对XmlSerializer数据流进行反序列化可以导致任意代码执行。

SharePoint允许使用业务数据连接模型文件格式(MS-BDCMFFS)数据格式来指定自定义BDC模型。该规范的一部分是方法和参数的定义,这是Microsoft提供的示例代码:奇热影视

Microsoft SharePoint BDC 服务反序列化代码执行漏洞的分析(CVE-2019-1257)

定义了一个名为GetCustomer的方法,该方法包装一个名为sp_GetCustomer(请参阅RdbCommandText属性)的存储过程。输入参数(Direction="In")和返回参数(Direction="Return")都使用各自的类型描述进行定义。

在上面显示的示例中,输入参数的原始类型为System.Int32,这是安全的。如果定义了具有type参数的BDC模型,则会出现Microsoft.BusinessData.Runtime.DynamicType问题。这样做是为了允许调用者灵活地为该参数传递许多不同类型的值。结果就导致XmlSerializer调用者提供的任意数据流可以反序列化。

0x02 漏洞利用

已在安装了KB4464594的Microsoft SharePoint Server 2016上测试了此漏洞,在Windows Server 2016更新14393.3025的64位版本上运行。

为了演示利用,需要执行以下步骤:

1:管理员必须定义一个自定义BDC模型,ktv其中包括带有类型为参数的Microsoft.BusinessData.Runtime.DynamicType方法。对于定制的BDC模型,将数据库模型示例用作模板并进行简化:

Microsoft SharePoint BDC 服务反序列化代码执行漏洞的分析(CVE-2019-1257)

2:然后,管理员必须通过SharePoint管理中心|服务器上传BDC模型。应用管理| 管理服务应用程序| 业务数据连接服务。另外,这也可以通过PowerShell完成

Microsoft SharePoint BDC 服务反序列化代码执行漏洞的分析(CVE-2019-1257)

3:然后,攻击者可以调用方法,并在参数中传递payload。

Microsoft SharePoint BDC 服务反序列化代码执行漏洞的分析(CVE-2019-1257)

在SharePoint服务器上,会发现已经生成了两个cmd.exe和一个win32calc.exe,它们作为SharePoint应用程序池的标识运行。

若要查看代码的路径,请将调试器附加到SharePoint应用程序的w3wp.exe。在处设置一个断点System.Web.dll!System.Web.UI.ObjectStateFormatter.Deserialize将显示以下调用堆栈

Microsoft SharePoint BDC 服务反序列化代码执行漏洞的分析(CVE-2019-1257)

0x03 结论

成功利用此漏洞不会获得管理员权限,但是它使攻击者可以在SharePoint应用程序池和SharePoint服务器帐户的上下文中执行其代码。根据Microsoft的说法,xise他们通过更正SharePoint如何检查应用程序包的源标记的方式在9月补丁中发布了此漏洞。

9月发行版还包括一个补丁程序,用于修复Azure DevOps(ADO)和Team Foundation Server(TFS)中的漏洞,该漏洞可能允许攻击者在TFS或ADO服务帐户的上下文中在服务器上执行代码。我们将在不久的将来提供该漏洞的其他详细信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值