본문 바로가기

Web Hacking

[Web] CSRF란 무엇인가?

 

 

 

CSRF (Cross-Site Request Forgery)

 


 

csrf는 클라이언트 사이드 취약점으로 교차 사이트 요청 위조 라고 부른다.

 

즉, 임의 이용자의 권한으로 HTTP 요청을 보내는 것을 말한다.

 

 

 

CSRF 동작


 

 

HTML태그와 JavaScript 코드를 이용할 수 있다.

 

1. HTML 태그 

 

<img src="https://example.com/money?send=1000000" width=0px height=0px>

 

👆 img태그를 이용할 수 있다. img태그는 이미지 url에 있는 이미지를 불러오는 태그이므로 이미지를 불러오기 위해선 해당 url에 get 요청을 보내게 된다. 즉, HTTP 요청을 보낼 수 있다.

 

 

2. JavaScript 

 

window.open("https://example.com/money?send=1000000");

 

👆 새 창을 여는 코드나 locatioj.href 등과 같은 코드를 이용하면 원하는 url에 HTTP 요청을 보낼 수 있다.

 

 

 

XSS와의 차이점


 

사실 XSS와 공격 원리는 똑같다고 볼 수 있다. CSRFXSS 모두 악성 스크립트를 작성하고 웹 페이지에 이를 삽입하여 임의 사용자가 해당 스크립트를 실행 시키는 환경을 만든다.

 

둘의 차이점이라고 하면 목적에서 찾을 수 있다.

 

XSS임의 사용자의 권한을 탈취하는게 목적이라면

 

CSRF임의 사용자의 권한으로 HTTP 요청을 보내는 것이 목적이다. 비슷하지만 목적에서 약간의 차이점이 있다.