XSS(DOM based XSS/XSS 대응방법)

황인환·2024년 6월 21일

DOM based XSS

정의 & 원리

DomBasedXSS

  • 클라이언트측 스크립트ex)javascript가 DOM을 조작할때 발생
  • 주로 URL파라미터나 브라우저저장소ex) 쿠키,세션 등로 스크립트가 전달됨
  • DOM은 HTML을 의미 이는 입력값을 그대로 화면에 나타내지만 브라우저 단에서 조립되어 script를 실행

ex)

<script>
//search 파라미터에서 나온 데이터를 바로 img 태그로 만드는 함수
funtion Search(query){
	document.write(
    	'<img src="/resourues/image/aaa.gif?searchItem='+query+'">');
}

//경로에 있는 search라는 파라미터를 가져오는 코드
let query = (new URLsearchParams(window.location.search)).get('search');

// query 변수가 잇으면 track함수 실행하는 코드
if(query){
	track(query);
}

<script>

특징

  • 클라이언트 측에서 발생: 악성 스크립트는 서버 응답이 아니라 클라이언트 측 JavaScript 코드에서 실행

  • 서버 응답(반응)과 무관: 서버에서 반환하는 HTML에 영향을 받지 않고, 클라이언트 측 코드에서 DOM 조작 시 발생

  • #과 같은 Fragment사용할때도 있음

DOM Based XSS확인하는 방법

입력값이 화면에 나오는지 확인
Burp Suite에서 확인

사용법
입력값을 넣는 곳을 찾은후 사용한 자바스크립트를 Keyword 위주로 분석한다. Burp Suite의 Response창에서 입력값이 보이지 않더라도 Keyword를 사용한 곳에 script가 삽입가능할 수도 있다.

  • Keyword
    -> document.write
    -> innerHTML

대응방안

HTML 특수문자ex)<'">를 HTML Entity로 표현을 치환한다.

내가 입력한 데이터컴퓨터가 입력한 데이터컴퓨터가 출력하는 데이터
1 + 11+%2B1+11 + 1
+는 띄어쓰기
%2B는 +

XSS 3종류 간단 point

공통 point
나의 입력값이 어느곳에든 출력이 된다면 쫒아가야한다.

종류별 piont

StoredReflectedDom based
저장하는부분 ex)글쓰기를 주의깊게 살펴봐야함GET방식의 Parameter가 Burp Sutie안에 Responsed에서 출력되는지 확인해당 웹서버의 Javascript 코드를 Keyword위주 분석이 가능해야함

Normaltic Study 10주차

0개의 댓글