Eine Burp-Suite-Erweiterung, die die vollständige Montoya-API als lokale REST-API mit Swagger UI bereitstellt
reburp macht Burp Suite zu etwas, das du skripten kannst. Es lädt als Java-Erweiterung und stellt
die Montoya-API
über eine HTTP-REST-API auf http://127.0.0.1:9090 bereit, mit einer OpenAPI-Spezifikation und Swagger UI. Alles,
was du in Burp anklicken würdest - den Proxy-Verlauf lesen, eine Anfrage senden, den Scope bearbeiten, einen
Scan ausführen, ein Token dekodieren - wird zu einem JSON-Aufruf, den ein Agent oder eine curl-Zeile ausführen kann.
Es ergänzt sich mit der Agent-Skill burp-interaction, sodass ein KI-
Assistent Burp direkt steuern kann.
Burp-Funktionen, die dein Agent jetzt über REST steuern kann:
Lade das neueste reburp-*.jar von Releases herunter oder
baue es aus dem Quellcode (erfordert Java 17+).
Jedes reburp-Release wird gegen eine minimale Burp-Suite-(Montoya-)Version gebaut. Bei einer älteren Burp- Version lade das passende Jar von Releases herunter.
git clone https://github.com/forefy/reburp.git
cd reburp
./gradlew shadowJar
# Output: build/libs/reburp.jar (plus a versioned copy, reburp-<version>.jar)
Lade reburp.jar statt der versionierten Kopie. Burp lädt eine Erweiterung von dem Pfad neu,
von dem sie geladen wurde, und der versionierte Name ändert sich bei jedem Release, sodass die
unversionierte Datei nach einem Upgrade weiterhin neu geladen wird, statt dich stillschweigend
auf dem vorherigen Build zu belassen.
Wenn dein JAVA_HOME nicht gesetzt ist, richte es auf dein JDK:
JAVA_HOME=/path/to/jdk17 ./gradlew shadowJar
build/libs/reburp.jar (oder das reburp-*.jar, das du von Releases heruntergeladen hast)Ein reburp-Tab erscheint in Burp und zeigt jeden REST-Aufruf, sobald er erfolgt.
Jede Zeile ist ein REST-Aufruf. Wenn du sie auswählst, werden die API-Anfrage und -Antwort angezeigt, sowie die Anfrage und Antwort, die reburp in deinem Namen an das Ziel gesendet hat.
Nach dem Laden im Browser öffnen:
Die Spezifikation ist die maßgebliche Quelle für die Struktur von Anfragen und Antworten.
| Gruppe | Präfix | Highlights |
|---|---|---|
| Status | /api/status | Erweiterungsinformationen, Burp-Version |
| Proxy | /api/proxy/ | Verlauf, Suche, Annotieren, Intercept-Umschalter, WebSocket-Verlauf |
| Site Map | /api/sitemap/ | Auflisten, Suchen |
| Scope | /api/scope/ | URL im Scope prüfen, Scope-Regeln hinzufügen/entfernen |
| HTTP | /api/http/ | HTTP/1.1 & HTTP/2 senden, Auth-Token-Injektion, Parsen, Diff, Parameter, Reflection, Insertion Points, Cookies |
| Messages | /api/http/message/ | Anfragen und Antworten inspizieren und umschreiben: Header, Parameter, Marker, MIME-Typen, Timing |
| Scanner | /api/scanner/ | Issues, Audit/Crawl starten, Aufgabenstatus (nur Pro) |
| Collaborator | /api/collaborator/ | Payloads generieren, Interaktionen abfragen (nur Pro) |
| Repeater / Intruder | /api/repeater/, /api/intruder/ | Anfragen an Repeater und Intruder senden |
| Request Engine | /api/http/engine/ | Asynchrone Hochdurchsatz-Request-Engine: Ressourcenpools, Nebenläufigkeitslimit, Throttle, Wiederholungen, Live-Statistiken, Pause/Fortsetzen/Abbrechen, Ergebnisse (Burp 2026.x) |
| Config | /api/config/ | Projekt- & Benutzeroptionen abrufen/setzen, Task-Engine-Status |
| Match & Replace | /api/proxy/match-replace/ | Proxy-Match-and-Replace-Regeln auflisten, hinzufügen, entfernen |
| Sessions | /api/sessions/ | Session-Handling-Regeln auflisten und löschen (Burp hat keine Add-Header-Aktion) |
| Engagement | /api/engagement/ | CSRF-PoC-Generator, Content Discovery, Referenzen finden, an den Decoder senden |
| Bambda | /api/bambda/ | Bambda-Skripte importieren, Filterketten generieren |
| Organizer |
# Is the extension up?
curl -s http://127.0.0.1:9090/api/status
# Last 10 proxy entries
curl -s "http://127.0.0.1:9090/api/proxy/history?limit=10"
# Send a request through Burp
curl -s http://127.0.0.1:9090/api/http/send \
-H 'Content-Type: application/json' \
-d '{"host":"example.com","port":443,"use_https":true,"method":"GET","path":"/"}'
# Add a host to scope
curl -s http://127.0.0.1:9090/api/scope/include \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com"}'
Der REST-Server bindet nur an 127.0.0.1, aber der Port ist unauthentifiziert und antwortet auf
jeden Origin. Alles, was localhost:9090 erreichen kann, kann Burp steuern, einschließlich einer Webseite,
die in deinem Browser geöffnet ist. Behandle den Port als ausschließlich lokal vertrauenswürdig und setze ihn
niemals über Loopback hinaus frei.
Aus diesem Grund ist die Ausführung von OS-Befehlen standardmäßig deaktiviert. /api/utils/shell/execute und
/api/utils/shell/execute-raw geben 403 zurück, es sei denn, die Erweiterung sieht Folgendes in Burps eigener
Prozessumgebung:
REBURP_ENABLE_SHELL=1
Wenn dies gesetzt ist, erhält jeder Origin, der den Port erreichen kann, Remote-Code-Ausführung auf dem Host.
Aktiviere es nur, wenn du das akzeptierst. Jeder Aufruf wird in den Extension-Output-Tab geschrieben.
GET /api/utils/shell/status meldet, ob es aktiviert ist, und erfordert dies nie.
Die Behauptung der "vollständigen Montoya-API" wird mechanisch durch tools/api_coverage.py verifiziert,
das der CI-Build-Workflow bei jedem Push ausführt und fehlschlägt, wenn eine abbildbare
Methode nicht verfügbar gemacht wurde. Das Verhalten wird separat durch tools/smoke_test.py gegen eine geladene Erweiterung geprüft.
9090 gesetzt. Ändere port in BurpRestApiExtension.kt und baue neu, falls nötig.compileOnly - sie wird nicht mitgeliefert; Burp stellt sie zur Laufzeit bereit.{ "error": "..." } zurück.OpenApiSpec.kt plus Fragmenten in docs/ zusammengesetzt. Um eine Routen-
gruppe hinzuzufügen, schreibe ein *Paths()- und *Schemas()-Fragment und liste es in docs/OpenApiSpecExtra.kt auf.Issues und Pull Requests sind willkommen. Bitte führe python3 tools/api_coverage.py und
./gradlew shadowJar aus, bevor du einen PR öffnest. Neue Routengruppen sollten mit ihrem OpenAPI-Fragment
ausgeliefert werden, damit die Dokumentation vollständig bleibt.
/api/organizer/| Elemente auflisten, Anfragen an den Organizer senden |
| Issues | /api/issues/ | Benutzerdefinierte Audit-Issues erstellen |
| Events | /api/events/ | Passive Traffic-Observer ein- und ausschalten, dann die erfassten Events lesen |
| Extension Data | /api/extension-data/ | Typisierter Key/Value-Speicher, der in der Burp-Projektdatei gehalten wird |
| Preferences | /api/preferences/ | Persistierte Erweiterungs-Einstellungen nach Typ |
| Logging | /api/logging/ | In die Extension-Output- und Error-Tabs sowie Burps Event-Log schreiben |
| Activity Log | /api/log/ | reburps eigenes persistiertes Aufrufprotokoll abfragen |
| AI | /api/ai/ | Burp-AI-Status und Chat (sofern verfügbar) |
| Meta | /api/meta/ | Burp-Versionskomponenten, Erweiterungs-Ladeinformationen, Enum-Vokabulare |
| Utilities | /api/utils/ | URL-Encode/Decode, Base64, Hash, JWT-Decode, Zufallsstring, Dekomprimieren |
| Numbers | /api/utils/number/ | Zwischen Binär, Oktal, Dezimal, Hex und beliebigen Basen konvertieren |
| JSON | /api/utils/json/ | Validieren, per Pointer lesen und bearbeiten, Struktur inspizieren, normalisieren |
| Bytes | /api/utils/bytes/ | Byte-Buffer durchsuchen, schneiden, anhängen, allokieren und inspizieren |
| Ranking | /api/utils/rank | Proxy-Verlauf danach einordnen, wie anomal jeder Austausch wirkt |
| Shell | /api/utils/shell/ | Ausführung von OS-Befehlen. Standardmäßig deaktiviert, siehe Sicherheit |