Global Match & Replace (GMR) (расширение Burp Suite)
Global Match & Replace (GMR) расширяет Burp Suite правилами сопоставления/замены, которые применяются глобально или в нескольких выбранных вами инструментах (Repeater, Intruder, Proxy и т. д.). Он предоставляет диффы для каждого запроса и ответа, чтобы вы могли точно видеть, что изменилось.
Это расширение использует Burp Montoya API.
Возможности
- Глобальное сопоставление/замена во всех инструментах Burp (не только в Proxy)
- Движок на основе правил с нацеливанием для каждого правила (запрос/ответ + выбор инструмента)
- Два типа правил: простое (с подстановочными знаками) и RegEx
- Поддержка многострочности для каждого правила для сопоставления через переносы строк
- Панель тестирования правил с подсветкой совпадений и замен
- Просмотр GMR Diff в редакторах запросов/ответов, показывающий исходное и изменённое содержимое
- Сохранение сессии для правил и GMR-диффов (с настраиваемым размером кэша)
Установка
Из GitHub-релиза
- Скачайте последний
burp-global-match-replace-*.jar со страницы Releases.
- В Burp Suite: Extensions → Installed → Add
- Выберите Java в качестве типа расширения и укажите JAR-файл.
Сборка из исходников
JAR-файл появится в build/libs/.
Примечание: этот проект нацелен на байт-код Java 21 для совместимости с Burp. Используйте Java 21+ для сборки (соответственно укажите JAVA_HOME).
Обзор правил
Каждое правило имеет следующие свойства:
- Enabled: активность правила.
- Target: применяется ли правило к запросам или ответам.
- Match Type:
- Simple: сопоставление литерального текста с поддержкой подстановочных знаков.
- RegEx: полная поддержка регулярных выражений.
- Multiline:
- Off:
. не сопоставляется с переводами строк.
- On:
. сопоставляется с переводами строк (DOTALL).
^ и $ всегда работают построчно (MULTILINE включён).
- Tools: к каким инструментам Burp применяется правило.
- Match / Replace: шаблон совпадения и замещающий текст.
- Comment: произвольная заметка к правилу.
Примечание: если не выбрано ни одного инструмента, правило не будет выполняться.
Простое сопоставление (с подстановочными знаками)
Простые правила сопоставляют литеральный текст с опциональными подстановочными знаками:
* → любое количество символов
? → ровно один символ
По умолчанию (когда multiline выключен) подстановочные знаки не переходят через переводы строк. Если multiline включён, * и ? могут охватывать новые строки.
Чтобы сопоставить литеральные * или ?, экранируйте их обратной косой чертой:
\\* → литеральный *
\\? → литеральный ?
\\\\ → литеральный обратный слеш
Пример (однострочный):
Заменить user agent.
Match: User-Agent: *
Replace: User-Agent: Mozilla/5.0 (...) Chrome/123
RegEx-сопоставление
Правила RegEx используют стандартные регулярные выражения Java. Движок всегда использует MULTILINE и применяет DOTALL только если включён режим Multiline. Это означает:
^ и $ по умолчанию сопоставляются с границами строк
. не сопоставляется с переводами строк, пока multiline не включён
Пример (однострочный):
Удалить заголовок.
Match: ^X-Test:.*$\r?\n
Replace:
Примечание: $\r?\n в конце удаляет строку заголовка и её перевод строки. Если использовать только $, разрыв строки останется.
Пример (многострочный):
Удалить HTML-комментарии.
Match: <!--.*?-->
Replace:
Multiline: ON
Панель правил (вкладка Suite)
Вкладка Suite предоставляет полное управление правилами и тестирование:
Список правил
Столбцы:
- Enabled: включение/выключение правила
- Target: запрос / ответ
- Match Type: Simple / RegEx
- Multiline: «On», когда включено
- Tools: список выбранных инструментов
- Match / Replace / Comment
Кнопки
- Add: создать новое правило
- Edit: изменить выбранное правило
- Duplicate: клонировать выбранное правило (создаётся отключённым, чтобы вы могли безопасно настроить)
- Remove: удалить выбранное правило
Панель тестирования правил
- Вставьте образец запроса/ответа в Sample Input
- Выберите правило
- Нажмите Test Selected Rule
Тестовый вывод подсвечивает:
- Совпавший текст во входных данных
- Замещающий текст в выводе
- Группы захвата регулярного выражения (разными цветами)
Просмотр GMR Diff
Когда правило изменяет запрос или ответ, внутри редактора запроса/ответа появляется вкладка «GMR Diff» (в таких инструментах, как Proxy, Repeater, Intruder и т. д.).
Изменённые запросы/ответы будут подсвечены жёлтым, а заметка будет установлена как «Global Match & Replace».
Что оно показывает
- Сводку всех применённых правил
- Панели Original (исходное) и Modified (изменённое)
- Подсвеченные различия
- Кнопки Next/Previous для перехода между изменениями
Когда появляется вкладка
Вкладка GMR Diff показывается только если правило действительно изменило сообщение. Если изменения не были применены, вкладка не появится. Это иногда может сбивать с толку, если GMR Diff есть, например, только для запроса или только для ответа.
Подсветка
- Обе панели показывают подсветку различий в изменённых областях
- Кнопки навигации (
< и >) циклически переключают изменения
- Счётчик показывает, сколько изменений обнаружено и текущую позицию
Сохранение состояния и настройки
Что сохраняется в сессии
- Правила (включая настройку multiline, комментарии и т. д.)
- GMR-диффы (исходное/изменённое содержимое + сводка применённых правил)
Панель настроек
Страница настроек расширения включает:
- Ограничение кэша GMR-диффов (МБ)
- Управляет тем, сколько истории диффов хранится в сессии
- Кэш хранит исходное/изменённое содержимое, а также сводки применённых правил
- Использует политику вытеснения LRU: при превышении лимита сначала отбрасываются самые старые диффы
- Большие значения сохраняют диффы для большего числа исторических запросов
Примечания / Детали поведения
- Простые правила не интерпретируют
$1 или обратные ссылки в заменах.
- Правила RegEx поддерживают
$1, $2 и т. д. в заменах.
- Переключатель Multiline влияет только на сопоставление шаблонов, а не на поведение замен.
- История GMR Diff кэшируется и сохраняется в сессии (с учётом лимита размера).
Лицензия
GPL v3