Authentication Token Obtain and Replace Extender
Introduzione
Nel mondo del security testing web, l'automazione è fondamentale e Burp Suite è la scelta di riferimento. Tuttavia, per sfruttare appieno la potenza di Burp per la scansione automatica, sono necessari i plugin giusti. È qui che entra in gioco ATOR. Questo plugin open-source per Burp è progettato per rivoluzionare le tue capacità di scansione semplificando la gestione e la sostituzione dei token per vari scenari, tra cui:
- Gestione di Access e Refresh Token
- Sostituzione dei token nei corpi delle richieste XML e JSON
- Sostituzione dei token negli URL e nei Cookie
Tradizionalmente, per eseguire queste attività erano necessarie macro complesse, regole di sessione o extender personalizzati, specialmente quando si ha a che fare con dati JSON o XML. Il nostro plugin semplifica questo processo, offrendo diversi vantaggi chiave:
Vantaggi principali:
- Sostituzione dei token in memoria: elimina le richieste di login duplicate sostituendo i token in modo trasparente in memoria, migliorando l'efficienza della scansione.
- UX intuitiva: estrai facilmente i dati dai messaggi di risposta e sostituiscili nelle richieste utilizzando espressioni regolari. Questa flessibilità è preziosa per gestire scenari diversi che coinvolgono JSON, XML, dati di form e altro.
- Velocità di scansione migliorata: ottieni velocità di scansione più elevate evitando richieste di login non necessarie. Il plugin utilizza un meccanismo di "Richiesta di attivazione" (Trigger Request) per identificare condizioni di errore, come un codice di risposta 401 con un corpo che contiene "Unauthorized request."
L'ispirazione per il plugin proviene dal plugin ExtendedMacro: https://github.com/FrUh/ExtendedMacro
Per iniziare
Per utilizzare questo plugin, segui questi passaggi:
- Installa Java e Maven.
- Clona questo repository.
- Esegui il comando "mvn clean install" nella directory del repository clonato dove si trova pom.xml.
- Recupera il file JAR generato con le dipendenze dalla cartella "target".
Prerequisiti
Prima di utilizzare il plugin, assicurati di:
- Aver configurato l'ambiente Java sulla tua macchina.
- Aver configurato Burp Suite per ascoltare il traffico del proxy.
- Aver configurato l'ambiente Java dalla scheda Extender di BURP.
Per l'utilizzo con l'applicazione di test (Installa questa applicazione di test (Tiredful application) da https://github.com/payatu/Tiredful-API)
Passaggi
- Identifica la richiesta che produce l'errore.
- Identifica il Pattern di Errore (dettagli nella sezione sottostante).
- Ottieni i dati dalla risposta utilizzando regex (vedi valori regex di esempio).
- Sostituisci questi dati nella richiesta (usa la stessa regex del passaggio 3 insieme al nome della variabile).
Pattern di Errore:
In totale ci sono 4 modi diversi per specificare la condizione di errore.
- Codice di stato (Status Code): 401, 400
- Errore nel corpo (Error in Body): fornisci un testo qualsiasi dal contenuto del corpo (Esempio: Access token expired)
- Errore nell'intestazione (Error in Header): fornisci un testo qualsiasi dall'intestazione (Esempio: Unauthorized)
- Forma libera (Free Form): usa questa opzione per fornire più condizioni (st=400 && bd=Access token expired || hd=Unauthorized)
Scomposizione in test end-to-end
- Trovare la richiesta non valida:
- http://HOST:PORT/api/v1/exams/MQ==/ con un token Bearer non valido.
- Identificare il Pattern di Errore:
- La richiesta di cui sopra restituirà 401; qui la condizione di errore è Status Code = 401.
- Abbinare la regex con i dati della richiesta:
- Authorization: Bearer \w* - questa regex corrisponderà al token di accesso passato.
- Sostituzione - Come sostituire:
- Sostituisci il testo corrispondente (regex del passaggio 3) con il valore estratto (la configurazione di estrazione è discussa di seguito, supponendo che il nome della variabile sia "token").
- Authorization: Bearer token - il token estratto verrà sostituito.
Utilizzo con l'applicazione di test
Idea: registra la richiesta dell'applicazione Tiredful in BURP, configura l'extender ATOR, verifica se il token viene sostituito da ATOR.
- Apri l'applicazione di test nel browser che hai configurato con BURP.
- Genera un token da http://HOST:PORT/handle-user-token/
- Invia la richiesta http://HOST:PORT/api/v1/exams/MQ==/ passando il token Authorization Bearer (ottenuto dal passaggio precedente).
- Aggiungi il file JAR di ATOR come extender in BURP.
- Fai clic destro sulla richiesta (/handle-user-token) nella cronologia del proxy e inviala a "Authentication Token Obtain and Replace Extender".
- Aggiungi una nuova voce nella configurazione di estrazione selezionando il valore "access_token" e assegna il nome "token" (può essere qualsiasi nome).
Nota: per questa applicazione, una singola richiesta è sufficiente per generare un token. Il token può anche essere generato dopo più richieste.
- CONDIZIONE DI ATTIVAZIONE (TRIGGER CONDITION):
- I passaggi della macro verranno eseguiti se la condizione è soddisfatta.
- Dopo l'esecuzione dei passaggi, sostituisci la richiesta in arrivo prendendo i valori da "Pattern" e "Area di sostituzione" (Replacement Area) se specificato.
- Per il nostro test:
- La condizione di errore è 401 (Status Code).
- Il pattern è "Authorization: Bearer \w*" (specifica il pattern regex con cui vuoi sostituire i valori di estrazione).
- L'area di sostituzione è "Authentication: Bearer <NOME che hai dato al PASSO 4>"
- Fai clic sul pulsante "Add".
- Per questo esempio, una sola sostituzione è sufficiente per rendere valida la richiesta in arrivo, ma puoi aggiungere più sostituzioni per una singola condizione.
- Invia la richiesta non valida da Repeater e controlla i flussi req/res in FLOW/Logger++.
- Un token Bearer non valido (http://HOST:PORT/api/v1/exams/MQ==/) da Repeater restituisce una risposta 401.
- L'extender corrisponderà a questa condizione e inizierà a eseguire i passaggi registrati, estraendo l'"access_token".
- Sostituisci il token di accesso (dal passaggio ii) nella risposta effettiva (da Repeater) e rende valida questa richiesta non valida.
- Nella console di Repeater, vedrai una risposta 200 OK.
- Ripeti il passaggio 7 e controlla il flusso.
- Questa volta l'extender non richiamerà i passaggi perché il token esistente è valido e quindi lo utilizza.
Costruito con
- SWING - Utilizzato per aggiungere il pannello
Contribuisci
Leggi CONTRIBUTING.md per i dettagli sul nostro codice di condotta e sul processo per inviare richieste pull.
Versioni
v2.3.0
Autori
Synopsys
Licenza
Questo software è rilasciato da Synopsys con licenza MIT.
Riconoscimenti
- https://github.com/FrUh/ExtendedMacro
ExtendedMacro è stato un ottimo punto di partenza: abbiamo modificato l'interfaccia utente per gestire scenari più complessi. Abbiamo anche corretto bug e migliorato la velocità sostituendo i token in memoria.