La protezione che stai parlando si chiama anti CSRF token. Questi token sono valori casuali generati dal server e che possono essere utilizzati solo una volta idealmente (come in questo caso).
AFAIK, devi scrivere Burp Extender personalizzato per aggiornare il token ogni volta per fare una richiesta successiva.
Un altro modo semplice per farlo è utilizzare l'intruso di burp in modalità Pitchfork con due elenchi. Questo è spiegato di seguito.
Passaggio 1: (Raccogli i token CSRF)
Devi fare molto (uguale al numero di utenti x numero di password che vuoi testare) delle richieste GET alla pagina di accesso usando wget/curl
e raccogliere i token CSRF in un file. Chiamiamo questo elenco come csrftokens.txt
.
Quindi, nel file csrftokens.txt avrai token validi raccolti sopra come
xxxx-xxxx-xxxxx
yyyy-yyyy-yyyyy
Passaggio 2: (Genera un singolo nome utente + password File)
Prendi il tuo file dei nomi utente ( users.txt
) e il file delle password ( password.txt
). Crea un elenco di tutte le combinazioni possibili nel formato stesso dei parametri di richiesta POST inviati.
sample users.txt
user1
user2
sample password.txt
password1
password2
Diciamo che la stringa dei parametri originali del post del sito era come
token="xxxx-xxxx-xxxx"&user="exampleuser"&password=" examplepass"
Qui, crei un nuovo file con tutte le possibili combinazioni di nome utente, password ( users_pass.txt
) come
user1"&password="password1
user1"&password="password2
user2"&password="password1
user2"&password="password2
Step3: (modifica il Burpsuite per sconfiggere i token anti CSRF)
Ora, nel rutto intruso seleziona la modalità Pitchfork e modifica i parametri del post come sotto
token="§from_csrftokens.txt§"&user="§from_users_pass.txt§"
Qui, hai rimosso il campo della password nella richiesta di burp. In effetti, questo uscirà dal file users_pass.txt
.
Burp continuerà a inviare le richieste nel formato come richiesta post originale come di seguito.
token="xxxx-xxxx-xxxx"&user="user1"&password="password1"
token="yyyy-yyyy-yyyy"&user="user1"&password="password2"
..
..
Questa soluzione richiede la conoscenza di alcuni linguaggi di scripting per l'acquisizione dei token. E per generare user_pass.txt
puoi usare una semplice selezione sul database mysql usando cross join.
Usando la modalità Pitchfork, assicurati di utilizzare il token una volta sola ed evita che le richieste vengano rifiutate a causa del riutilizzo del token.