TeamH4C

[빡공팟 5기] W4 : Web Hacking 로드맵 - STAGE 4 - CSRF

이유갬 2022. 10. 14. 13:10

ClientSide : CSRF

 

CSRF(Cross Site Request Forgery)란?

사이트 간 요청을 위조하는 것으로 이용자를 속여서 의도치 않은 요청에 동의하게 하는 공격이다.

그럴듯한 웹 페이지를 만들어 이용자의 입력을 유도한 후, 이용자가 값을 입력하면 이를 은행이나 중요 포털 사이트 등으로 전송하여

마치 이용자가 동의한 것 같은 요청을 발생시킨다.

만약, 이용자가 자동 로그인의 기능을 사용하여 브라우저에 세션 쿠키를 저장하고 있었다면,

실제로 계좌 이체가 발생하거나 비밀번호 초기화가 발생할 수 있다.

 

CSRF(Cross Site Request Forgery)의 동작

CSRF 공격에 성공하기 위해서는 공격자가 작성한 악성 스크립트를 이용자가 실행해야 한다.

이는 공격자가 이용자에게 메일을 보내거나 게시판에 글을 작성하여 이용자가 이를 조회하도록 유도하는 방법이 있다.

여기서 말하는 악성 스크립트는 HTTP 요청을 보내는 코드로, HTML 또는 Javascript 를 통해 작성할 수 있다.

이미지를 불러오는 img 태그, 웹 페이지에 입력된 양식을 전송하는 form 태그를 사용한다.

이 두 개의 태그를 사용하여 HTTP 요청을 보내면 HTTP 헤더인 쿠키에 이용자의 인증 정보가 포함된다.

 

(실습)

CSRF-2 문제를 통해 실습을 해보았다.

 

플래그를 획득했다!

실습을 한 과정은,

 

1. 문제 페이지에 들어가서 메뉴를 확인해서 어디 페이지에서 취약점이 발생하는지 살펴보았다.

2. vuln(csrf) page 로 들어가보니 스크립트는 필터링에 걸려 태그가 동작하지 않았다.

3. flag 페이지에 들어가니 파라미터를 입력하는 공간이었다. 여기도 XSS 문제와 마찬가지로 타인이 URL 을 눌렀을 때를 가정한 것이다.

4. login 은 로그인 페이지이다.

5. 문제 페이지에서는 위와 같은 내용만 파악할 수 있었고, 결정적으로 플래그를 획득할 수 있었던 건 소스 코드 분석이었다.

6. CSRF 공격은 악의적인 스크립트를 삽입하여 URL 을 작성하고 이용자가 해당 URL 을 눌러 의도치 않은 요청으로 인해 발생하는 것임을 생각하고 익스플로잇을 시도했고 생각한 대로 취약점이 발생하여 플래그를 획득할 수 있었다!