A. 피해자가 등록된 사이트에서 피해자의 세션을 가져오기 위해서는 인증된 페이지 내에서 이루어져야 하기 때문이다. 그리고 정상적인 URL을 사용함으로 공격대상에게 신뢰성을 상승 시킬 수 있다.
용어정리
-
HTML 엔티티
-
HTML에서 특정 캐릭터들이 예약되어있기 때문에 표기의 혼란을 막기 위해 사용하는 대체 문자열
-
HttpOnly
-
자바스크립트의 document.cookie를 이용해서 쿠키에 접속하는 것을 막는 옵션
참고링크
http://www.ciokorea.com/tags/381/%ED%95%B4%ED%82%B9/38002
교육 1주차(03/13~03/15)
-
웹 모의해킹을 위한 환경 세팅
-
XSS 공격기법 학습
-
XSS 공격기법 일본식 표현 학습
하단 내용은 학습하며 필요한 내용들을 정리 해놓았습니다.
Stored XSS 는 주로 자바스크립트를 이용해서 공격한다. 이는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹 브라우저 내에서 주로 사용이 된다. 한국기준 PC버전에서 사용하는 웹 어플리케이션 중 총합 90% 이상의 점유율을 보이는 Chrome과 IE에서 자바스크립트 언어를 지원하며 모바일 사용자 95%가 사용하는 Chrome, Safari 그리고 Samsung Internet에서 자바스크립트를 동작 지원한다. 즉 상당수의 PC 및 모바일 사용자에게 Stored XSS 공격이 적용될 수 있음을 보인다.
XSS 공격종류
저장XSS공격
-
저장XSS 방식은 웹 서버에 사용자가 사용자 정의 문구를 서버에 업로드를 하게 되면 해당 데이터가 삽입되어있는 게시물을 조회시에 문자열로 인식하지 않고 하나의 스크립트 언어로 인식하여 동작을 하는 것을 말한다
-
대표적인 취약점 점검 스크립트로는 <script>alert('xss ok')</script> 이다. 게시 글을 작성하고 사용자에게 노출이 되는 페이지에 해당 문구를 입력하게 되면 게시 글을 조회 시 스크립트가 실행된다.
-
Stored XSS 사용자의 입력이 데이터베이스에 저장되어 지속적으로 발생하는 유형
반사 XSS 공격
-
XSS공격으로 악성 스크립트가 포함된 URL을 사용자가 클릭을 유도하여 클라이언트를 공격
-
서버에 검색내용을 입력 시 검색결과가 없으면 브라우저에서 입력한 값을 그대로 HTML문서에 포함하여 응답한다.
-
저장XSS공격과는 다르게 웹 브라우저 응답결과가 HTML문서에 포함되는 것이 큰 차이이다.
-
특정사이트에 있는 URL 주소 입력 창에 직접 주소를 입력하여 공격하는 기법이다. 자신이 입력한 문구를 그대로 서버에서 응답하여 보여주는 경우 임의로 스크립트를 입력하면 해당스크립트를 담아 사용자에게 보여준다.
DOM 기반 XSS공격
-
DOM 환경에서 악성 URL을 통해 사용자의 브라우저를 공격하는 것
-
피해자의 브라우저가 HTML 페이지를 구문 분석할 때마다 악성코드가 DOM생성의 일부로 실행됨
-
사용자 정의 HTML코드를 작성하는것
XSS와 CSRF의 차이
-
CSRF는 인증된 세션을 악용하는 반면 XSS는 세션이 없어도 작용한다.
XSS의 피해
-
쿠키 정보/세션 ID 획득
-
시스템 관리자 권한 획득
-
악성코드 다운로드
예방 기술
-
입 출력 값 검증 및 무효화
-
라이브러리 활용
-
브라우저 확장 프로그램
공격 체크 리스트
-
모든 HTML 특수문자가 HTML 엔티티로 교체되는지 식별한다
-
> (초과)
-
< (미만)
-
& (앰퍼센트)
-
' (싱글 쿼트)
-
" (더블 쿼트)
XSS의 페이로드
- 팝업경고 창
- SW download and setup
- 브라우저를 다른 url로 돌리기
- 키로거 설치
- 리버스 쉘 호출
- 클라이언트 공격
동작 흐름
Stored XSS
목표 : 스크립트를 포함한 데이터를 저장후 다른 사용자가 해당 데이터 조회시 영향을 받는지 유무에 대하여 확인
-
서버에 데이터가 저장이 되는 유무를 파악
-
데이터 저장을 파악후 XSS 공격문구로 공격 유효성 확인
Reflected XSS
목표 : 서버가 질의문을 그대로 가지고 응답을 하는지 확인
-
검색창과 같이 응답결과를 되돌려 주는지 확인 ex) 검색하신 '홍길동'과 일치하는 이름이 없습니다.
-
XSS 공격문구를 포함하여 검색시 웹 어플리케이션이 질의 문자열이아닌 스크립트로 해석하여 동작을함
CSRF
목표 : 위조된 서버요청을 보내 권한이 없는 동작을 한다
-
GET 방식 데이터 처리 방식을 사용할때 상위 권한이 있는 파라미터를 연결하여 기본주소를 작성한다.
-
<img src='attack?Screen=145&menu=900&transferFunds=5000' width="1" height="1" /> 의 img태그를 삽입힌다.
-
일반 사용자는 transferFunds 파라미터를 조작할수없기 때문에 상위권한소유자가 해당 게시물을 조회시 파라미터가 유효작동한다.
Q&A
Q. 피싱 사이트를 이용해서 반사XSS 수행하면 되지 않는가? 굳이 왜 특정사이트에서 취약점을 찾아 해당URL을 사용하는가?