Un'estensione di Burp Suite che espone l'intera API Montoya come API REST locale, con Swagger UI
reburp trasforma Burp Suite in qualcosa che puoi scriptare. Si carica come estensione Java e serve
la Montoya API
tramite un'API REST HTTP su http://127.0.0.1:9090, con una specifica OpenAPI e Swagger UI. Qualsiasi
cosa faresti cliccando in Burp - leggere la cronologia del proxy, inviare una richiesta, modificare lo scope, avviare una
scansione, decodificare un token - diventa una chiamata JSON che un agente o una riga curl può effettuare.
Si abbina alla skill per agenti burp-interaction così un
assistente AI può pilotare Burp direttamente.
Funzionalità di Burp che il tuo agente può ora pilotare via REST:
Scarica l'ultimo reburp-*.jar dalle Release, oppure
compilalo dai sorgenti (richiede Java 17+).
Ogni release di reburp è compilata rispetto a una versione minima di Burp Suite (Montoya). Su un Burp più vecchio, scarica il jar corrispondente dalle Release.
git clone https://github.com/forefy/reburp.git
cd reburp
./gradlew shadowJar
# Output: build/libs/reburp.jar (plus a versioned copy, reburp-<version>.jar)
Carica reburp.jar invece della copia con versione. Burp ricarica un'estensione dal percorso
da cui è stata caricata, e il nome con versione cambia a ogni release, quindi quello senza versione
continua a ricaricarsi dopo un aggiornamento invece di lasciarti silenziosamente sulla build precedente.
Se il tuo JAVA_HOME non è impostato, puntalo al tuo JDK:
JAVA_HOME=/path/to/jdk17 ./gradlew shadowJar
build/libs/reburp.jar (o il reburp-*.jar che hai scaricato dalle Release)Una scheda reburp appare in Burp mostrando ogni chiamata REST mentre avviene.
Ogni riga è una chiamata REST. Selezionandola vengono mostrate la richiesta e la risposta API, più la richiesta e la risposta che reburp ha inviato al target per tuo conto.
Una volta caricata, apri nel browser:
La specifica è la fonte di verità per le forme di richieste e risposte.
| Gruppo | Prefisso | In evidenza |
|---|---|---|
| Status | /api/status | Informazioni sull'estensione, versione di Burp |
| Proxy | /api/proxy/ | Cronologia, ricerca, annotazione, toggle dell'intercept, cronologia WebSocket |
| Site Map | /api/sitemap/ | Elenco, ricerca |
| Scope | /api/scope/ | Verifica URL nello scope, aggiungi/rimuovi regole di scope |
| HTTP | /api/http/ | Invia HTTP/1.1 e HTTP/2, iniezione di token di autenticazione, parse, diff, parametri, reflection, punti di inserimento, cookie |
| Messages | /api/http/message/ | Ispeziona e riscrivi richieste e risposte: header, parametri, marker, tipi MIME, timing |
| Scanner | /api/scanner/ | Issue, avvia audit/crawl, stato del task (solo Pro) |
| Collaborator | /api/collaborator/ | Genera payload, interroga le interazioni (solo Pro) |
| Repeater / Intruder | /api/repeater/, /api/intruder/ | Invia richieste a Repeater e Intruder |
| Request Engine | /api/http/engine/ | Motore di richieste asincrono ad alto throughput: pool di risorse, limite di concorrenza, throttle, retry, statistiche live, pausa/riprendi/annulla, risultati (Burp 2026.x) |
| Config | /api/config/ | Ottieni/imposta opzioni di progetto e utente, stato del task engine |
| Match & Replace | /api/proxy/match-replace/ | Elenca, aggiungi, rimuovi regole match-and-replace del proxy |
| Sessions | /api/sessions/ | Elenca ed elimina regole di gestione delle sessioni (Burp non ha un'azione add-header) |
| Engagement | /api/engagement/ | Generatore di PoC CSRF, content discovery, find references, invia al decoder |
| Bambda | /api/bambda/ | Importa script Bambda, genera catene di filtri |
| 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"}'
Il server REST si lega solo a 127.0.0.1, ma la porta è non autenticata e risponde a
qualsiasi origine. Qualsiasi cosa che possa raggiungere localhost:9090 può pilotare Burp, inclusa una pagina web
aperta nel tuo browser. Tratta la porta come affidabile solo in locale e non esporla mai oltre il loopback.
Per questo motivo, l'esecuzione di comandi OS è disattivata per impostazione predefinita. /api/utils/shell/execute e
/api/utils/shell/execute-raw restituiscono 403 a meno che l'estensione non veda questo nell'ambiente del processo
di Burp stesso:
REBURP_ENABLE_SHELL=1
Con questa impostata, qualsiasi origine che possa raggiungere la porta ottiene l'esecuzione di codice remoto sull'host. Abilitala
solo quando accetti questo. Ogni invocazione viene scritta nella scheda output dell'estensione.
GET /api/utils/shell/status riporta se è attiva e non richiede mai che lo sia.
L'affermazione "intera Montoya API" è verificata meccanicamente da tools/api_coverage.py,
che il workflow di build della CI esegue a ogni push e fallisce se un metodo mappabile
rimane non esposto. Il comportamento è esercitato separatamente da tools/smoke_test.py contro un'estensione caricata.
9090. Cambia port in BurpRestApiExtension.kt e ricompila se necessario.compileOnly - non è inclusa; Burp la fornisce a runtime.{ "error": "..." }.OpenApiSpec.kt più frammenti in docs/. Per aggiungere un gruppo di route,
scrivi un frammento *Paths() e *Schemas() e inseriscilo in docs/OpenApiSpecExtra.kt.Issue e pull request sono benvenute. Esegui python3 tools/api_coverage.py e
./gradlew shadowJar prima di aprire una PR. I nuovi gruppi di route dovrebbero essere forniti con il loro frammento OpenAPI
così che la documentazione rimanga completa.
/api/organizer/ |
| Elenca elementi, invia richieste all'Organizer |
| Issues | /api/issues/ | Crea issue di audit personalizzate |
| Events | /api/events/ | Attiva e disattiva gli osservatori passivi del traffico, poi leggi gli eventi catturati |
| Extension Data | /api/extension-data/ | Archiviazione tipizzata chiave/valore conservata nel file di progetto di Burp |
| Preferences | /api/preferences/ | Preferenze dell'estensione persistite per tipo |
| Logging | /api/logging/ | Scrivi nelle schede output ed error dell'estensione e nel log eventi di Burp |
| Activity Log | /api/log/ | Interroga il log delle chiamate persistito di reburp |
| AI | /api/ai/ | Stato e chat di Burp AI (dove disponibile) |
| Meta | /api/meta/ | Componenti della versione di Burp, informazioni sul caricamento dell'estensione, vocabolari di enum |
| Utilities | /api/utils/ | URL encode/decode, base64, hash, decodifica JWT, stringa casuale, decompress |
| Numbers | /api/utils/number/ | Converti tra binario, ottale, decimale, esadecimale e basi arbitrarie |
| JSON | /api/utils/json/ | Valida, leggi e modifica tramite pointer, ispeziona la struttura, normalizza |
| Bytes | /api/utils/bytes/ | Cerca, affetta, accoda, alloca e ispeziona buffer di byte |
| Ranking | /api/utils/rank | Classifica la cronologia del proxy in base a quanto ogni scambio appare anomalo |
| Shell | /api/utils/shell/ | Esecuzione di comandi OS. Disabilitato per impostazione predefinita, vedi Sicurezza |