Burp Suite · 2026-04-15

Burp로 엔드포인트 인벤토리 자동 생성

Burp Suite의 사이트맵과 로그를 활용해 엔드포인트를 수집·정리하고 중복 제거, 분류, CSV/JSON 출력까지 연결한 워크플로우

작성일 : 2026-04-15 ㆍ 작성자 : 관리자
post
목차

개요

웹 보안 평가에서 엔드포인트 목록은 우선순위와 범위 설정에 핵심 역할을 한다. Burp Suite는 프록시 캡처, 사이트맵, 스캐너를 통해 풍부한 URL 정보를 제공한다. 이 글은 Burp의 출력을 기반으로 엔드포인트 인벤토리를 자동으로 생성하는 전체 흐름을 설명한다. 처음 접하는 사람도 따라올 수 있도록 단계별로 풀어 놓았다.

사전 준비 및 전제 조건

  • Burp Suite Professional 또는 Community에서 프록시 설정과 사이트맵 사용법에 대한 기본 이해
  • 브라우저 프록시 연결을 통해 대상 애플리케이션의 트래픽 캡처 가능 환경
  • 간단한 스크립트 실행을 위한 Python 환경(또는 선호하는 스크립트 언어)

전체 흐름 요약

프로세스는 크게 네 단계로 구성된다. 트래픽 캡처 -> 자동 크롤링 및 스캔 -> 사이트맵 추출 -> 후처리 및 형식 변환. 각 단계는 독립적으로 실행되며, 필요에 따라 병행 또는 반복이 가능하다.

1. 트래픽 캡처와 탐색

프록시 설정과 수집

브라우저와 Burp 프록시를 연결하면 모든 HTTP/HTTPS 요청이 사이트맵에 기록된다. 이 방식은 수동 탐색과 자동화 도구를 모두 수용한다. 일반적으로 로그인 시나리오를 먼저 실행해 인증 토큰이 필요한 엔드포인트까지 캡처하는 것이 좋다.

크롤러와 스캐너 적용

Burp의 Spider 또는 Scanner를 사용하면 링크와 폼을 따라 추가 엔드포인트를 발견할 수 있다. 스캐너 실행 시에는 범위 정책을 설정해 의도치 않은 대상에 대한 요청을 방지한다. Passive 스캔으로 수집 후 Active 스캔을 제한적으로 적용하는 방식이 안전하다.

2. 사이트맵에서 엔드포인트 추출

탐색이 완료되면 Target > Site map 탭에서 발견된 항목을 검토한다. 여기에는 도메인별, 경로별로 정렬된 요청이 포함된다. 우선순위와 중복을 줄이기 위해 URL 정규화가 필요하다. 예를 들어 쿼리 파라미터 순서 변경, 세션 토큰 제외 등을 규칙으로 설정한다.

파일로 저장하기

Site map에서 우클릭 후 "Save items" 또는 HTTP history에서 필요한 항목만 선택해 저장한다. 저장 형식은 텍스트 또는 XML 등으로 가능하다. 자동화의 핵심은 이 저장 파일을 후속 스크립트가 읽을 수 있도록 일관된 포맷으로 내보내는 것이다.

3. 후처리: 정규화, 중복 제거, 분류

저장한 URL 목록은 그대로 사용하면 중복과 비효율이 발생한다. 따라서 다음 기준으로 후처리한다.

  • 정규화: 스키마, 도메인, 경로, 쿼리 파라미터 정리
  • 중복 제거: 동일 경로 또는 템플릿화 가능한 경로 병합
  • 분류: 정적 리소스, API 엔드포인트, 인증 필요 여부 등 태깅

이 작업은 스크립트를 통해 자동화하는 것이 효과적이다. 아래는 간단한 예시 스크립트로, Burp에서 내보낸 URL 리스트를 읽어 정규화하고 CSV로 저장한다.

#!/usr/bin/env python3
import csv
import re
from urllib.parse import urlparse, parse_qs, urlencode

input_file = 'burp_urls.txt'  # Burp에서 내보낸 URL 목록
output_file = 'endpoints_inventory.csv'

def normalize(url):
    u = urlparse(url.strip())
    scheme = u.scheme or 'http'
    netloc = u.netloc
    path = re.sub(r'/+', '/', u.path)
    # 쿼리 정렬 및 민감 데이터 제거(예시)
    qs = parse_qs(u.query)
    qs = {k: v for k, v in qs.items() if not k.lower().startswith('token')}
    q = urlencode(sorted((k, v[0]) for k, v in qs.items())) if qs else ''
    return f"{scheme}://{netloc}{path}" + (f"?{q}" if q else '')

seen = set()
with open(input_file, 'r', encoding='utf-8') as fin, open(output_file, 'w', newline='', encoding='utf-8') as fout:
    writer = csv.writer(fout)
    writer.writerow(['url', 'path', 'type'])
    for line in fin:
        if not line.strip():
            continue
        n = normalize(line)
        if n in seen:
            continue
        seen.add(n)
        p = urlparse(n).path
        t = 'api' if '/api/' in p or p.endswith('.json') else 'page'
        writer.writerow([n, p, t])

4. 결과 검증과 활용

생성된 CSV나 JSON은 업무 도구로 연계된다. 취약점 스캐너의 범위 정의, 리스크 평가, 리그레션 테스트 케이스 생성 등에 활용할 수 있다. 자동화 결과는 항상 샘플을 검토해 오탐과 중복이 제거되었는지 확인하는 과정이 필요하다.

자동화 확장 포인트

추가로 고려할 수 있는 자동화 요소는 다음과 같다.

  • 정규식 기반 URL 템플릿 추출으로 파라미터화
  • 엔드포인트별 응답 코드 및 메서드 통계 수집
  • CI 파이프라인과 연동해 정기 인벤토리 갱신
  • Burp Extender나 외부 API를 통한 실시간 연동

마무리

Burp Suite의 사이트맵과 프록시 로그는 엔드포인트 인벤토리 자동화의 출발점이다. 캡처, 정규화, 중복 제거, 분류, 출력의 흐름을 구축하면 실무에서 반복 작업을 줄이고 취약점 분석의 정확도를 높일 수 있다. 위 절차를 기본 템플릿으로 삼아 환경에 맞게 규칙을 조정하면 보다 안정적인 인벤토리 관리가 가능하다.

Burp 엔드포인트 수집 Burp 자동 인벤토리 생성 Burp 사이트맵 엔드포인트 Burp Suite 엔드포인트 인벤토리 사이트맵 추출 CSV 변환 웹 취약점 분석