Hacking & Security/WebHacking
[WebHacking] CSRF (Cross Site Request Forgery)
mobuk
2022. 2. 3. 00:19
CSRF(Cross Site Request Forgery)
CSRF(사이트간 요청 위조)는 임의 이용자의 권한으로 임의주소에 HTTP 요청을 보낼 수 있는 취약점이다. 공격자는 임의 이용자의 권한으로 서비스 기능을 사용해 이득을 취할 수 있다. 예를 들어, 이용자의 계정으로 임의 금액을 송금해 금전적인 이득을 취할 수도 있고, 비밀번호를 탈취해 금전적인 이득을 취할 수도 있다.
CSRF 공격에 성공하기 위해서는 공격자가 작성한 악성 스크립트를 이용자가 실행해야한다. 이는 공격자가 이용자에게 메일을 보내거나 글을 작성해 조회하도록 하는 방법이 있으며, HTML 또는 javascript를 통해 작성한다.
HTML 태그를 이용한 방법
<img src = 'http://bank.mobuk.tistory.com/sendmoney?to=mobukbank&amount=1000000' width=0px height=0px>
(위 사이트는 없는 사이트이며 그냥 이해를 돕기 위해 내가 하나 만들었다.)
img 태그의 주소를 조작하여 원하는 실행을 이끌어낸다. 이때, width와 height를 조정하면 사용자에게 이미지가 보아지 않아 들키지 않고 실행시킬 수 있다.
javascript를 이용한 방법
/* 새 창 띄우기 */
window.open('http://bank.mobuk.tistory.com/sendmoney?to=mobukbank&amount=1000000');
/* 현재 창 주소 옮기기 */
location.href = 'http://bank.mobuk.tistory.com/sendmoney?to=mobukbank&amount=1000000';
location.replace('http://bank.mobuk.tistory.com/sendmoney?to=mobukbank&amount=1000000');
+) XSS와 CSRF의 차이
둘다 스크립트를 웹 페이지에 작성해 공격한다는 점에서 매우 유사하다. 이용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도해야한다.
하지만, 공격에서의 목적이 서로 다르다. XSS는 세션, 쿠키 탈취를 목적으로 하는 공격이며 공격할 사이트의 오리진에서 스크립트를 실행시킨다. CSRF는 이용자가 임의 페이지에 HTTP 요청을 보개는 것을 목적으로 한다.