본문 바로가기

카테고리 없음

CSRF(Cross Site Request Forgery ) 사이트 간 요청 위조

반응형

 


CSRF(Cross Site Request Forgery)는 특정 사용자를 대상으로 하지 않고, 

불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 하게 만드는 공격이다.

 

CSRF는 기본적으로는 XSS 공격과 매우 유사하며 XSS 공격의 발전된 형태라고 보기도 한다. 

 

하지만 XSS 공격은 악성 스크립트가 클라이언트에서 실행되는 데 반해, 

CSRF 공격은 사용자가 악성 스크립트를 서버에 요청한다는 차이가 있다. 

 

 

CSRF  (정보 보안 개론, 2013. 6. 28., 한빛아카데미(주))


 

CSRF는 한마디로 남의 권한갖다가 장난치는거라고 비유할 수 있겠습니다.

 

예를 들어서 A가 B라는 사람이 쓴 글이 마음에 안들어서 삭제하고 싶다고 칩시다.

근데 원래 그 글을 삭제하려면  

글을 쓴 B라는 사람과 모든 권한을 가지고 있는 서버 관리자만이 

삭제 또는 수정 등 을 할 수 있습니다.

 

그래서 A는 먼저

파로스나 피들러같은 프록시툴을 이용해서 해당 서버에 전송되는 

게시물 URL을 조사하려고 합니다.

 

게시물 목록은 다음과 같습니다.


글번호 제목 작성자
10 test A
9 test A
8 test A
7 test A
6 A가 너무 싫어요.. B
5 test B
4 xss A
3 hi B
2 test B
1 안녕하세요~ 관리자

 

A가 글번호가 7인 자기 게시물을 삭제했을 때 URL이 다음과 같음을 알아냅니다.

http://123.23.2.5/board/delete_board.asp?bid=7

 

 


 

그래서 A는 마음에 안들었던 B의 게시물 6번을 다음과 같이 URL에다가 입력하고 

서버에 게시물 삭제 요청(delete_board)을 보내봅니다. 

 

http://123.23.2.5/board/delete_board.asp?bid=6

 

하지만 A사용자는 B사용자가 쓴 게시물(bid=6)을 수정하거나 삭제할 수 있는 권한이 없다고 

경고창이 뜹니다.  왜냐하면 B가 작성한 게시물이기 때문에 B에게 권한이 있어서 그렇습니다. 

 

 

 

따라서 A는 CSRF 공격을 감행하기로 합니다.

 

 

A는 게시물에다 다음과 같은 스크립트를 입력합니다. (게시판에 XSS 취약점이 존재한다고 가정)

<form name="CSRF" method="POST" 

action=http://123.23.2.5/board/delete_board.asp?bid=6>

 

스크립트 실행시 action에 있는 URL로 이동하게 됨.

 

이 스크립트가 있는 게시물(11)을 B나 관리자가 클릭해서 들어가보게 된다면? 

글번호 제목 작성자
11 관리자님이나 B님 꼭 보세요..
(CSRF라고 말 안할게요..)
A

 

 

게시물 목록


 

... 생략

8 test A
5 test B

 

 

6번 게시물이 깔끔하게 삭제가 됩니다.

 


 

 

이 외에도 CSRF 공격은 다양하게 응용됩니다. 

 

CSRF를 막기 위해서는 

 

XSS 보안과 마찬가지로 문자열 필터링 , HTML 코드 치환 , 스크립트를 무효화 해야하며 ,

쿠키에는 비밀번호와 같은 민감한 정보를 담지 않도록 해야합니다.

 

 

반응형