Burp Suite · 2025-12-29

Burp로 OAuth2 권한 부여 흐름 검증

Burp Suite를 활용해 OAuth2 권한 부여 흐름을 체계적으로 검증하는 방법과 체크리스트, 실무에서 유용한 설정 예시 및 흔한 취약점 대응을 초보자도 이해하기 쉬운 절차

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

서론: 왜 OAuth2 흐름을 검증해야 하는가

OAuth2는 현대 웹·모바일 인증의 핵심이다. 잘못된 구현은 권한 상승, 토큰 탈취 등 심각한 문제로 이어진다. 따라서 권한 부여 흐름을 체계적으로 검증해야 한다. 이 글에서는 Burp Suite를 중심으로 실제 점검 절차와 체크 포인트를 설명한다.

OAuth2 기본 흐름 요약

우선 주요 흐름을 간단히 정리한다. 클라이언트는 권한 부여 서버로 리다이렉트해 사용자 인증을 유도한다. 사용자가 승인하면 권한 코드(code)를 발급받아 토큰 교환을 요청한다. 발급된 액세스 토큰으로 리소스 서버에 접근한다. 각 단계에서 탈취·재사용·권한 오용 가능성이 존재한다.

Burp로 점검하기 전 준비

환경 설정

  • 브라우저 프록시 설정을 Burp로 지정한다.
  • HTTPS 복호화 설정을 하고 Burp 인증서를 설치해 SSL 통신을 복호화한다.
  • Target, Proxy, Intruder, Repeater 등 모듈 동작을 확인한다.

테스트 범위 정의

  • 권한 부여 코드(Authorization Code) 흐름
  • 임시 토큰(Implicit) 흐름
  • 리소스 소유자 비밀번호, 클라이언트 자격증명 흐름 등

권한 부여 코드 흐름 검증 절차

1. 인증 요청 캡처

클라이언트가 권한 부여 서버에 요청하는 리다이렉트 URL을 Burp로 캡처한다. 파라미터로 client_id, redirect_uri, scope, state 등이 포함되어야 한다. state 파라미터 유무와 예측 가능성은 중요한 검증 포인트다.

2. state 검증

state가 없거나 고정 값이면 CSRF 위험이 있다. Burp에서 요청을 복제해 state를 조작한 뒤 리다이렉트가 허용되는지 확인한다. 허용되면 공격자 임의의 권한 코드로 교체될 수 있다.

3. 권한 코드 수신 및 교환 단계 점검

권한 코드가 전달된 뒤 토큰 엔드포인트로의 POST 요청을 캡처한다. 클라이언트 시크릿이 전송되는지, TLS가 강제되는지 확인한다. 응답으로 access_token, refresh_token, token_type, expires_in 등이 반환된다.

POST /oauth/token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=abc123&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcb&client_id=client1&client_secret=SECRET_VALUE

위 예시에서 client_secret가 클라이언트 측 코드나 URL에 노출돼 있지 않은지 확인한다.

Burp를 이용한 공격 시나리오 테스트

토큰 재사용 및 탈취

  • 획득한 access_token을 다른 클라이언트나 IP에서 사용해 본다.
  • 토큰 바인딩이나 IP 제한이 없으면 재사용 가능 여부를 확인한다.

리다이렉트 검증 누락

redirect_uri를 미검증하면 공격자가 임의의 콜백으로 권한 코드를 전송할 수 있다. Burp에서 redirect_uri를 변경한 뒤 동작을 관찰한다.

토큰 발급 응답 검증

  • 응답에 민감한 정보(id_token 페이로드 등)이 불필요하게 포함되어 있지 않은지 확인한다.
  • refresh_token이 노출되면 장기적 권한 탈취 가능성이 있다.

자동화와 반복 테스트

동일한 요청을 여러 변수로 반복 검사하려면 Intruder를 활용한다. 예를 들어 state 값 다양성, redirect_uri 목록, 토큰 길이 변조 등 반복 실험에 유용하다. Repeater로는 수동 세부 검증을 수행한다.

# Repeater에서 토큰 재발급 시나리오 예시
POST /oauth/token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=REFRESH_TOKEN_VALUE&client_id=client1&client_secret=SECRET_VALUE

검증 체크리스트

  • state 파라미터 존재 및 난수화
  • redirect_uri 정적 화이트리스트 검증
  • TLS 강제 및 중간자 공격 방지
  • client_secret 노출 여부 확인
  • 토큰 생명주기 및 재사용 방지 정책 점검
  • 로그인 세션과 토큰의 분리 검사

공격 대응과 우선순위

가장 위험한 것은 토큰 탈취와 리다이렉트 검증 누락이다. 우선순위는 토큰 탈취 방지, state 검증, redirect_uri 고정 순이다. 또한 토큰 발급 시 과도한 권한(scope) 부여를 제한한다.

마무리: 현장에서의 적용 팁

Burp로 OAuth2 권한 부여 흐름을 검증할 때는 단계별로 캡처-조작-검증의 루프를 만든다. 작은 변화 하나가 큰 보안 구멍으로 이어질 수 있으므로 꼼꼼한 확인이 필요하다. 설명한 체크리스트를 바탕으로 반복 테스트를 수행하면 실무에서 바로 활용 가능한 검증 체계를 갖출 수 있다.

참고 사항

테스트는 반드시 허가된 환경에서 진행한다. 실서비스에 영향이 없도록 복제 환경 또는 허가된 테스트 계정으로 검증한다.

Burp OAuth2 테스트 OAuth2 권한 검사 Burp Burp 인증 흐름 테스트 Burp Suite OAuth2 테스트 OAuth2 보안 권한 검사 인증 흐름 검증