Ottenere il carico utile in Burp intruso in modo dinamico dal sito web

1

Ai fini della mia tesi, ho bisogno di trovare la combinazione nome utente / password su un determinato sito web. Ho provato a farlo usando Hydra ma ho fallito miseramente a causa di un valore nascosto del modulo, che cambia ogni volta che l'utente entra nel sito web (quindi cambia anche mentre l'utente non riesce ad accedere).

Credo che una soluzione molto più semplice sia abbastanza facile da ottenere in Intruder di Burp, ma non riesco a trovarla. Conosco il nome utente e la password, che sono entrambi inseriti in un payload di Simple List. Il problema sta nel terzo payload, che è un token. Sul browser, sembra che stia cambiando come descritto sopra. Per questo motivo, sospetto che Burp debba richiedere dinamicamente il token dal sito Web per ogni coppia di nome utente / password.

È possibile fare? Secondo questo video, dovrebbe essere: link . In effetti, ho pensato che il problema fosse risolto in questo video ma il carico utile del token non cambia. Ho letto anche alcuni documenti di Burp Intruder e non ho trovato una soluzione.

    
posta James Pond 31.08.2016 - 23:54
fonte

2 risposte

2

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.

    
risposta data 01.09.2016 - 07:47
fonte
1

Dovresti essere in grado di utilizzare la funzione Macro per ottenere un effetto simile.

Crea una nuova macro e poi cammina manualmente attraverso la sequenza di login. Seleziona la richiesta che genera il token. Clicca su Configura elemento. Fai clic su aggiungi parametro personalizzato. Da qui, cerca nella risposta il valore del token e mettilo in evidenza. Quindi si desidera impostare il nome come uguale al valore del nome del parametro utilizzato nella richiesta di accesso. Salva la macro.

Quindi si desidera creare una regola di gestione sessione per utilizzare questa macro. Aggiungi un'azione "Verifica sessione valida". Configura questa regola per far corrispondere una condizione nella risposta che indicherebbe che il token non è valido. Quindi, configura questa regola per eseguire una macro se la sessione non è valida e aggiungi la tua macro. Assicurati di aggiornare il valore del token con il valore dalla macro.

Questo è goffo e potrebbe richiedere qualche ritocco, ma dovrebbe funzionare per te. Buona fortuna!

    
risposta data 01.09.2016 - 01:56
fonte

Leggi altre domande sui tag