
REST/JSON API для инструмента безопасности Burp Suite.
⚠️ ПРЕДУПРЕЖДЕНИЕ: Этот проект больше не поддерживается активно.
Хотя репозиторий останется доступным для ознакомления, дальнейшие обновления, исправления ошибок или поддержка предоставляться не будут.
REST/JSON API для инструмента безопасности Burp Suite.
С момента первого коммита в 2016 году burp-rest-api стал стандартным инструментом для автоматизации веб-сканирования на основе Burp Suite. Многие специалисты по безопасности и организации полагались на это расширение для оркестрации работы Burp Spider и Scanner.
burp-rest-api-2.3.2.jar) со страницы релизовburpsuite_pro.jar из локальной установки Burp SuiteНа Linux, Mac:
java --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED -cp "burpsuite_pro.jar:burp-rest-api-2.3.2.jar" org.springframework.boot.loader.launch.JarLauncher
На Windows:
java --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED -cp "burpsuite_pro.jar;burp-rest-api-2.3.2.jar" org.springframework.boot.loader.launch.JarLauncher
Важно!!!
burp-rest-api поддерживает как устаревшую версию Burp Suite Professional v1.7, так и более новую Burp Suite Professional v2025.x. Поскольку этот проект основан на Burp Extender API, поведение некоторых функций может незначительно отличаться в зависимости от версии Burp. Например, конфигурация сканера Burp Suite в v2025.x больше не настраивается.
По умолчанию Burp запускается в безголовом режиме с прокси на порту 8080/tcp (только localhost) и REST-эндпоинтом на порту 8090/tcp (только localhost).
Чтобы запустить Burp в режиме UI из командной строки, добавьте следующий аргумент:
--headless.mode=false
Чтобы изменить порт сервера, на котором доступно API, добавьте следующий аргумент:
--server.port=8081
или
--port=8081
Вы также можете изменить адрес сервера, используемый для привязки сетевого адреса:
--server.address=192.168.1.2
или
--address=192.168.1.2
Следующие аргументы командной строки используются только расширением для настройки режима запуска и номера порта.
--burp.jar=<filename.jar> : Динамически загружает JAR Burp и предоставляет его через REST API. Этот флаг работает только на Java <= 1.8! Используйте сценарий burp-rest-api.{sh,bat} для более новых версий Java.
--burp.ext=<filename.{jar,rb,py} : Загружает указанные расширения Burp во время запуска приложения. Этот флаг может повторяться.
--server.port=<port_number> : REST API эндпоинт доступен по указанному номеру порта. --port=<port_number> работает как сокращённый аргумент.
--server.address=<network address> : Сетевой адрес, к которому должен привязываться REST API эндпоинт. --address=<address_ip> работает как сокращённый аргумент.
--apikey=<customApiKey> : Включает аутентификацию по ключу API для защиты эндпоинтов /burp/*. Если customApiKey передан как аргумент, он должен быть включён в каждый HTTP-запрос как дополнительный заголовок: "API-KEY: <customApiKey>".
--headless.mode=<true/false> : При значении false запускает Burp Suite в режиме UI. В противном случае запускает Burp Suite в безголовом режиме. Значение по умолчанию: системное свойство (java.awt.headless)
Аргументы командной строки, переданные исполняемому JAR burp-rest-api, передаются в JAR Burp Suite. Таким образом, можно передавать следующие аргументы командной строки Burp Suite JAR в JAR burp-rest-api для той же функциональности, как если бы они передавались напрямую в Burp Suite JAR.
--project-file=<filename> : Открывает указанный файл проекта данных, используемый для сохранения состояния инструмента. Файл будет создан как новый проект, если его ещё не существует.
--config-file=<filename> : Открывает проект, используя параметры, содержащиеся в выбранном файле конфигурации проекта. Для загрузки нескольких конфигураций проекта этот аргумент можно передавать несколько раз с разными значениями.
--user-config-file=<filename> : Открывает проект, используя параметры, содержащиеся в выбранном файле конфигурации пользователя. Для загрузки нескольких пользовательских конфигураций этот аргумент можно передавать несколько раз с разными значениями.
Более подробную информацию о проектах см. в документации Burp Suite здесь и здесь. О настройках сканера см. раздел «Поддержка и ограничения Burp Suite».
Если JAR burp-rest-api запущен без аргументов --project-file, --config-file или --user-config-file, то Burp Suite запускается с временным файлом проекта и некоторой конфигурацией по умолчанию. Временный файл проекта создаётся при запуске Burp Suite и удаляется в конце сеанса.
Для ознакомления с конфигурацией по умолчанию, используемой для запуска Burp Suite, обратитесь к файлам burp-default-project-options.json и burp-default-user-options.json внутри JAR в папке static.
Swagger используется для определения документации API. После запуска JAR получите доступ к следующим ресурсам для документации API и Swagger UI. Порт 8090 — порт сервера по умолчанию.
API Docs: http://localhost:8090/v3/api-docs
Swagger UI: http://localhost:8090/swagger-ui/index.html#
Этот проект также включает клиент (BurpClient.java), написанный на Java, для использования в других проектах. Обратитесь к файлу интеграционного теста BurpClientIT.java для получения информации об использовании BurpClient.java.
Этот проект изначально был вдохновлён Resty-Burp и разрабатывается в партнёрстве с Doyensec LLC.
Команда проекта burp-rest-api приветствует вклад сообщества. Если вы хотите внести свой код и ещё не подписали соглашение о лицензировании для участников (CLA), наш бот обновит задачу, когда вы откроете Pull Request. По любым вопросам о процессе CLA обращайтесь к нашему FAQ по CLA. Для получения более подробной информации обратитесь к CONTRIBUTING.md и FAQ.md.
Следующий раздел содержит полезную информацию для начала разработки расширения.