억대 연봉을 위한 인간수업
article thumbnail
반응형

 

웹 해킹, 보안 등에 대해 공부하다보면 CSRF에 대해 접해볼 기회가 있다.

그렇다면 CSRF는 뭘까? 그리고 어떤거기에 XSS와 같이 설명되며 비슷하다 하는 걸까?

 

 

 

CSRF란?

 - CSRF란 언어 그대로 풀이하면 Cross-Site-Request-Forgery 의 약어이다.

   사이트 사이 요청을 위조한다는 의미를 가지고 있다.

 - 사용자와 특정 웹간의 통신을 할때 Request와 Response를 분석해서 Request(요청)을 위조하여 공격자가 원하는 행위를 하게 만드는 공격이라 할 수 있다.

 - 사용자는 자신이 의도 했던 것과 무관하게 공격자가 의도한 행위를 하게 만드는 공격으로, 회원정보 변경, 데이터의 수정/삭제, 게시글 내용 변경 등을 할 수 있다.

 - 특정 사용자의 권한이 필요할때 (EX: 관리자 권한) 타겟이 로그인 된 상태에서 악성 스크립트가 존재하는 페이지 또는 악성 URL을 통해 공격이 가능하다.

 - CSRF의 공격은 악성 스크립트가 아니더라도 가능하다.

 

 

 

CSRF 공격 방식

참조 : https://stupidsecurity.tistory.com/18

공격방식은 위 사진과 같다.

1. 악성 스크립트등을 통해 조작할 내용의 게시글 작성

2. 악성 게시글은 DB에 저장됨

3. 관리자 또는 특정 사용자(희생자)가 공격자가 작성한 게시글을 클릭

4. 악성 게시글은 사용자가 웹 클라이언트를 통해 읽혀지는 동안 클라이언트 언어로 인식되어 동작

 4-1. 악성 스크립트가 동작하며 특정 사용자의 권한이 필요할 경우 해당 권한을 통해 동작함

5. 희생자에겐 정상적인 게시글로 동작

 

이런 방식을 통해 악성 게시글을 사용해 사용자를 공격할 수 있다.

 

 

 

 

공격 방식 외에 해당 공격을 CSRF라 할 수 있는 특징은 다음과 같다.

CSRF의 특징

 - XSS와 함께 웹에서 가장 효과적인 공격방법

 - 단, 스크립트가 없어도 공격이 가능한 방법

 - 정상 사용자를 통해 공격이 진행되므로 공격자의 정보(IP등)를 추적하는 것이 불가능

 - Session Hijacking과 비슷한 권한을 도용한 공격이라 할 수 있다.

 

 

 

CSRF 방지법

CSRF의 공격이 일어나는 것을 방지하기 위해선 다음과 같은 방법이 존재한다.

1. 위조 방지 토큰 사용

 - 특정 권한이 필요한 페이지(EX: 회원 정보 수정 등)는 해당 페이지와 실제 동작이 일어나는 페이지사이에 토큰을 생성해 그 값을 비교하여 토큰이 존재하지 않거나 다른 경우 동작을 허용하지 않는 방법이 있다.

2. Referer 값 이용

 - 프록시 툴, 패킷 등을 통해 확인하면 다른 페이지로 이동할 경우 그전 페이지 정보를 가지고 이동한다. 이때 전페이지 정보가 없거나, 외부 사이트에서 요청을 한 경우 요청을 처리하지 않는 방법이 있다.

3. 캡챠 사용

 - 회원정보 변경, 게시글 작성 등 CSRF의 공격을 막아야 하는 페이지에서 캡챠를 사용해 인증이 가능한 것만 요청을 처리해주는 방법이 있다. 

 - 캡챠는 랜덤 이미지를 통해 인증이 되므로 사용자 몰래 요청하는것이 불가능 하다는 장점이 있다.

 

 

 

 

 

 마지막으로 CSRF는 XSS와 공통점과 차이점은 어떤게 있을까?

CSRF와 XSS의 차이점

CSRF와 XSS의 차이점은 위의 표와 같다.

엄연히 둘은 비슷하다 할 수 있지만, 전혀 다른 공격인 것을 인지하는 것이 중요하다.

 

반응형
profile

억대 연봉을 위한 인간수업

@회뜨는참치

이 글이 당신에게 조금이라도 도움이 된다면 좋겠습니다.