ClientSide: CSRF
이용자의 신원 정보가 포함된 쿠키는 일종의 서명과 같은 역할을 한다.
이용자의 식별 정보가 포함된 쿠키는 클라이언트에서 보내진 요청이 이용자로부터 왔으며, 이용자가 동의했고, 따라서 요청에 이용자의 권한이 부여돼야함을 의미한다.
사이트 요청 위조(Cross Site Request Forgery, CSRF)
이용자를 속여서, 의도치 않은 요청에 동의하게 하는 공격이다.
ex) 웹 페이지를 만들어 이용자의 입력을 유도해, 입력된 값을 은행 등의 사이트로 전송해 이용자가 동의한 것 같은 요청을 발생시킨다.
웹 서비스는 쿠키나 세션을 사용해 이용자를 식별한다.
이용자를 속여서, 의도치 않은 요청에 동의하게 하는 공격
임의 사용자의 쿠키를 사용할 수 있다? -> 임의 이용자의 권한으로 웹 서비스의 기능을 사용할 수 있다.
Cross Site Request Forgery 동작
CSRF 공격에 성공하려면, 공격자가 작성한 악성 스크립트(HTTP 요청을 보내는 코드)를 이용자가 실행해야 한다.
- 공격자가 이용자에게 메일을 보내기
- 게시판에 글을 작성해 이를 조회하도록 유도
공격 스크립트는 HTML 또는 Javascript를 통해 작성할 수 있다.
- HTML img 태그 공격 코드 예시
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 요청을 보내기)
'컴퓨터보안 > 웹클라이언트' 카테고리의 다른 글
Redis 기초 문법 (0) | 2024.05.20 |
---|---|
MongoDB 기초 문법 (0) | 2024.05.17 |
ClientSide: XSS-2 (0) | 2024.05.13 |
ClientSide: XSS(Cross-Site-Scripting (XSS)) (0) | 2024.05.10 |
Same Origin Policy 과 Cross Origin Resource Sharing (0) | 2024.05.10 |