PoC, IOCs y lógica de detección para la cadena de deserialización BinaryFormatter de WS-Federation de SharePoint /_trust. Reconstrucción de laboratorio que cubre RCE no autenticado, robo de claves de máquina en proceso y los artefactos que cada variante deja atrás. SharePoint 2016, 2019 y Subscription Edition. CVE-2026-50522, CVE-2026-45659, CVE-2026-56164, CVE-2026-58644.
/_trust WS-Federation Deserialization: PoC y notas de detecciónInforme en vivo (GitHub Pages): https://sp-poc.wismansec.com/ (renderizado HTML de este documento).
Afecta: SharePoint Server 2016, 2019 y Subscription Edition.
Reconstrucción de una intrusión en SharePoint Server (Subscription Edition) en un laboratorio aislado, realizada para (a) comprender la capacidad completa del atacante, (b) determinar qué debe buscar un defensor, incluida la persistencia sigilosa, y (c) compartir un PoC que ayude a otros investigadores.
Solo investigación autorizada. Todo lo aquí descrito se realizó en hardware y cuentas de laboratorio aislados y de propiedad personal, contra una compilación dejada deliberadamente sin parchear para la prueba. El problema subyacente está corregido por el proveedor; aplica las actualizaciones actuales. No ejecutes esto contra sistemas que no sean tuyos y para los que no tengas autorización explícita de prueba. Los valores de clave de máquina, nombres de host/IP internos y dominios de callback están redactados en el texto y en los artefactos de ejemplo. Las capturas de pantalla del SIEM no están modificadas y llevan los nombres reales del laboratorio; consulta la nota en §4.
SecurityContextToken en /_trustPOST /_trust/default.aspx no autenticada (inicio de sesión WS-Federation) que lleva un SecurityContextToken malicioso desencadena la deserialización BinaryFormatter en el proceso de trabajo de SharePoint (w3wp.exe), lo que produce ejecución remota de código como la identidad del grupo de aplicaciones web./_trust lo detecta y bloquea; consulte §5). Esas claves permiten a un atacante forjar tokens __VIEWSTATE/de autenticación que sobreviven al parcheo./_trust, que es el único artefacto presente en todas las variantes.SharePoint expone un endpoint de inicio de sesión pasivo WS-Federation en /_trust/default.aspx. Una respuesta de inicio de sesión manipulada (wa=wsignin1.0 + wresult=<RequestSecurityTokenResponse>) incrusta un SecurityContextToken cuyo elemento <Cookie> es una secuencia BinaryFormatter comprimida con DEFLATE y codificada en base64. En el lado del servidor, esa cookie se descomprime y se deserializa sin restricción de tipos, por lo que una cadena de gadgets (a través de ysoserial.net) ejecuta código controlado por el atacante dentro de w3wp.exe.
Estructura de la solicitud (no autenticada):
POST /_trust/default.aspx HTTP/1.1
Content-Type: application/x-www-form-urlencoded
wa=wsignin1.0&wctx=<url>&wresult=<RequestSecurityTokenResponse>...
<SecurityContextToken><Cookie>BASE64(DEFLATE(BinaryFormatter payload))</Cookie>...
| Cadena | Gadget | Efecto | Canal de salida |
|---|---|---|---|
| RCE OOB | TypeConfuseDelegate → -EncodedCommand PowerShell | ejecución de código como identidad del grupo de aplicaciones | fuera de banda (baliza HTTP/DNS) |
| Revelación de claves de máquina | ActivitySurrogateDisableTypeCheck → ActivitySurrogateSelectorFromFile (compila KeyDump.cs en proceso) | vuelca ValidationKey/DecryptionKey | en la respuesta HTTP |
Scripts (saneados) en scripts/: un RCE OOB parametrizado y el volcado de claves en dos etapas. La entrega del payload usa PowerShell -EncodedCommand para que los payloads de múltiples sentencias sobrevivan intactos a las capas cmd.exe/transporte (sin roturas de comillas por ;/&&).
Una granja única de SharePoint SE (compilación fijada antes del parche), identidad de grupo de aplicaciones LAB\sp_pool, PowerShell 5.1, Microsoft Defender activado con protección en la nube. La telemetría (registros de eventos de Windows, registros de SharePoint, Defender for Endpoint) se envió a nano, un SIEM ligero de código abierto; el host atacante ejecutó ysoserial.net; un cliente interactsh proporcionó el listener OOB. Las direcciones y dominios están redactados en el texto; consulta la nota de capturas en §4.
Cada fila es una detonación real; los artefactos se extrajeron del SIEM + listener OOB por ejecución.
Las capturas de pantalla no están modificadas. Llevan los nombres reales de host y NetBIOS del laboratorio, que son toscos y difieren de los saneados
SHAREPOINT01/LABusados en todo el texto. Mismas ejecuciones, mismos eventos, nada montado. Equivalentes seguros para el trabajo enartifacts/.
| Invocación | Árbol de procesos (como LAB\sp_pool, Alto) | Defender | Baliza OOB | Artefactos principales |
|---|---|---|---|---|
| RCE OOB, predeterminado | w3wp.exe → cmd.exe → powershell.exe → conhost.exe | Behavior:Win32/WebshellLauncher.A (EID 1116 detección / 1117 eliminación) | se recibió (carrera) | árbol 4688; Defender 1116/1117; /_trust POST |
RCE OOB, -RawCmd | w3wp.exe → powershell.exe → conhost.exe (sin cmd) | ninguna | se recibió (DNS+HTTP) | árbol 4688; /_trust POST; baliza |
RCE OOB, -DropFile | w3wp.exe → powershell.exe | ninguna | se recibió | escritura de archivo en …\TEMPLATE\LAYOUTS\ (no en el registro auditado de acceso a objetos) |
RCE OOB, -Diag | w3wp.exe → powershell.exe → whoami.exe | ninguna | se recibió | exfiltración de divulgación de entorno: {host, whoami, PSver, LanguageMode} |
| Volcado de claves de máquina | (ninguno, en proceso) | ninguna | (ninguna) | solo el /_trust POST y la respuesta anómala con las claves |
Estos resultados corresponden a la configuración AMSI predeterminada (modo Equilibrado, /_trust sin escanear). Con el escaneo del cuerpo de la solicitud AMSI de /_trust habilitado (modo Completo o dirigido), cada fila se bloquea en la capa de solicitud: HTTP 400, Exploit:Script/SpCookieExec.A, antes de la ejecución (consulte §5).

Las cuatro detonaciones documentadas, de 15:01 a 15:18 UTC, cada hijo de w3wp.exe ejecutándose como identidad del grupo de aplicaciones. Tres de las cuatro son powershell.exe generado directamente. Solo la ejecución de las 15:03:34 pasa por cmd.exe, y solo esa fue detectada. Si amplías la ventana más allá de esta, las iteraciones de desarrollo anteriores de la misma mañana entran en el conjunto de resultados, por lo que la afirmación se limita a estas cuatro ejecuciones.

Invocación predeterminada: w3wp.exe → cmd.exe → powershell.exe, con conhost.exe al lado. Esta es la forma en la que se basa Behavior:Win32/WebshellLauncher.A.