Global Match & Replace (GMR) (Burp Suite Extension)
Global Match & Replace (GMR) étend Burp Suite avec des règles de correspondance/remplacement à appliquer globalement ou sur plusieurs outils de votre choix (Repeater, Intruder, Proxy, etc.). Il fournit des diffs par requête et par réponse afin que vous puissiez voir exactement ce qui a changé.
Cette extension utilise l'API Burp Montoya.
Fonctionnalités
- Remplacement/correspondance global dans les outils Burp (pas seulement Proxy)
- Moteur basé sur des règles avec ciblage par règle (requête/réponse + sélection d'outils)
- Deux types de règles : Simple (avec caractères génériques) et RegEx
- Prise en charge du multiligne par règle pour la correspondance sur plusieurs sauts de ligne
- Panneau de test des règles avec correspondances et remplacements en surbrillance
- Vue GMR Diff dans les éditeurs de requêtes/réponses montrant le contenu original et modifié
- Persistance de session pour les règles et les diffs GMR (avec taille de cache configurable)
Installation
À partir d'une release GitHub
- Téléchargez le dernier
burp-global-match-replace-*.jar depuis la page Releases.
- Dans Burp Suite : Extensions → Installed → Add
- Sélectionnez Java comme type d'extension et choisissez le JAR.
Compiler à partir des sources
Le JAR sera dans build/libs/.
Remarque : ce projet cible le bytecode Java 21 pour la compatibilité avec Burp. Utilisez Java 21+ pour exécuter la compilation (définissez JAVA_HOME en conséquence).
Aperçu des règles
Chaque règle possède les propriétés suivantes :
- Enabled : indique si la règle est active.
- Target : indique si la règle s'applique aux requêtes ou aux réponses.
- Match Type :
- Simple : correspondance de texte littéral avec prise en charge des caractères génériques.
- RegEx : prise en charge complète des expressions régulières.
- Multiline :
- Désactivé :
. ne correspond pas aux sauts de ligne.
- Activé :
. correspond aux sauts de ligne (DOTALL).
^ et $ fonctionnent toujours par ligne (MULTILINE activé).
- Tools : outils Burp auxquels la règle s'applique.
- Match / Replace : le motif de correspondance et le texte de remplacement.
- Comment : note libre sur la règle.
Remarque : si aucun outil n'est sélectionné, la règle ne s'exécutera pas.
Correspondance Simple (avec caractères génériques)
Les règles Simple correspondent à un texte littéral avec des caractères génériques facultatifs :
* → un nombre quelconque de caractères
? → exactement un caractère
Par défaut (multiline est désactivé), les caractères génériques ne traversent pas les sauts de ligne. Si multiline est activé, * et ? peuvent s'étendre sur plusieurs lignes.
Pour correspondre à un * ou ? littéral, échappez-le avec une barre oblique inverse :
\\* → * littéral
\\? → ? littéral
\\\\ → barre oblique inverse littérale
Exemple (mono-ligne) :
Changer le user agent.
Match: User-Agent: *
Replace: User-Agent: Mozilla/5.0 (...) Chrome/123
Correspondance RegEx
Les règles RegEx sont des expressions régulières Java standard. Le moteur utilise toujours MULTILINE, et n'utilise DOTALL que si Multiline est activé. Cela signifie :
^ et $ correspondent aux limites de ligne par défaut
. ne correspond pas aux sauts de ligne sauf si multiline est activé
Exemple (mono-ligne) :
Supprimer un en-tête.
Match: ^X-Test:.*$\r?\n
Replace:
Remarque : le $\r?\n à la fin supprime la ligne de l'en-tête ainsi que son saut de ligne. Utiliser uniquement $ laisserait le saut de ligne en place.
Exemple (multiligne) :
Supprimer les commentaires HTML.
Match: <!--.*?-->
Replace:
Multiline: ON
Panneau des règles (onglet Suite)
L'onglet Suite fournit une gestion complète des règles et des tests :
Liste des règles
Colonnes :
- Enabled : activer/désactiver la règle
- Target : Request / Response
- Match Type : Simple / RegEx
- Multiline : « Activé » lorsque la fonction est activée
- Tools : liste des outils sélectionnés
- Match / Replace / Comment
Boutons
- Add : créer une nouvelle règle
- Edit : modifier la règle sélectionnée
- Duplicate : cloner la règle sélectionnée (créée désactivée pour pouvoir l'ajuster en toute sécurité)
- Remove : supprimer la règle sélectionnée
Panneau de test des règles
- Collez un exemple de requête/réponse dans Sample Input
- Sélectionnez une règle
- Cliquez sur Test Selected Rule
La sortie du test met en surbrillance :
- Le texte correspondant dans l'entrée
- Le texte de remplacement dans la sortie
- Les groupes de capture RegEx (couleurs différentes)
Vue GMR Diff
Lorsqu'une règle modifie une requête ou une réponse, un onglet « GMR Diff » apparaît dans l'éditeur de requête/réponse (dans des outils comme Proxy, Repeater, Intruder, etc.).
Les requêtes/réponses modifiées seront surlignées en jaune et la note sera définie sur « Global Match & Replace ».
Ce qu'elle affiche
- Un récapitulatif de toutes les règles appliquées
- Panneaux Original vs Modifié
- Différences surlignées
- Boutons Suivant/Précédent pour naviguer entre les modifications
Quand l'onglet apparaît
L'onglet GMR Diff n'est affiché que si une règle a réellement modifié le message. Si aucune modification n'a été appliquée, l'onglet n'apparaîtra pas. Cela peut parfois prêter à confusion si, par exemple, il existe un GMR Diff sur la seule requête ou la seule réponse.
Surlignage
- Les deux panneaux affichent les surlignages de diff pour les régions modifiées
- Les boutons de navigation (
< et >) parcourent les modifications
- Le compteur indique le nombre de modifications détectées et la position actuelle
Persistance et paramètres
Ce qui est conservé dans la session
- Règles (y compris le réglage multiligne, les commentaires, etc.)
- Diffs GMR (contenu original/modifié + résumés des règles appliquées)
Panneau des paramètres
La page des paramètres de l'extension comprend :
- Un plafond de cache des diffs GMR (Mo)
- Contrôle la quantité d'historique de diff stockée dans la session
- Le cache stocke le contenu original/modifié ainsi que les résumés des règles appliquées
- Utilise une politique d'éviction LRU : les diffs les plus anciens sont supprimés en premier lorsque le plafond est dépassé
- Des valeurs plus élevées conservent les diffs pour davantage de requêtes historiques
Remarques / Détails de comportement
- Les règles Simple n'interprètent pas
$1 ni les références arrière dans les remplacements.
- Les règles RegEx prennent en charge
$1, $2, etc. dans les remplacements.
- L'interrupteur Multiline n'affecte que la façon dont les motifs correspondent, pas le comportement des remplacements.
- L'historique des diffs GMR est mis en cache et conservé dans la session (soumis au plafond de taille).
Licence
GPL v3