
SignSaboteur è un'estensione di Burp Suite per modificare, firmare e verificare vari token web firmati
SignSaboteur è un'estensione di Burp Suite per modificare, firmare, verificare e attaccare token firmati. Supporta diversi tipi di token: Django TimestampSigner, ItsDangerous Signer, Express cookie-session middleware, OAuth2 Proxy, Tornado’s signed cookies, Ruby Rails Signed cookies, Ruby Rails Encrypted cookies, Nimbus JOSE + JWT e stringhe firmate sconosciute.
Puoi trovare maggiori informazioni sull'estensione nella pagina del blog di Portswigger Research - Introducing SignSaboteur: forge signed web tokens with ease.
Fornisce rilevamento automatico e modifica in linea dei token nelle richieste/risposte HTTP e nei messaggi WebSocket, firma dei token e automazione di attacchi di forza bruta contro implementazioni di token firmati.
È stato ispirato dall'estensione JWT Token di Fraser Winterborn e Dolph Flynn. Il codice sorgente originale può essere trovato here e here.
./gradlew jarsign-saboteur-1.0.6.jar nella directory build/libsExtensions, sottoscheda Installed, cliccando Add e caricando
il file JAR
La Vista Wordlist permette di importare file di elenchi di segreti e salt. L'estensione ha propri elenchi di dizionari predefiniti. La maggior parte
dei segreti è presa da jwt-secrets. Come
opzione, può essere usato Flask-Unsign-Wordlist. L'estensione supporta il formato di stringhe JSON
per caratteri speciali; per usarlo, racchiudi la stringa segreta con ".
La Vista Editor supporta diversi token firmati: Django, Dangerous, Flask, Express, OAuth2 e Tornado. Permette
la modifica dei token firmati nella vista Richiesta/Risposta HTTP di Burp Suite negli strumenti Proxy, History e Repeater.
La scheda Dangerous può essere usata sia per token Flask che Django, che vengono selezionati a seconda che venga
rilevato un token Dangerous o Django.
La scheda Unknown può essere usata per forzare brute force su stringhe firmate sconosciute. La modalità di indovinello funziona solo con attacchi di forza bruta Balanced e Deep. Supporta diverse tecniche di derivazione del messaggio, tra cui:
Viene fornito un editor di testo JSON per modificare ogni componente che contiene contenuto JSON:
Viene fornito un editor di timestamp per modificare ogni componente che lo contiene:
Un editor esadecimale è fornito per tutti i token firmati, eccetto le firme Express. NOTA La scheda Express non supporta ancora l'aggiornamento automatico della firma. Per favore copiala manualmente nel cookie della firma corrispondente.
Sign presenta una finestra di dialogo di firma che può essere usata per aggiornare la firma firmando il token usando una
chiave dalla Vista Chiavi che ha capacità di firma.
Brute force tenterà di trovare la chiave segreta usata per la generazione della firma. Se viene trovata una chiave segreta,
verrà presentata una finestra di dialogo.
L'opzione Brute force implementa tre tipi di attacchi contro le firme dei token firmati:
L'opzione Attack implementa otto noti attacchi di autorizzazione contro token firmati:
Questi sono descritti più in dettaglio di seguito.
Tutti questi attacchi possono essere usati insieme. Tieni presente che l'estensione non supporta la modifica del payload del token nella modalità Attack, quindi il tuo payload verrà sostituito con uno nuovo.
Il formato del token ID OpenID Connect è solitamente usato dalle librerie di firma per memorizzare informazioni sull'utente autenticato.
L'estensione genererà un placeholder per il token ID dell'utente admin.
Stesso attacco di User claims ma lo inserirà nell'attributo JSON user.
Un altro modo comune per memorizzare i dettagli dell'utente sono gli attributi JSON username e password.
L'estensione genererà un placeholder per l'utente admin.
Le informazioni di sessione dell'utente autenticato Flask, se memorizzate lato client, dovrebbero includere gli attributi JSON
id, _id, user_id o _user_id. L'estensione genererà una sessione per il primo utente, di solito admin.
Il framework Express utilizza l'attributo JSON passport per memorizzare i dettagli dell'utente. L'estensione genererà
un placeholder per l'utente admin.
Alcuni framework possono usare il wrapper account per memorizzare informazioni sull'utente autenticato. Per lo sfruttamento,
potrebbe essere necessario usare anche Authenticated claims.
Gli Authenticated claims implementano 12 noti flag di autorizzazione.
L'opzione User access_token genera un token ID JWT OpenID Connect firmato con la stessa chiave e lo stesso algoritmo di hashing
senza alcuna derivazione della chiave.