상세 컨텐츠

본문 제목

CSRF, CSRF에 대해

취약점 연구/연구

by 8lu3sh311 2025. 8. 2. 18:41

본문

주요정보통신기반시설(2021) 가이드에는 CSRF 취약점이 다음으로 정의되어 있다.

사용자의 신뢰(인증) 정보 내에서 사용자의 요청(Request)을 변조함으로써 해당 사용자의 권한으로 악의적인 공격을 수행할 수 있음

 

또한, 점검 방법은 다음과 같이 명시되어 있다.

 

Step 1) XSS 취약점이 존재하는지 확인

Step 2) 등록 및 변경 등의 데이터 수정 기능의 페이지가 있는지 조사함

Step 3) 데이터 수정 페이지에서 전송되는 요청(Request) 정보를 분석하여 임의의 명령을 수행하는 스크립트 삽입 후 해당 게시글을 타 사용자가 열람하였을 경우 스크립트가 실행되는지 확인

 

 

반면에, PortSwigger 공식 페이지에서 CSRF 점검 방법은 조금 다르게 설명하고 있다.

https://portswigger.net/web-security/csrf

 

Web Application Security, Testing, & Scanning - PortSwigger

PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.

portswigger.net

 

CSRF 핵심 조건(Portswigger 페이지에서 가져옴)

  • 관련 동작. 공격자가 애플리케이션 내에서 유도할 만한 동작이 존재합니다. 이는 권한이 부여된 동작(예: 다른 사용자의 권한 변경)이거나 사용자별 데이터에 대한 동작(예: 사용자 비밀번호 변경)일 수 있습니다.
  • 쿠키 기반 세션 처리. 이 작업을 수행하려면 하나 이상의 HTTP 요청을 발행해야 하며, 애플리케이션은 요청을 보낸 사용자를 식별하기 위해 세션 쿠키에만 의존합니다. 세션을 추적하거나 사용자 요청을 검증하는 다른 메커니즘은 없습니다.
  • 예측할 수 없는 요청 매개변수가 없어야 합니다. 해당 작업을 수행하는 요청에는 공격자가 값을 확인하거나 추측할 수 없는 매개변수가 포함되어서는 안 됩니다. 예를 들어, 사용자에게 비밀번호를 변경하도록 할 때 공격자가 기존 비밀번호의 값을 알아야 하는 경우에는 이 함수가 취약하지 않습니다.

 

위 두 설명 중 어떤 설명이 올바르다 할 수 있을까??

 

먼저, 아래는 CSRF 공격 흐름을 도식화한 것이다.

출저 : Chatgpt

 

 

1. 공격자는 사용자에게 Malicious Website에 접근하도록 유도한다.

2. Malicious Website 내 CSRF 구문이 동작하여 Web Server로 CSRF Request가 전송된다.

3. 웹 서버가 CSRF Request를 정상적인 요청과 구분하지 못하며, 정상 요청으로 간주하고 처리한다. (이 때, 사용자는 Web Server에 로그인이 되어 있는 상태이며 사용자의 세션 및 쿠키가 같이 보내진다는 가정)

 

따라서, CSRF는 웹 서버에서 CSRF Request와 정상 Request를 구분하지 못하여 송금, 명세서 발송 등이 발생하는 문제이다. 

 

송금 기능을 통해 공격자의 계좌로 설정하거나, 명세서 발송 기능에서 공격자의 이메일로 설정하여 CSRF PoC를 제작하고, 이를 다른 웹사이트에 구현하여 송금 및 명세서 발송이 가능할 경우 CSRF공격에 취약하다로 보는 것이 정확하다.

 

이 관점에 주요정보통신기반시설 가이드를 다시보면, CSRF 취약점은 Malicious Website가 해당 페이지 내에 작성 가능하다고 가정하여 점검을 하는 방법으로 판단된다. 

 

다만, CSRF는 굳이 Malicious Website를 공격 대상 페이지에 만들지 않아도 된다. 만약 사용자가 대상 페이지에  로그인이 되어 있는 상태라고 가정해보자. 

 

CSRF 폼 자체는 HTML이나 이외 방법으로 가이드를 사칭한 방법으로 블로그에 만들 수도 있을 것이며, 신뢰될만한 타 사이트의 특정 링크를 공유하여 접속하도록 유도한 뒤 CSRF가 실행되도록 할 수 있을 것이다.

 

즉, CSRF의 필수 조건에는 XSS가 포함되지 않으며, 아예 다른 취약점으로 분류된다. 다만, 대상 패이지 내 XSS 사용이 가능하다면, CSRF 공격 방어를 무력화 할 수 있는 방법으로 사용될 수는 있다.

(CSRF의 공격 방어는 쿠키 설정인 same-site나 헤더의 referer,origin 등 동일 사이트에서 가져온 요청만 허용하는 방식으로 적용한 경우가 있음)

 

 

 

 

 

p.s.) CSRF 공격을 XSS의 연장선으로 이해하시는 분들이 많길래... 간단히 작성해봤습니다.

 

 

위 글에 대해 틀린 점이 있을 경우, 과감히 태클 부탁드립니다.

 

 

 

 

'취약점 연구 > 연구' 카테고리의 다른 글

Wordpress 공통 취약점 (xmlrpc.php, wp-cron.php)  (3) 2025.08.06
BPFDoor 분석 및 실습  (2) 2025.07.31

관련글 더보기