
Il Prime Cross Site Request Forgery (CSRF) Toolkit di Audit e Sfruttamento.
XSRFProbe è un toolkit avanzato per l'audit e lo sfruttamento di Cross Site Request Forgery (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 sul wiki.
Wiki di XSRFProbe • Per Iniziare • Utilizzo Generale • Utilizzo Avanzato • Interni di XSRFProbe • Galleria
Origin: null) oltre a bypass tramite method-override e Content-Type.--max-urls, --max-depth e --crawl-timeout).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.
I controlli
S*richiedono l'integrazione opzionale con browser senza interfaccia (--browser). I controlliT*/M*/R*/O*sono controlli a livello HTTP regolati dal motore di confronto/benchmark delle risposte.
Vediamo alcuni scenari reali di XSRFProbe in azione:
Per informazioni complete sull'utilizzo, consulta il wiki — Utilizzo Generale e Utilizzo Avanzato.
XSRFProbe può essere facilmente installato con un singolo comando:
pip install xsrfprobe
pip install .
xsrfprobe --help
--browser, --auto-validate-poc) richiedono inoltre che geckodriver sia disponibile nel tuo PATH (o indicato tramite --geckodriver-path).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).XSRFProbe è attualmente alla v3.0.0 e il lavoro è concesso in licenza secondo la GNU General Public License (GPLv3).
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!
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.
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 utili, idee e segnalazioni sono benvenute. Se desideri vedere come viene sviluppato XSRFProbe, consulta la Bacheca di Sviluppo.
Realizzato con ♡ da @0xInfection
| 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 |