본문 바로가기
정리/web hacking

[web] Cross Site Request Forgery (CSRF)

by 멘멘 2023. 5. 28.

Cross Site Request Forgery (CSRF)

임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점.

사이트 간 요청 위조. 이용자가 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격.

 

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

악성 스크립트 : HTTP 요청을 보내는 코드. HTML이나 Javascript로 작성가능. 주로 img나 form 태그를 이용함.

 

img 태그 예시

<img src='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');

 

XSS와 CSRF의 비교

  XSS CSRF
공통점 = 모두 클라이언트를 대상으로 하는 공격.
= 이용자가 악성스크립트가 포함된 페이지에 접속하도록 유도해야 함.
차이점 = 인증 정보인 세션 및 쿠키 탈취를 목적으로 하는 공격.
= 공격할 사이트의 오리진에서 스크립트 실행
= 이용자가 임의 페이지에 http 요청을 보내는 것을 목적으로 하는 공격.
= 공격자는 악성 스크립트가 포함된 페이지에 접근한 이용자의 권한으로 웹 서비스의 임의 기능 실행 가능.

 

퀴즈

더보기

1) 서버에서 HTTP의 GET 메소드가 아는 POST 메소드로 데이터를 받으면 CSRF에 안전하다 (X)

2) CSRF 공격이 불가능할 떄 XSS 공격도 불가능하다 (X)

3) 브라우저는 CSRF 취약점을 방지하기 위한 보안 메커니즘을 제공한다 (O)

4) 서버에서 이용자를 식별하기 위해 쿠키를 사용하고 있어야 CSRF 취약점으로 공격할 수 있다 (O)

실습

더보기

1

xss 문제와 비슷하게 아래 코드를 작성하면 memo에 flag가 출력되었다.

<img src=/admin/notice_flag?user_id=admin>

2

flag에서 <img src=/change_password?pw=admin>을 입력하면

admin 계정으로 로그인이 가능하여 flag를 볼 수 있다.

(사실 좀 헤매서 여러 글 참고를 했다)

'정리 > web hacking' 카테고리의 다른 글

[Beebox] HTML injection - Reflected(POST), Stored(Blog)  (0) 2023.09.16
[beebox] 설치 및 html injection  (0) 2023.07.16
[XSS game] level 3, 4, 5  (0) 2023.07.09
[XSS game] Level 1, Level 2  (0) 2023.07.02
[web] Cross Site Scripting (XSS)  (0) 2023.05.21

댓글