Burp Suite로 CSRF 토큰 무효화 취약점 찾기
Burp Suite를 활용해 CSRF 토큰의 재사용·무효화 처리 문제를 점검하는 절차. 설정, 테스트 방법, 판단 기준과 대응 방안을 포함한 절차
목차
소개
이 글은 Burp Suite로 웹 애플리케이션의 CSRF 토큰 무효화 취약점을 점검하는 실무적 절차를 설명한다. 개념부터 도구 설정, 테스트 시나리오와 취약 판정 기준, 권장 대응까지 순서대로 다룬다. 보안 초보자도 따라오기 쉽도록 단계별로 설명한다.
CSRF 토큰 무효화 취약점 개념
CSRF와 토큰의 역할
CSRF(Cross-Site Request Forgery)는 사용자의 인증 상태를 악용해 원치 않는 요청을 서버에 보내는 공격이다. 이를 방지하기 위해 서버는 폼이나 요청에 CSRF 토큰을 삽입하고, 서버는 요청 시 토큰의 유효성을 검사한다. 안전한 구현은 토큰의 재사용을 막거나 세션별·요청별 유효성을 보장한다.
무효화 취약점이란
토큰 무효화 취약점은 다음과 같은 경우를 말한다.
- 토큰이 재사용 가능해 동일 토큰으로 여러 요청을 성공시킬 수 있는 경우
- 토큰 검증이 느슨하거나 토큰 없이도 요청이 수락되는 경우
- 토큰 발급과 검증 로직이 분리되어 타이밍 공격으로 우회 가능한 경우
준비 사항
필수 도구
- Burp Suite (Community 또는 Professional)
- 웹 브라우저와 브라우저 프록시 설정
- 테스트 대상 애플리케이션 접근 권한(합법적 범위)
Burp 기본 설정
브라우저에서 Burp 프록시를 사용하도록 설정한 뒤, 대상 사이트에 접속하여 요청과 응답을 캡처한다. Proxy → HTTP history에서 토큰이 포함된 요청을 찾는다. 이후 Repeater와 Intruder를 활용해 토큰 동작을 관찰한다.
테스트 절차
1. 토큰 식별
- 폼 파라미터 또는 쿠키에서 CSRF 토큰 이름을 찾는다(e.g. csrf_token, _csrf).
- 토큰 값 형식(무작위 문자열, Base64, JWT 등)을 확인한다.
2. 토큰 재사용 테스트
동일 토큰으로 여러 번 요청을 보내보아 서버가 재사용을 허용하는지 확인한다. Burp Repeater를 사용해 한 번 캡처한 요청을 반복 전송한다.
POST /account/update HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Cookie: session=abcd1234
name=Alice&csrf_token=XYZ12345
위 요청을 Repeater에서 여러 번 전송한다. 응답 코드와 메시지를 비교해 두 번째 요청부터 차단되는지 확인한다.
3. 토큰 무효화 시점 테스트
토큰이 발급된 후 로그아웃, 세션 재생성, 또는 다른 요청에 의해 무효화되는지를 검사한다. 다음 절차를 수행한다.
- 토큰을 얻는다.
- 로그아웃 또는 세션 리셋을 유도한다.
- 이전 토큰으로 요청을 시도한다.
4. 변조·누락 테스트
토큰을 빈값으로 하거나 일부를 변경해 서버의 검증 강도를 확인한다. 또한 토큰 파라미터 자체를 제거해도 요청이 처리되는지 관찰한다.
5. 자동화·대량 테스트(선택)
재사용이나 변조 가능성이 의심될 경우 Intruder로 대량 요청을 보내 응답 차이를 통계적으로 분석한다. Professional 버전의 세션 핸들링 옵션을 이용하면 더 정교한 재현이 가능하다.
취약 판정 기준
- 동일 토큰으로 여러 요청이 성공하면 재사용 허용으로 취약.
- 로그아웃·세션 재생성 후에도 이전 토큰이 유효하면 무효화 실패.
- 토큰 없는 요청이 정상 처리되면 검증 로직 부재 또는 우회 가능성 존재.
권장 대응 방안
서버 측 방어
- 토큰을 서버 저장소(세션)에 연동해 사용하고 한 번 사용하면 즉시 무효화한다.
- 토큰 발급 시 강력한 난수성을 사용하고, 만료 시간을 설정한다.
- 중요 작업은 SameSite 쿠키와 함께 이중 제출 쿠키(Double Submit Cookie) 또는 서버 검증을 병행한다.
운영·검토
정기적으로 CSRF 관련 로직을 코드 리뷰와 함께 점검하고, 자동화된 테스트로 회귀 검사를 수행한다.
마무리
Burp CSRF 토큰 무효화 점검은 간단한 절차로도 취약점을 발견할 수 있다. 설정과 테스트 시나리오를 체계적으로 적용하면 재사용, 무효화 실패, 검증 미비 등 핵심 문제를 파악할 수 있다. 발견된 문제는 토큰 관리와 검증 강화로 해결 가능하다.