
Il Prime Cross Site Request Forgery (CSRF) Toolkit di Audit e Sfruttamento.
<h1 align="center">
<br>
<a href="https://github.com/0xinfection/xsrfprobe"><img src="https://github.com/user-attachments/assets/c8e9ee87-f60b-4ab3-b3ae-4a79808adc11" alt="Logo XSRFProbe" width="25%" /></a>
<br>
<br>
XSRFProbe
</h1>
<h4 align="center">Il Toolkit Primario per Audit e Sfruttamento di Cross Site Request Forgery.</h4>
<p align="center">
<a href="https://docs.python.org/3/download.html">
<img src="https://img.shields.io/badge/Python-3.11+-green.svg">
</a>
<a href="https://github.com/0xinfection/XSRFProbe/releases">
<img src="https://img.shields.io/badge/Versione-v3.0.0%20(stabile)-blue.svg">
</a>
<a href="https://github.com/0xinfection/XSRFProbe/blob/master/LICENSE">
<img src="https://img.shields.io/badge/Licenza-GPLv3-orange.svg">
</a>
</p>
## Informazioni
__XSRFProbe__ è un toolkit avanzato per l'audit e lo sfruttamento di [Cross Site Request Forgery](https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)) (CSRF/XSRF). Dotato di un potente motore di crawling e di numerosi controlli sistematici, è in grado di rilevare la maggior parte dei casi di vulnerabilità CSRF, i relativi bypass e di generare proof of concept sfruttabili per ogni vulnerabilità trovata. Per maggiori informazioni su come funziona XSRFProbe, consulta [XSRFProbe Internals](https://github.com/0xInfection/XSRFProbe/wiki#xsrfprobe-internals) sul [wiki](https://github.com/0xInfection/XSRFProbe/wiki/).
<img src="https://github.com/user-attachments/assets/11a4d30a-bcf1-4d4e-9ec4-5a4e440f8842" alt="immagine-banner">
<br><br>
<p align="center">
<a href="https://github.com/0xinfection/xsrfprobe/wiki">Wiki di XSRFProbe</a> •
<a href="https://github.com/0xinfection/xsrfprobe/wiki/Getting-Started">Per Iniziare</a> •
<a href="https://github.com/0xinfection/xsrfprobe/wiki/General-Usage">Utilizzo Generale</a> •
<a href="https://github.com/0xinfection/xsrfprobe/wiki/Advanced-Usage">Utilizzo Avanzato</a> •
<a href="https://github.com/0xinfection/xsrfprobe/wiki/XSRFProbe-Internals">Interni di XSRFProbe</a> •
<a href="https://github.com/0xinfection/xsrfprobe#gallery">Galleria</a>
</p>
## Alcune Caratteristiche
- [x] Esegue una batteria completa di [controlli sistematici](https://github.com/0xInfection/XSRFProbe/wiki/XSRFProbe-Internals#types-of-checks) — basati su un motore di confronto/benchmark delle risposte — prima di dichiarare un endpoint vulnerabile.
- [x] Rileva e manomette attivamente molte implementazioni di token Anti-CSRF: cambio del metodo di richiesta, rimozione del token, valori vuoti/duplicati, token non vincolati alla sessione, cookie double-submit e token in intestazione personalizzata.
- [x] Sonda la validazione Referer e Origin con bypass reali (rimozione dell'intestazione, trucchi regex/sottodominio, `Origin: null`) oltre a bypass tramite method-override e Content-Type.
- [x] Analizza le protezioni dei cookie SameSite, con enumerazione opzionale dei sottodomini (tramite crt.sh) per test di bypass tramite dominio fratello.
- [x] Funziona con un potente crawler dotato di crawling deterministico e limitato, con scansione configurabile (tramite `--max-urls`, `--max-depth` e `--crawl-timeout`).
- [x] Integrazione opzionale con Firefox senza interfaccia (Selenium) per test dipendenti dal browser e validazione automatica dei PoC generati.
- [x] [Rilevamento accurato della forza dei token](https://github.com/0xInfection/XSRFProbe/wiki/XSRFProbe-Internals#token-randomness-calculation) e [Analisi](https://github.com/0xInfection/XSRFProbe/wiki/XSRFProbe-Internals#post-scan-token-analysis) tramite controlli di entropia e codifica.
- [x] Può generare sia proof of concept CSRF normali che sfruttabili in modo dannoso.
- [x] Supporto nativo per valori personalizzati di cookie, intestazioni generiche e un report JSON — ogni risultato include un livello di gravità e una precondizione di sfruttabilità.
- [x] L'utente ha il [controllo di tutto](https://github.com/0xInfection/XSRFProbe/wiki/Advanced-Usage#xsrfprobe-configuration-variables) ciò che lo scanner fa.
- [x] Ambiente interattivo intuitivo con supporto completo verbose e registrazione dettagliata di errori, vulnerabilità e token.
## Test di Vulnerabilità Eseguiti:
Ogni controllo eseguito da XSRFProbe ha un identificatore univoco. L'ID viene mostrato nell'output della console (ad es. `[T6] VULNERABILE: ...`) e memorizzato come campo `test_id` di ogni risultato nel report JSON (insieme alla sua `severity` e, se pertinente, a una nota `exploitability` sotto `details`), in modo che ogni risultato corrisponda al test esatto che lo ha prodotto.
| ID | Categoria | Controllo |
|----|-----------|-----------|
| `D1` | Presenza token | Nessun token anti-CSRF presente (falsificazione generica di richieste) |
| `D2` | Presenza token | Il modulo di login è privo di token CSRF (login CSRF) |
| `T2` | Manomissione token | Validazione legata al metodo di richiesta (scambio GET ↔ POST) |
| `T3` | Manomissione token | Il token può essere omesso completamente |
| `T4` | Manomissione token | Token non legato alla sessione utente (replay cross-sessione) |
| `T5` | Manomissione token | Token legato a un cookie non di sessione (es. `csrfKey`) |
| `T6` | Manomissione token | Cookie double-submit ingenuo (cookie == corpo, nessun legame) |
| `T7` | Manomissione token | Valore del token vuoto accettato |
| `T8` | Manomissione token | Token in intestazione personalizzata può essere omesso o falsificato |
| `M1` | Metodo / Content-Type | Override del metodo HTTP tramite parametro `_method` |
| `M2` | Metodo / Content-Type | Override del metodo HTTP tramite intestazione `X-HTTP-Method-Override` |
| `M4` | Metodo / Content-Type | Bypass della validazione tramite `Content-Type` alternativo |
| `R0` | Referer | Intestazione Referer non validata nell'invio del modulo |
| `R1` | Referer | Bypass della validazione Referer omettendo l'intestazione |
| `R2a` | Referer | Bypass regex Referer — target come sottodominio dell'attaccante |
| `R2b` | Referer | Bypass regex Referer — target nella stringa di query |
| `R2c` | Referer | Bypass regex Referer — target nel percorso |
| `O1` | Origin | Bypass della validazione Origin con `Origin: null` |
| `O2` | Origin | Bypass della validazione Origin con un trucco di sottodominio |
| `O3` | Origin | Bypass della validazione Origin omettendo l'intestazione |
| `S2` | SameSite (browser) | Bypass di `SameSite=Strict` tramite gadget di reindirizzamento lato client |
| `S3` | SameSite (browser) | Bypass di `SameSite=Strict` tramite XSS su un sottodominio fratello |
| `S4` | SameSite (browser) | Bypass di `SameSite=Lax` tramite flusso cookie-refresh / OAuth |
| `C1` | Postura cookie | Analisi dell'attributo `SameSite` dei cookie (`None`/`Lax`/`Strict`) |
| `C2` | Postura cookie | Nessun attributo `SameSite` impostato sui cookie |
| `E1` | Forza token | Il token utilizza una codifica hash debole/strutturata |
| `A1` | Forza token | Analisi di prevedibilità/forgiabilità del token post-scansione |
> I controlli `S*` richiedono l'integrazione opzionale con browser senza interfaccia (`--browser`). I controlli `T*`/`M*`/`R*`/`O*` sono controlli a livello HTTP regolati dal motore di confronto/benchmark delle risposte.
## Galleria
Vediamo alcuni scenari reali di XSRFProbe in azione:
<img src="https://github.com/user-attachments/assets/0fc41fb9-d2c3-400f-8b8f-f4f0093457e1" width=50% /><img src="https://github.com/user-attachments/assets/e2beffb1-5cae-4cb6-9740-2a49f6e15bf8" width=50% />
<img src="https://github.com/user-attachments/assets/47d48c78-bb9a-4eeb-b1ea-ab9ba9ab694c" width=100% />
<img src="https://github.com/user-attachments/assets/e23acca5-f66b-4349-84b1-09cff64e1320" width=50% /><img src="https://github.com/user-attachments/assets/1fd7fe7e-b3de-41e9-aa9f-24d0f7fb151e" width=50% />
## Installazione e Utilizzo
> Per informazioni complete sull'utilizzo, consulta il wiki — [Utilizzo Generale](https://github.com/0xinfection/xsrfprobe/wiki/general-usage) e [Utilizzo Avanzato](https://github.com/0xinfection/xsrfprobe/wiki/advanced-usage).
### Installazione tramite Pypi:
XSRFProbe può essere facilmente installato con un singolo comando:
```
pip install xsrfprobe
```
### Installazione manuale:
- Per le basi, il primo passo è installare lo strumento:
```
pip install .
```
- Ora lo strumento può essere avviato con:
```
xsrfprobe --help
```
- I test dipendenti dal browser (`--browser`, `--auto-validate-poc`) richiedono inoltre che [geckodriver](https://github.com/mozilla/geckodriver/releases) sia disponibile nel tuo `PATH` (o indicato tramite `--geckodriver-path`).
- Dopo aver testato XSRFProbe su un sito, viene creata una cartella di output nella tua directory di lavoro corrente denominata `xsrfprobe-output`. All'interno di questa cartella puoi visualizzare i log dettagliati e le informazioni raccolte durante le scansioni (passa `--json` per un report leggibile da macchina).
## Versione e Licenza
XSRFProbe è attualmente alla `v3.0.0` e il lavoro è concesso in licenza secondo la [GNU General Public License (GPLv3)](https://www.gnu.org/licenses/gpl-3.0.en.html).
### Avvertenze
Non utilizzare questo strumento su un sito live!
Questo perché lo strumento è progettato per eseguire automaticamente tutti i tipi di invio di moduli, che potrebbero sabotare il sito. A volte potresti danneggiare il database e molto probabilmente eseguire un DoS sul sito.
Testa su una configurazione/sito di prova usa e getta!
### Dichiarazione di non responsabilità
L'utilizzo di XSRFProbe per testare siti web senza previo accordo reciproco può essere considerato un'attività illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. L'autore non si assume alcuna responsabilità e non è responsabile per qualsiasi uso improprio o danno causato da questo programma.
## Parole dell'Autore
Questo progetto si basa __interamente sulla mia ricerca e sulla mia esperienza con le applicazioni web__ riguardanti gli attacchi di Cross-Site Request Forgery. Puoi provare a esaminare il codice sorgente per capire come è stato costruito questo toolkit. [Pull request](https://github.com/0xInfection/XSRFProbe/wiki/Contributing) utili, [idee e segnalazioni](https://github.com/0xInfection/XSRFProbe/wiki/Reporting-Bugs#before-submitting) sono benvenute. Se desideri vedere come viene sviluppato XSRFProbe, consulta la [Bacheca di Sviluppo](https://github.com/0xInfection/XSRFProbe/projects/1).
> Realizzato con ♡ da [@0xInfection](https://x.com/0xInfection)