Global Match & Replace (GMR) (Burp-Suite-Erweiterung)
Global Match & Replace (GMR) erweitert Burp Suite um Match/Replace-Regeln, die global oder über mehrere Tools Ihrer Wahl (Repeater, Intruder, Proxy usw.) angewendet werden können. Es bietet Diff-Ansichten pro Anfrage und Antwort, damit Sie genau sehen, was sich geändert hat.
Diese Erweiterung verwendet die Burp-Montoya-API.
Funktionen
- Globales Match/Replace über Burp-Tools hinweg (nicht nur Proxy)
- Regelbasierte Engine mit Zielauswahl pro Regel (Anfrage/Antwort + Tool-Auswahl)
- Zwei Regeltypen: Einfach (mit Platzhaltern) und RegEx
- Multiline-Unterstützung pro Regel für Abgleiche über Zeilenumbrüche hinweg
- Regeltest-Bereich mit hervorgehobenen Übereinstimmungen und Ersetzungen
- GMR-Diff-Ansicht in Anfrage/Antwort-Editoren, die Original und geänderten Inhalt gegenüberstellt
- Sitzungspersistenz für Regeln und GMR-Diffs (mit konfigurierbarer Cache-Größe)
Installation
Von einem GitHub-Release
- Laden Sie die neueste
burp-global-match-replace-*.jar von der Release-Seite herunter.
- In Burp Suite: Extensions → Installiert → Hinzufügen
- Wählen Sie Java als Erweiterungstyp und anschließend die JAR-Datei.
Aus dem Quellcode erstellen
./gradlew clean jar
Die JAR befindet sich in build/libs/.
Hinweis: Dieses Projekt zielt auf Java-21-Bytecode für die Burp-Kompatibilität ab. Verwenden Sie Java 21+ für den Build (setzen Sie JAVA_HOME entsprechend).
Regelübersicht
Jede Regel hat die folgenden Eigenschaften:
- Aktiviert: Gibt an, ob die Regel aktiv ist.
- Ziel: Gibt an, ob die Regel auf Anfragen oder Antworten angewendet wird.
- Abgleich-Typ:
- Einfach: Wörtlicher Textabgleich mit Platzhalter-Unterstützung.
- RegEx: Vollständige Unterstützung für reguläre Ausdrücke.
- Multiline:
- Aus:
. matcht keine Zeilenumbrüche.
- Ein:
. matcht doch Zeilenumbrüche (DOTALL).
^ und $ funktionieren immer pro Zeile (MULTILINE aktiviert).
- Tools: Auf welche Burp-Tools die Regel angewendet wird.
- Match / Replace: Das Abgleichmuster und der Ersetzungstext.
- Kommentar: Freiform-Notiz zur Regel.
Hinweis: Wenn keine Tools ausgewählt sind, wird die Regel nicht ausgeführt.
Einfacher Abgleich (mit Platzhaltern)
Einfache Regeln gleichen wörtlichen Text mit optionalen Platzhaltern ab:
* → beliebig viele Zeichen
? → genau ein Zeichen
Standardmäßig (multiline ist aus) überschreiten Platzhalter keine Zeilenumbrüche. Wenn multiline eingeschaltet ist, können * und ? Zeilenumbrüche überspannen.
Um ein wörtliches * oder ? zu matchen, maskieren Sie es mit einem Backslash:
\\* → wörtliches *
\\? → wörtliches ?
\\\\ → wörtlicher Backslash
Beispiel (einzeilig):
User-Agent ändern.
Match: User-Agent: *
Replace: User-Agent: Mozilla/5.0 (...) Chrome/123
RegEx-Abgleich
Regex-Regeln sind Standard-Java-Regex. Die Engine verwendet immer MULTILINE und DOTALL nur, wenn Multiline aktiviert ist. Das bedeutet:
^ und $ matchen standardmäßig Zeilenanfänge und -enden
. matcht keine Zeilenumbrüche, außer multiline ist aktiviert
Beispiel (einzeilig):
Einen Header entfernen.
Match: ^X-Test:.*$\r?\n
Replace:
Hinweis: Das $\r?\n am Ende entfernt die Header-Zeile und ihren Zeilenumbruch. Bei nur $ bliebe der Zeilenumbruch erhalten.
Beispiel (mehrzeilig):
HTML-Kommentare entfernen.
Match: <!--.*?-->
Replace:
Multiline: ON
Regelbereich (Suite-Tab)
Der Suite-Tab bietet eine vollständige Regelverwaltung und -testung:
Regelliste
Spalten:
- Aktiviert: Regel ein-/ausschalten
- Ziel: Anfrage / Antwort
- Abgleich-Typ: Einfach / RegEx
- Multiline: „Ein“, wenn aktiviert
- Tools: Liste der ausgewählten Tools
- Match / Replace / Kommentar
Schaltflächen
- Hinzufügen: Eine neue Regel erstellen
- Bearbeiten: Ausgewählte Regel ändern
- Duplizieren: Ausgewählte Regel klonen (wird deaktiviert erstellt, damit Sie sie sicher anpassen können)
- Entfernen: Ausgewählte Regel löschen
Regeltest-Bereich
- Fügen Sie eine Beispiel-Anfrage/-Antwort in Beispieleingabe ein
- Wählen Sie eine Regel aus
- Klicken Sie auf Ausgewählte Regel testen
Die Testausgabe hebt hervor:
- Übereinstimmenden Text in der Eingabe
- Ersetzungstext in der Ausgabe
- Regex-Erfassungsgruppen (verschiedene Farben)
GMR-Diff-Ansicht
Wenn eine Regel eine Anfrage oder Antwort ändert, erscheint ein „GMR Diff“-Tab im Anfrage/Antwort-Editor (in Tools wie Proxy, Repeater, Intruder usw.).
Geänderte Anfragen/Antworten werden gelb hervorgehoben, und die Notiz wird auf „Global Match & Replace“ gesetzt.
Was angezeigt wird
- Eine Zusammenfassung aller angewendeten Regeln
- Original- vs. Geändert-Bereiche
- Hervorgehobene Unterschiede
- Weiter-/Zurück-Schaltflächen zum Springen zwischen Änderungen
Wann der Tab erscheint
Der GMR-Diff-Tab wird nur angezeigt, wenn eine Regel die Nachricht tatsächlich geändert hat. Wenn keine Änderungen angewendet wurden, erscheint der Tab nicht. Dies kann manchmal verwirrend sein, z. B. wenn es nur für die Anfrage oder nur für die Antwort einen GMR-Diff gibt.
Hervorhebung
- Beide Bereiche zeigen Diff-Hervorhebungen für die geänderten Regionen
- Die Navigationsschaltflächen (
< und >) blättern durch die Änderungen
- Der Zähler zeigt, wie viele Änderungen erkannt wurden, und die aktuelle Position
Persistenz und Einstellungen
Was in der Sitzung gespeichert wird
- Regeln (einschließlich Multiline-Einstellung, Kommentaren usw.)
- GMR-Diffs (Original-/geänderter Inhalt + Zusammenfassungen angewendeter Regeln)
Einstellungsbereich
Die Einstellungsseite der Erweiterung enthält:
- Ein GMR-Diff-Cache-Limit (MB)
- Steuert, wie viel Diff-Verlauf in der Sitzung gespeichert wird
- Der Cache speichert Original-/geänderten Inhalt sowie Zusammenfassungen angewendeter Regeln
- Verwendet eine LRU-Verdrängungsrichtlinie: Die ältesten Diffs werden zuerst verworfen, wenn das Limit überschritten wird
- Größere Werte behalten Diffs für mehr historische Anfragen
Hinweise / Verhaltensdetails
- Einfache Regeln interpretieren
$1 oder Rückverweise in Ersetzungen nicht.
- Regex-Regeln unterstützen
$1, $2 usw. in Ersetzungen.
- Der Multiline-Umschalter beeinflusst nur, wie Muster matchen, nicht wie sich Ersetzungen verhalten.
- Der GMR-Diff-Verlauf wird in der Sitzung zwischengespeichert und gespeichert (abhängig vom Größenlimit).
Lizenz
GPL v3