Global Match & Replace (GMR) (Estensione Burp Suite)
Global Match & Replace (GMR) estende Burp Suite con regole di match/replace da applicare globalmente o su più strumenti a scelta (Repeater, Intruder, Proxy, ecc.). Fornisce diff per richiesta e risposta così puoi vedere esattamente cosa è cambiato.
Questa estensione utilizza l'API Burp Montoya.
Funzionalità
- Global match/replace su tutti gli strumenti Burp (non solo Proxy)
- Motore basato su regole con targeting per regola (richiesta/risposta + selezione strumenti)
- Due tipi di regole: Simple (con caratteri jolly) e RegEx
- Supporto multilinea per regola per il matching su più righe
- Pannello di test delle regole con corrispondenze e sostituzioni evidenziate
- Vista GMR Diff negli editor di richiesta/risposta che mostra il contenuto originale vs modificato
- Persistenza di sessione per regole e diff GMR (con dimensione cache configurabile)
Installazione
Da una release GitHub
- Scarica l'ultima
burp-global-match-replace-*.jar dalla pagina Releases.
- In Burp Suite: Extensions → Installed → Add
- Seleziona Java come tipo di estensione e scegli il JAR.
Compilazione dal sorgente
Il JAR si troverà in build/libs/.
Nota: questo progetto genera bytecode Java 21 per la compatibilità con Burp. Usa Java 21+ per eseguire la build (imposta JAVA_HOME di conseguenza).
Panoramica delle regole
Ogni regola ha le seguenti proprietà:
- Enabled: Indica se la regola è attiva.
- Target: Indica se la regola si applica a Requests o Responses.
- Match Type:
- Simple: corrispondenza testuale letterale con supporto ai caratteri jolly.
- RegEx: supporto completo alle espressioni regolari.
- Multiline:
- Off:
. non corrisponde ai newline.
- On:
. corrisponde ai newline (DOTALL).
^ e $ funzionano sempre per riga (MULTILINE abilitato).
- Tools: A quali strumenti Burp si applica la regola.
- Match / Replace: Il pattern di corrispondenza e il testo di sostituzione.
- Comment: Nota libera per la regola.
Nota: se non selezioni alcuno strumento, la regola non verrà eseguita.
Simple Match (con caratteri jolly)
Le regole Simple corrispondono a testo letterale con caratteri jolly opzionali:
* → un numero qualsiasi di caratteri
? → esattamente un carattere
Per impostazione predefinita (multiline disattivato), i caratteri jolly non attraversano le interruzioni di riga. Se multiline è attivo, * e ? possono estendersi su più newline.
Per corrispondere a un * o ? letterale, escapalo con una barra rovesciata:
\\* → * letterale
\\? → ? letterale
\\\\ → barra rovesciata letterale
Esempio (riga singola):
Cambia lo user agent.
Match: User-Agent: *
Replace: User-Agent: Mozilla/5.0 (...) Chrome/123
RegEx Match
Le regole Regex sono espressioni regolari standard Java. Il motore usa sempre MULTILINE e usa DOTALL solo se Multiline è abilitato. Questo significa:
^ e $ corrispondono ai confini di riga per impostazione predefinita
. non corrisponde ai newline a meno che multiline non sia abilitato
Esempio (riga singola):
Rimuovi un header.
Match: ^X-Test:.*$\r?\n
Replace:
Nota: $\r?\n alla fine rimuove la riga dell'header e la sua terminazione di riga. Usando solo $ lascerebbe l'interruzione di riga al suo posto.
Esempio (multilinea):
Rimuovi i commenti HTML.
Match: <!--.*?-->
Replace:
Multiline: ON
Pannello Regole (Scheda Suite)
La scheda Suite offre gestione completa delle regole e test:
Elenco regole
Colonne:
- Enabled: attiva/disattiva la regola
- Target: Request / Response
- Match Type: Simple / RegEx
- Multiline: "On" quando abilitata
- Tools: elenco degli strumenti selezionati
- Match / Replace / Comment
Pulsanti
- Add: crea una nuova regola
- Edit: modifica la regola selezionata
- Duplicate: duplica la regola selezionata (viene creata disabilitata così puoi modificarla in sicurezza)
- Remove: elimina la regola selezionata
Pannello di test delle regole
- Incolla una richiesta/risposta di esempio in Sample Input
- Seleziona una regola
- Fai clic su Test Selected Rule
L'output del test evidenzia:
- Testo corrispondente nell'input
- Testo di sostituzione nell'output
- Gruppi di cattura regex (colori diversi)
Vista GMR Diff
Quando una regola modifica una richiesta o una risposta, appare una scheda “GMR Diff” all'interno dell'editor di richiesta/risposta (in strumenti come Proxy, Repeater, Intruder, ecc.).
Le richieste/risposte modificate verranno evidenziate in giallo e la nota verrà impostata su “Global Match & Replace”.
Cosa mostra
- Un riepilogo di tutte le regole applicate
- Riquadri Original vs Modified
- Differenze evidenziate
- Pulsanti Successivo/Precedente per passare da una modifica all'altra
Quando appare la scheda
La scheda GMR Diff viene mostrata solo se una regola ha effettivamente modificato il messaggio. Se non sono state applicate modifiche, la scheda non apparirà. Questo può talvolta creare confusione se, ad esempio, c'è una GMR Diff solo sulla richiesta o solo sulla risposta.
Evidenziazione
- Entrambi i riquadri mostrano l'evidenziazione delle differenze per le aree modificate
- I pulsanti di navigazione (
< e >) scorrono le modifiche
- Il contatore mostra quante modifiche sono state rilevate e la posizione corrente
Persistenza e impostazioni
Cosa viene persistito nella sessione
- Regole (incluse impostazione multilinea, commenti, ecc.)
- Diff GMR (contenuto originale/modificato + riepiloghi delle regole applicate)
Pannello impostazioni
La pagina delle impostazioni dell'estensione include:
- Un limite cache diff GMR (MB)
- Controlla quanta cronologia dei diff viene memorizzata nella sessione
- La cache memorizza contenuto originale/modificato più i riepiloghi delle regole applicate
- Usa una politica di espulsione LRU: i diff più vecchi vengono scartati per primi quando il limite viene superato
- Valori più grandi mantengono i diff per un maggior numero di richieste storiche
Note / Dettagli sul comportamento
- Le regole Simple non interpretano
$1 o backreference nelle sostituzioni.
- Le regole Regex supportano
$1, $2, ecc. nelle sostituzioni.
- L'interruttore Multiline influisce solo su come i pattern corrispondono, non su come si comportano le sostituzioni.
- La cronologia GMR Diff viene memorizzata nella cache e persistita nella sessione (soggetta al limite di dimensione).
Licenza
GPL v3