Burp Suite · 2026-05-06

Burp로 요청 자동 수정 스크립트 워크플로

Burp로 가로챈 요청을 스크립트로 자동 수정하고 연속 처리하는 방법, 샘플 코드와 검증 절차, 운영 시 고려사항과 롤백 전략까지 정리한 프로세스

작성일 : 2026-05-06 ㆍ 작성자 : 관리자
post
목차

소개

Burp Suite로 테스트 중 가로채진 요청을 수동으로 수정하면 시간이 많이 소모된다. 반복되는 규칙이 있다면 스크립트로 자동화하는 편이 효율적이다. 이 글은 Burp 자동 요청 수정과 Burp 스크립트 워크플로 개념을 친절하게 정리한다. 처음 접하는 사람도 이해하기 쉽도록 단계별로 설명한다.

개념과 준비

핵심 개념

목표는 Burp로 잡힌 요청을 조건에 따라 자동으로 수정하고, 필요 시 연속된 후속 작업을 수행하는 것이다. 이를 위해 다음 요소가 필요하다.

  • 스크립트를 실행할 엔진(Jython, Java, JavaScript 등)
  • Burp Extender API 이해
  • 요청 패턴과 수정 규칙 정의
  • 테스트와 롤백 절차

사전 준비

  • Burp Suite 최신 버전
  • Jython 플러그인(파이썬 선호 시)
  • 간단한 HTTP 프로토콜 지식
  • 테스트 대상의 비파괴 환경

워크플로 설계

워크플로는 큰 흐름으로 보면 다음과 같다. 각 단계는 명확한 입력과 출력을 가진다.

  • 1. 가로채기(Intercept): 요청 수집 지점 설정
  • 2. 조건 판별(Match): 어떤 요청을 자동 수정할지 결정
  • 3. 수정(Transform): 헤더·바디·쿼리 문자열 수정
  • 4. 후처리(Post-processing): 로깅, 재전송, 체인링크 호출
  • 5. 검증(Verify): 수정된 요청의 응답 확인과 시그널 수집

설계 팁

  • 규칙은 단일 책임 원칙을 따르게 분리
  • 로깅 수준을 조절해 성능 영향 최소화
  • 테스트 모드를 만들어 실제 전송 전 검증 가능하게 구성

Burp 스크립트 예제 (Jython)

아래 예제는 Burp의 IHttpListener를 사용해 들어오는 요청을 검사하고, 특정 호스트와 경로에 대해 바디의 값을 치환하는 간단한 스크립트이다. 이 코드는 교육 목적이며 실제 운영 전 충분한 테스트가 필요하다.

from burp import IBurpExtender, IHttpListener

class BurpExtender(IBurpExtender, IHttpListener):
    def registerExtenderCallbacks(self, callbacks):
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.setExtensionName("AutoModify")
        callbacks.registerHttpListener(self)

    def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
        if not messageIsRequest:
            return

        request = messageInfo.getRequest()
        analyzed = self._helpers.analyzeRequest(request)
        headers = list(analyzed.getHeaders())
        body_offset = analyzed.getBodyOffset()
        body = request[body_offset:]
        body_str = self._helpers.bytesToString(body)

        # 조건: 특정 호스트와 경로
        host = messageInfo.getHttpService().getHost()
        path = analyzed.getUrl().getPath()
        if host == 'target.example.com' and path.startswith('/api/v1'):
            # 간단한 치환 예시
            new_body = body_str.replace('old_value', 'new_value')
            new_request = self._helpers.buildHttpMessage(headers, new_body)
            messageInfo.setRequest(new_request)

코드 설명:

  • registerExtenderCallbacks: Burp에 확장 등록
  • processHttpMessage: 요청을 검사하고 조건이 맞으면 수정
  • bytesToString / buildHttpMessage: 바이트와 문자열 변환 도구

테스트와 검증

스크립트를 만들었으면 다음 절차로 검증한다.

  • 1) 개발 환경에서 테스터 요청으로 동작 확인
  • 2) 로그로 원본과 수정본 비교
  • 3) 응답 상태와 페이로드 무결성 체크
  • 4) 성능 영향 평가(요청 처리 시간 측정)
  • 5) 예외 케이스(잘못된 바디, 인코딩 문제) 테스트

테스트 모드는 수정 대신 시뮬레이션 로그를 남기게 해 실제 트래픽을 보호하는 것이 안전하다.

운영 시 고려사항

  • 안전성: 민감 데이터가 변조되지 않도록 필터링
  • 롤백: 문제 발생 시 원본 요청을 복원하는 기능
  • 로깅 정책: 개인정보 포함 여부를 고려하여 익명화
  • 버전 관리: 스크립트 변경을 추적할 수 있는 저장소 사용
  • 성능: 고부하 환경에서는 비동기 처리 또는 샘플링 적용

확장 아이디어

보다 복잡한 워크플로가 필요하면 다음을 고려한다.

  • 외부 규칙 엔진 연동(정규식, JSON 기반 룰셋)
  • 요청 체이닝: 수정 후 추가 요청 자동 전송
  • 대시보드 통합으로 상태와 통계 시각화
  • 테스트 케이스 자동 생성 및 회귀 검증 파이프라인 연동

결론

Burp 요청 자동화는 반복 작업을 줄여 생산성을 높인다. 핵심은 안정적인 조건 판별과 안전한 테스트 절차이다. 위 예제와 워크플로를 바탕으로 단계적으로 확장하면 운영 환경에서도 신뢰성 있게 사용할 수 있다. 마지막으로 항상 비파괴 테스트 환경에서 충분히 검증하는 절차를 권장한다.

Burp 자동 요청 수정 Burp 스크립트 워크플로 Burp 요청 자동화 Burp Extender Jython Burp 스크립트 HTTP 요청 변조 보안 테스트 자동화 워크플로 설계