Studying Security

Cross Site Request Forgery(CSRF) 본문

Web

Cross Site Request Forgery(CSRF)

J4guar 2022. 7. 18. 14:34
728x90
반응형

Cross Site Request Forgery(CSRF)

이용자의 식별 정보가 포함된 쿠키

   → 클라이언트에서 보내진 요청이 이용자로부터 왔으며 요청에 이용자의 권한이 부여돼있음을 의미

 

따라서 임의 이용자의 쿠키를 사용할 수 있다면 임의 이용자의 권한으로 웹 서비스의 기능을 사용할 수 있습니다.

CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점으로 공격자는 임의 이용자의 권한으로 서비스 기능을 사용해 이득을 취할 수 있습니다.

 

img 태그를 사용하거나 웹 페이지에 입력된 양식을 전송하는 form 태그를 사용해 HTTP 요청을 보내면 HTTP 헤더인 Cookie에 이용자의 인증 정보가 포함됩니다.

<img src='https://bank.dreamhack.io/main-long.png'>

<form action="https://test.dreamhack.io/users/1" method="post">
	<input name="user">
	<input name="pass">
	<input type="submit">
</form>

 

CSRF 공격 성공 조건

  • 공격자가 작성한 악성 스크립트를 이용자가 실행해야 합니다.
    • 공격자가 이용자에게 메일을 보내거나 게시판에 글을 작성해 이용자가 이를 조회하도록 유도하는 방법 사용
    • 여기서 말하는 악성 스크립트는 HTTP 요청을 보내는 코드

 

HTML img 태그를 사용 (이미지의 크기를 줄여 이용자에게 들키지않고 임의 페이지에 요청 전송)

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

새로운 창을 띄우고, 현재 창의 주소를 옮기는 등의 행위 가능

/* 새 창 띄우기 */
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 요청을 보내는 것을 목적으로 하는 공격
    • 공격자는 악성 스크립트가 포함된 페이지에 접근한 이용자의 권한으로 웹 서비스의 임의 기능을 실행할 수 있습니다.

 

Reference

반응형

'Web' 카테고리의 다른 글

SQL Injection: DBMS  (0) 2022.07.18
Same Origin Policy(SOP)  (0) 2022.07.17
Cookie & Session  (0) 2022.07.16
Cross Site Script(XSS)  (0) 2022.07.15
Comments