본문 바로가기
Web/Hacking

CSRF | XSS와 CSRF 차이점 | 보안 방법

by 09337 2021. 8. 9.

CSRF 란?

  CSRF는 사이트 간 요청 위조라는 뜻으로, 사용자의 의지와 무관하게 웹 사이트에 요청을 보낼 수 있다.

  공격자가 클라이언트에게 form이 담긴 html 코드를 보내면, 클라이언트는 해당 페이지로 연결되어 코드가 실행된다. 해당 form에는 악성 스크립트가 담겨있어, 자동으로 스크립트 값을 넘기게 되어 방문자가 원치 않는 동작을 하게 된다.


실습(burp suite 사용)

1. 기존의 로그인 정보는 아이디가 lyk00331이다.

2. 다음과 같은 코드를 동작시킴으로써, 다른 아이디인 csrf-lyk00331로 로그인할 수 있게 했다.

   value에는 기존 아이디인 lyk00331의 패스워드를 적어준다.

3. 확인해보면 csrf-lyk00331로 로그인된 것을 알 수 있다.


XSS와 CSRF 차이점

  XSS는 사용자가 웹 사이트를 신뢰하는 상황에서 발생하는 취약점이라면, CSRF는 웹 사이트가 사용자의 웹 브라우저를 신뢰하는 상황에서 발생한다.


보안 방법

  예시로 비밀번호를 변경하는 과정에서는 기존 비밀번호를 입력해야만 비밀번호를 수정할 수 있게 한다. 또한 도메인이 일치하는지 검증하는 referrer 검증을 진행하고, Token을 사용하여 보안을 강화하는 방법이 존재한다.

 

referrer 검증

  referrer란, 웹 브라우저를 돌아다닐 때 하이퍼링크를 통해 이전 페이지가 흔적에 남는 것을 말한다. referrer 검증을 통해 referrer 값이 들어오지 않았을 경우, 파라미터를 통해 값을 보내더라도 이전 페이지에 대한 정보가 존재하지 않기 때문에 제대로 값이 전달되지 않아 오류가 발생하게 한다.

 

CSRF Token

  CSRF Token은 접속 시마다 새로 생성되는 토큰으로, 새로고침을 할 때마다 계속 바뀐다. 이 값은 접속자가 아니면 알 수 없으며, 세션에 저장된다. 클라이언트가 요청할 때마다 해당 난수 값을 포함하여 전송한다. 세션에 저장된 Token 값과 요청 파라미터에 전달된 Token 값이 같은지 검사하여 공격자의 직접적인 url 사용이 동작하지 않도록 한다.

'Web > Hacking' 카테고리의 다른 글

불충분한 인가 (IN)  (1) 2022.12.11
파일 업로드 취약점 | 악성코드 배포 | 보안 방법  (0) 2021.08.09
XSS | 필터링 우회 | 보안 방법  (0) 2021.08.09
Blind SQL Injection  (2) 2020.12.30
SQL Injection  (2) 2020.07.14

댓글