Burp Suite 확장 기능으로, 전체 Montoya API를 Swagger UI가 포함된 로컬 REST API로 노출합니다.
Burp의 API/MCP는 제한적입니다 - reburp는 전체 Montoya API를 로컬에서 제공되는 openapi REST API로 노출하는 Burp Suite 확장으로, AI 에이전트에 최적화되어 있습니다.
Issues |
reburp는 Burp Suite를 스크립트로 제어할 수 있게 만들어 줍니다. Java 확장으로 로드되어
Montoya API를
http://127.0.0.1:9090에서 HTTP REST API로 제공하며, OpenAPI 스펙과 Swagger UI도 함께 제공합니다.
Burp에서 클릭으로 하던 모든 작업 - 프록시 히스토리 읽기, 요청 전송, 스코프 편집, 스캔 실행,
토큰 디코딩 - 이 에이전트나 curl 명령으로 호출할 수 있는 JSON 호출이 됩니다.
burp-interaction 에이전트 스킬과 함께 사용하면 AI
어시스턴트가 Burp를 직접 구동할 수 있습니다.
이제 에이전트가 REST를 통해 구동할 수 있는 Burp 기능:
Releases에서 최신 reburp-*.jar를 받거나,
소스에서 빌드하세요 (Java 17+ 필요).
각 reburp 릴리스는 최소 Burp Suite (Montoya) 버전에 맞춰 빌드됩니다. 구버전 Burp에서는 Releases에서 일치하는 jar를 받으세요.
git clone https://github.com/forefy/reburp.git
cd reburp
./gradlew shadowJar
# Output: build/libs/reburp.jar (plus a versioned copy, reburp-<version>.jar)
버전이 붙은 복사본이 아니라 reburp.jar를 로드하세요. Burp는 확장을 로드한 경로에서
다시 로드하는데, 버전이 붙은 이름은 릴리스마다 바뀌므로 버전이 없는 이름을 사용하면
업그레이드 후에도 계속 다시 로드되어 조용히 이전 빌드에 머무는 일이 없습니다.
JAVA_HOME이 설정되어 있지 않다면 JDK를 가리키도록 지정하세요:
JAVA_HOME=/path/to/jdk17 ./gradlew shadowJar
build/libs/reburp.jar (또는 Releases에서 다운로드한 reburp-*.jar)Burp에 reburp 탭이 나타나 모든 REST 호출이 발생하는 대로 표시됩니다.
각 행은 하나의 REST 호출입니다. 선택하면 API 요청과 응답, 그리고 reburp가 사용자를 대신해 대상에 보낸 요청과 응답이 표시됩니다.
로드 후 브라우저에서 열기:
스펙은 요청 및 응답 형태에 대한 진실의 원천입니다.
| 그룹 | 접두사 | 주요 기능 |
|---|---|---|
| Status | /api/status | 확장 정보, Burp 버전 |
| Proxy | /api/proxy/ | 히스토리, 검색, 주석, 인터셉트 토글, WebSocket 히스토리 |
| Site Map | /api/sitemap/ | 목록, 검색 |
| Scope | /api/scope/ | URL 스코프 확인, 스코프 규칙 추가/제거 |
| HTTP | /api/http/ | HTTP/1.1 및 HTTP/2 전송, 인증 토큰 주입, 파싱, diff, 파라미터, 리플렉션, 삽입 지점, 쿠키 |
| Messages | /api/http/message/ | 요청과 응답 검사 및 재작성: 헤더, 파라미터, 마커, MIME 타입, 타이밍 |
| Scanner | /api/scanner/ | 이슈, 감사/크롤 시작, 작업 상태 (Pro 전용) |
| Collaborator | /api/collaborator/ | 페이로드 생성, 인터랙션 폴링 (Pro 전용) |
| Repeater / Intruder | /api/repeater/, /api/intruder/ | Repeater와 Intruder로 요청 전송 |
| Request Engine | /api/http/engine/ | 고처리량 비동기 요청 엔진: 리소스 풀, 동시성 제한, 스로틀, 재시도, 실시간 통계, 일시정지/재개/취소, 결과 (Burp 2026.x) |
| Config | /api/config/ | 프로젝트 및 사용자 옵션 가져오기/설정, 작업 엔진 상태 |
| Match & Replace | /api/proxy/match-replace/ | 프록시 match-and-replace 규칙 목록, 추가, 제거 |
| Sessions | /api/sessions/ | 세션 처리 규칙 목록 및 삭제 (Burp에는 add-header 액션이 없음) |
| Engagement | /api/engagement/ | CSRF PoC 생성기, 콘텐츠 탐색, 참조 찾기, 디코더로 전송 |
| Bambda | /api/bambda/ | Bambda 스크립트 가져오기, 필터 체인 생성 |
| Organizer | /api/organizer/ | 항목 목록, Organizer로 요청 전송 |
| Issues | /api/issues/ | 사용자 정의 감사 이슈 생성 |
| Events | /api/events/ | 수동 트래픽 옵저버 켜기/끄기, 캡처된 이벤트 읽기 |
| Extension Data | /api/extension-data/ |
# 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"}'
REST 서버는 127.0.0.1에만 바인딩되지만, 포트는 인증이 없고 모든 오리진에
응답합니다. localhost:9090에 접근할 수 있는 모든 것 - 브라우저에 열린 웹 페이지 포함 - 이
Burp를 구동할 수 있습니다. 이 포트를 신뢰할 수 있는 로컬 전용으로 취급하고 루프백 외부로
절대 노출하지 마세요.
이 때문에 OS 명령 실행은 기본적으로 꺼져 있습니다. /api/utils/shell/execute와
/api/utils/shell/execute-raw는 Burp 자체 프로세스 환경에서 다음을 확인하지 않는 한 403을
반환합니다:
REBURP_ENABLE_SHELL=1
이것이 설정되면 포트에 접근할 수 있는 모든 오리진이 호스트에서 원격 코드 실행을 얻습니다.
이를 감수할 때만 활성화하세요. 모든 호출은 확장 출력 탭에 기록됩니다.
GET /api/utils/shell/status는 활성화 여부를 보고하며 활성화를 요구하지 않습니다.
"전체 Montoya API"라는 주장은 tools/api_coverage.py에 의해 기계적으로
검증되며, CI 빌드 워크플로가 모든 푸시에서 이를 실행하고 매핑 가능한
메서드가 노출되지 않은 채 남아 있으면 실패합니다. 동작은 로드된 확장에 대해 tools/smoke_test.py로
별도로 검증됩니다.
9090으로 하드코딩되어 있습니다. 필요하면 BurpRestApiExtension.kt에서 port를 변경하고 다시 빌드하세요.compileOnly입니다 - 번들되지 않으며 Burp가 런타임에 제공합니다.{ "error": "..." }를 반환합니다.OpenApiSpec.kt와 docs/의 프래그먼트로 구성됩니다. 라우트 그룹을 추가하려면
*Paths()와 *Schemas() 프래그먼트를 작성하고 docs/OpenApiSpecExtra.kt에 나열하세요.이슈와 풀 리퀘스트를 환영합니다. PR을 열기 전에 python3 tools/api_coverage.py와
./gradlew shadowJar를 실행해 주세요. 새로운 라우트 그룹은 문서가 완전하게 유지되도록
OpenAPI 프래그먼트와 함께 제공되어야 합니다.
| Burp 프로젝트 파일에 저장되는 타입 지정 키/값 저장소 |
| Preferences | /api/preferences/ | 타입별로 유지되는 확장 환경설정 |
| Logging | /api/logging/ | 확장 출력 및 오류 탭과 Burp 이벤트 로그에 기록 |
| Activity Log | /api/log/ | reburp 자체의 영구 호출 로그 조회 |
| AI | /api/ai/ | Burp AI 상태 및 채팅 (사용 가능한 경우) |
| Meta | /api/meta/ | Burp 버전 구성 요소, 확장 로드 정보, enum 어휘 |
| Utilities | /api/utils/ | URL 인코딩/디코딩, base64, 해시, JWT 디코딩, 랜덤 문자열, 압축 해제 |
| Numbers | /api/utils/number/ | 2진수, 8진수, 10진수, 16진수 및 임의 진법 간 변환 |
| JSON | /api/utils/json/ | 검증, 포인터로 읽기 및 편집, 구조 검사, 정규화 |
| Bytes | /api/utils/bytes/ | 바이트 버퍼 검색, 슬라이스, 추가, 할당 및 검사 |
| Ranking | /api/utils/rank | 각 교환이 얼마나 비정상적으로 보이는지로 프록시 히스토리 순위 지정 |
| Shell | /api/utils/shell/ | OS 명령 실행. 기본적으로 비활성화, 보안 참조 |