IT/영어 공부노트

Cross Site Request Forgery : CSRF 정리 본문

🛡️ security/web

Cross Site Request Forgery : CSRF 정리

소저어엉 2023. 8. 2. 10:50
반응형

CSRF(Cross Site Request Forgery)

이용자를 속여서, 의도치 않은 요청에 동의하게 하는 공격이다.
ex) 웹 페이지를 만들어 이용자의 입력을 유도해, 입력된 값을 은행 등의 사이트로 전송해 이용자가 동의한 것 같은 요청을 발생시킨다 ((비밀번호 바꾸기, 돈 송금, 이메일 주소 변경 등))

 

웹 서비스는 쿠키 세션을 사용해 이용자를 식별한다.
임의 사용자의 쿠키를 사용할 수 있다? -> 임의 이용자의 권한으로 웹 서비스의 기능을 사용할 수 있다.

 

Cross Site Request Forgery 동작

CSRF 공격에 성공하려면, 공격자가 작성한 악성 스크립트(HTTP 요청을 보내는 코드)를 이용자가 실행해야 한다.

  • 공격자가 이용자에게 메일을 보내기
  • 게시판에 글을 작성해 이를 조회하도록 유도

공격 스크립트는 HTML 또는 Javascript를 통해 작성할 수 있다.

 

- HTML img 태그 공격 코드 예시

http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337' width=0px height=0px>

- Javascript 공격 코드 예시

/* 새 창 띄우기 */
window.open('http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337');
/* 현재 창 주소 옮기기 */
location.href = 'http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337';
location.replace('http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337');

1. 애플리케이션 내에 공격자가 공격을 유발해야 할만한 액션이 있어야 한다. (ex 암호변경)

2. HTTP 요청을 발행해야 하며 애플리케이션은 세션 쿠키에만 의존하여 요청한 사용자를 식별해야한다. 

3. 공격자가 값을 결정하거나 추측할 수 없는 매개 변수가 포함되어 있지 않아야 한다. (ex 전 비밀번호 묻기)

 

 CSRF 익스플로잇은 Burp Suite Professional 에 내장된 CSRF PoC 생성기를 사용해서 작성할 수 있다. 

XSS와 CSRF의 차이

공통점 - 두 개의 취약점은 모두 클라이언트를 대상으로 하는 공격이며, 이용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도해야 한다.

차이점 - 공격의 목적이 다르다. (XSS: 세션 및 쿠키 탈취, CSRF: 이용자가 임의 페이지에 HTTP 요청을 보내기)


참조

https://dreamhack.io/lecture/courses/172

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

https://velog.io/@gwanuuoo/CSRF-공격과-방어-기법

반응형