
Response Overview Extension per BurpSuite - Trova risposte esotiche raggruppando i corpi delle risposte
Estensione Response Overview per BurpSuite
Autore: Tobias "floyd" Ospelt, @floyd_ch, http://www.floyd.ch
Pentagrid AG, https://www.pentagrid.ch
Questa estensione raggruppa tutti i corpi delle risposte per similarità e mostra un riepilogo, una richiesta/risposta per gruppo. L'estensione permette a un tester di ottenere una panoramica delle risposte del sito web testato da tutti gli strumenti (scanner, proxy, ecc.). Fornisce un ulteriore "metodo di rilevamento semi-automatico" (rispetto ai soliti metodi di rilevamento basati sulla risposta, sul tempo, sull'interazione, ecc.). Ci sono varie ottimizzazioni, principalmente per motivi di prestazioni. La funzionalità "remove parameters" rimuove i parametri di richiesta riflessi dalla risposta prima del confronto.
Finora:
L'utilizzo è molto semplice:
Questa estensione analizza le risposte HTTP se:
Quando i vincoli di filtro di cui sopra sono soddisfatti, i corpi delle risposte in arrivo (da tutti gli strumenti di Burp!) vengono confrontati con tutti i gruppi che abbiamo già creato. Un gruppo è definito dal suo primissimo membro, che teniamo in memoria. Se la risposta che stiamo elaborando è simile al 95% a quel primo membro, appartiene a quel gruppo e viene incrementato solo il contatore "Group Size". Ciò significa anche che non memorizzeremo quella risposta. Se la risposta non è simile al 95% a nessun gruppo, forma un nuovo gruppo ed è il suo primo membro.
La prima versione di una tale response overview che ti permette di trovare anomalie l'ho proposta nel 2010 al progetto w3af (vedi anche una discussione qui: https://github.com/andresriancho/w3af/issues/17345) ed era scritta in Python. Non è mai arrivata nel mainline di w3af, non ricordo perché. All'epoca ho imparato molto sul difflib di Python e ho ottimizzato le prestazioni per il caso d'uso. Ho scritto un'estensione simile in Python per Burp nel 2019 e ho imparato di nuovo molto sul difflib di Python quando lavoravo per modzero AG https://github.com/modzero/burp-ResponseClusterer. Tuttavia, a un certo punto mi sono reso conto che l'estensione poteva mangiare parte delle prestazioni di Burp, cosa che all'inizio ho ignorato. Nel 2021 l'estensione si è rotta completamente perché non funzionava più con le versioni più recenti di Jython e, rivedendo il codice, mi sono reso conto di aver codificato un'estensione molto inefficiente in termini di memoria. Quindi eccoci qui, questa è una nuova estensione nel 2021 in Kotlin con nuove funzionalità, imparando di nuovo molto dal difflib di Python e da diverse funzionalità. Ho fatto un miglioramento delle prestazioni perché mi sono reso conto che certi calcoli non sono necessari se confrontiamo sempre con le stesse stringhe (come già implementato nel codice Python). Reponse Clusterer è morto, lunga vita a Response Overview.
In teoria, le impostazioni predefinite potrebbero comportare prestazioni non eccezionali di Burp. Tuttavia, è altamente improbabile che ciò accada. In un test in cui tutte le risposte avevano la dimensione massima predefinita (circa 1MB) dovevano essere confrontate tra loro, il confronto richiedeva fino a 30ms con l'ottimizzazione bByteCount precalcolata (caso regolare) e fino a 80ms senza questa ottimizzazione (accade solo una volta per ogni voce). Moltiplicato per la quantità massima di gruppi (1000), questo significa che nel caso assolutamente peggiore ciò potrebbe comportare fino a 80 secondi di tempo di elaborazione. Dato che c'è un thread separato, sarebbe sopportabile, poiché il confronto successivo richiederebbe poi solo un tempo massimo di 30 secondi. Ma quali applicazioni web hanno molte risposte diverse di circa 1MB? Speriamo non troppe. Inoltre non dimenticare che se la lunghezza delle risposte differisce di più del 2%, il matching di similarità non richiede tempo grazie all'ottimizzazione veryQuickRatio.