Burp Suite · 2025-12-26

Burp로 REST와 GraphQL API 보안 스캔하기

Burp Suite를 이용해 REST와 GraphQL API의 취약점을 체계적으로 확인하는 방법과 설정·검증 절차

작성일 : 2025-12-26 ㆍ 작성자 : 관리자
post
목차

개요

API 보안은 웹 애플리케이션 보안의 핵심 영역이다. REST와 GraphQL은 요청 형식과 취약점 유형이 달라서 각각에 맞춘 접근이 필요하다. 이 글에서는 Burp Suite를 활용해 REST API와 GraphQL을 스캔하는 준비부터 검사 흐름, 결과 확인까지 실무에서 바로 적용 가능한 절차를 설명한다.

사전 준비

필수 도구와 환경

  • Burp Suite (Professional 권장): 자동 스캐너와 확장 기능 활용.
  • 브라우저 프록시 설정: Burp 프록시를 통해 API 트래픽 가로채기.
  • 테스트용 인증 토큰이나 계정: 권한이 허용된 범위에서 사용.

안전한 테스트 원칙

  • 테스트 대상은 허가된 환경에서만 수행.
  • 생산 데이터 변경을 최소화하고 백업을 확보.

REST API Burp 설정

프록시로 트래픽 캡처

브라우저 또는 API 클라이언트(예: Postman)에서 Burp 프록시를 통해 요청을 전달하면 인터셉트로 요청을 확인하고 수정할 수 있다. 인증 헤더와 쿠키를 유지하면서 요청을 반복하는 것이 중요하다.

Scanner와 Repeater 활용

  • 자동 스캔: Burp 스캐너로 일반적인 취약점(XSS, SQLi, 인증 취약점 등)을 탐지.
  • 수동 검사: Repeater로 요청을 조작해 응답 변화를 관찰.

예시: REST POST 요청 캡처 후 Repeater로 재전송

POST /api/v1/users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJ...token
Content-Type: application/json

{"username":"test","email":"test@example.com"}

GraphQL 스캔 전략

차이점 파악

GraphQL은 단일 엔드포인트로 다양한 쿼리와 변형(mutation)을 처리한다. 그 결과 공격 표면이 쿼리 정의와 입력 값에 집중된다. 쿼리 구조를 이해하면 과도한 데이터 노출, 권한 우회, 인젝션 취약점 등을 발견하기 쉽다.

쿼리 캡처와 분석

Burp에서 GraphQL 요청을 잡아 쿼리 필드와 변수를 확인한다. 쿼리가 복잡하면 구조를 단순화하거나 변수를 조작해 응답 차이를 관찰한다.

예시: GraphQL 쿼리

POST /graphql HTTP/1.1
Host: api.example.com
Content-Type: application/json

{"query":"query getUser($id: ID!) { user(id: $id) { id name email } }","variables":{"id":"1"}}

Burp에서 GraphQL을 효과적으로 스캔하는 방법

  • 스키마 추출: 가능한 한 많은 쿼리와 변수를 수집해 공격 표면을 구성.
  • 파라미터 변조: 변수에 예상치 못한 값(특수문자, 큰 숫자, 빈 값 등)을 넣어 오류나 정보 노출 관찰.
  • 권한 검증: 다른 권한의 토큰으로 민감 데이터 접근 시도.
  • 복합 요청 테스트: 깊은 중첩 쿼리로 시간 기반 문제나 리소스 과다 사용 확인.

자동화와 확장 기능 활용

Burp BApp Store나 Extender API로 GraphQL 전용 확장을 적용하면 스키마 파싱, 쿼리 생성, 자동 변조 등 반복 작업을 줄일 수 있다. 단, 확장 사용 시 신뢰 가능한 출처에서 다운로드하고 최신 버전을 유지한다.

결과 해석과 우선순위

취약점 분류

  • 심각도 높은 항목: 인증 우회, 권한 상승, 민감 데이터 노출.
  • 중간 항목: 입력 검증 부족으로 인한 주입, 정보 노출 가능성.
  • 낮은 항목: 에러 메시지의 불필요한 디버그 정보 등.

보고서 작성 시 포함할 항목

  • 취약한 요청과 응답 스니펫.
  • 재현 단계 및 영향 범위.
  • 권장 완화 방법(입력 검증, 권한 체크, 쿼리 복잡도 제한 등).

실무 팁

  • 인증 토큰은 테스트마다 갱신하며 로그에 남기지 않음.
  • 대규모 스캔은 서비스 성능에 영향을 줄 수 있으므로 비업무 시간에 수행.
  • GraphQL 스키마 변화에 맞춰 스캔 시나리오를 주기적으로 업데이트.

결론

REST와 GraphQL은 각각 다른 접근법이 필요하지만 Burp Suite의 기본 기능과 확장을 적절히 조합하면 체계적인 보안 검사가 가능하다. 프록시로 트래픽을 확보하고, 자동 스캔과 수동 조작을 병행하며 결과를 우선순위화하면 실무에서 유의미한 발견을 기대할 수 있다.

Burp API 테스트 Burp GraphQL 스캔 REST API Burp 설정 API 보안 GraphQL 보안 Burp Suite API 스캐닝 보안테스트