정보보안공부

웹보안_17. CSRF 공격 기법 본문

정보보안/웹보안

웹보안_17. CSRF 공격 기법

Steady_sp 2018. 3. 15. 22:59

#CSRF ( Cross Site Request Forgery )

 

-> 교차 사이트 요청 위조

-> HTML 태그를 사용하는 XSS의 변종기법이다.

-> 공개 게시판에서 attacker라는 유저의 레벨을 기존레벨인 9에서 레벨 1로 변경해보자. 웹페이지에 나타나있는 change level 버튼이 아닌 HTML코드를 이용해서 공격해본다.

 

먼저 관리자의 권한이 있을때 관리자 페이지에서 GET방식과 POST방식을 이용해서 시도해보자

 

# GET방식

-> GET방식을 이용해 유저의 레벨을 변경할 수 있다.

 

 

-> 현재 attacker유저의 level은 1로 설정되어있다.

 

 

-> change level버튼을 눌렀을때 전송되는 데이터가 무엇인지 코드를 통해 파악한다. 전송되는 데이터는 form태그 안에 작성되어 있다.

 

 

-> exec2 값은 비어있지만 change level 버튼을 누르게되면 onclick에 의해서 move_all()함수가 실행되어 exec2 값은 moveall 값으로 지정된다.

-> GET방식을 이용해 변경된 level 1을 확인할 수 있다.

 

# POST방식

-> POST방식을 사용하기 위해서는 반드시 form이 있어야 한다.

-> 가짜폼을 만들어서 사용할 수 있다.

-> GET방식에서 사용한 데이터를 form형식으로 작성한다.

 

<form method=post action=admin_setup.php>
<input type=hidden name=page value=1>
<input type=hidden name=group_no value=1>
<input type=hidden name=exec value=view_member>
<input type=hidden name=page_num value=10>
<input type=hidden name=exec2 value=moveall>
<input type=hidden name=cart[] value=2>
<input type=hidden name=movelevel value=4>
<input type=submit>
</form>

 

작성된 폼태그를 웹페이지에서 실행하기 위해서 document.write( )를 이용해서 작성된 폼태그를 실행한다.

 

 

-> document.write( ) " "안에 여백없이 해당 form태그를 이어서 작성한다.

 

 

관리자의 권한이 없는경우 관리자 페이지의 내용을 알고있다는 가정하에 관리자가 게시글을 확인하면 관리자의 권한으로 자바스크립트 코드를 실행하도록 시도한다.

 

# img태그 방식

img태그는 <img src="path/url" /> : path/url 경로에 get방식으로 작성하는 것이다.

이방식을 이용해 path/url 에 관리자 페이지에서 권한을 바꾸는 데이터를 GET방식으로 작성하면 관리자가 해당 게시물을 읽었을때 img파일은 해당경로에서 실행되지만 이미지가 아닌 url주소의 GET방식이므로 해당 데이터들이 실행된다.

 

-> width와 height를 이용해 해당 게시글을 관리자가 읽을 때 아무것도 보이지 않도록 해준다.

 

 

-> 이처럼 관리자가 글을 읽었을 때 width=1 height=1로 인해 아무것도 없는 것 처럼 안보이게 설정할 수 있다.

 

# 변경전 attacker의 권한

 

 

# 관리자가 게시글을 읽은뒤 변경된 attacker권한

 

Comments