С появлением новых технологий совершенствуются и методы эксплуатации уязвимостей в веб-приложениях. Одной из таких уязвимостей является межсайтовый скриптинг (XSS), который может быть использован для внедрения вредоносного кода на сайт или веб-приложение, позволяя злоумышленнику кражу чувствительных данных, манипуляцию пользовательскими сеансами или даже полный контроль над веб-сервером. В статье рассмотрим несколько полезных нагрузок XSS для баг баунти.
Еще по теме: 5 часто используемых SSRF пейлоадов
10 популярных полезных нагрузок XSS для багбаунти
XSS (Межсайтовый скриптинг) — уязвимость, которая позволяет злоумышленнику внедрить вредоносный скрипт в веб-страницу, выполняемый на стороне клиента, и осуществить атаки на пользователей.
Полезная нагрузка (Пейлоад) — данные или код, используемые для эксплуатации уязвимостей или достижения определенного эффекта в рамках информационной безопасности.
Bug bounty (Баг-баунти) — программа, в рамках которой организации предлагают вознаграждение за обнаружение уязвимостей в своих веб-приложениях или системах, чтобы повысить безопасность и поощрить исследователей безопасности.
Обход Chrome XSS-Auditor
Chrome XSS-Auditor — это встроенная функция безопасности, которая предотвращает отраженные атаки XSS в Google Chrome. Однако она не является непроницаемой и может быть обойдена с использованием определенных техник. Одной из таких техник является вредоносная полезная нагрузка SVG XSS.
Полезная нагрузка:
1 |
<svg><animate xlink:href=#x attributeName=href values=javascript:alert(1) /><a id=x><rect width=100 height=100 /></a>Эта полезная нагрузка внедряет вредоносный скрипт в элемент SVG. Скрипт устанавливает атрибут href элемента animate на javascript:alert(1), который будет выполнен при нажатии. Поскольку скрипт внедрен в элемент SVG, Chrome XSS-Auditor не обнаруживает его. |
Обход Chrome XSS-Auditor версии ниже v60 beta
До версии 60 Chrome XSS-Auditor мог быть обойден с использованием URL-адреса данных с символом новой строки.
Полезная нагрузка:
1 |
<script src="data:,alert(1)%250A--> |
Эта полезная нагрузка использует URL-адрес данных для загрузки скрипта, который выполняет функцию alert. Символ %250A — это URL-кодированный символ новой строки, который обходит Chrome XSS-Auditor.
Другие способы обхода Chrome XSS-Auditor
Другие способы обхода Chrome XSS-Auditor включают использование нулевых байтов и тегов скрипта с альтернативными наборами символов.
Полезные нагрузки:
1 2 3 |
<script>alert(1)</script <script>alert(1)%0d%0a-->%09</script <x>%00%00%00%00%00%00%00<script>alert(1)</script> |
Эти полезные нагрузки внедряют тег скрипта, который выполняет функцию alert. Нулевые байты в третьей нагрузке используются для обхода Chrome XSS-Auditor, а вторая нагрузка использует комбинацию символов возврата каретки, символа перевода строки и символа табуляции для затруднения распознавания скрипта.
Safari XSS-вектор
Эта полезная нагрузка XSS специфична для веб-браузера Safari.
Полезная нагрузка:
1 |
<script>location.href;'javascript:alert%281%29'</script> |
Пейлоад внедряет скрипт, который устанавливает свойство location.href на 'javascript:alert(1)'. При выполнении скрипт перейдет на новую страницу с URL 'javascript:alert(1)', который выполнит функцию alert.
XSS Polyglot
XSS-полиглот — это пейлоад, который можно интерпретировать как действительный код на нескольких языках программирования.
Полезная нагрузка:
1 |
jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e |
Пейлоад внедряет скрипт, который устанавливает атрибут onClick элемента HTML на alert(). CSS-код используется для скрытия внедренного скрипта от просмотра.
Обход Kona WAF (Akamai)
Эта полезная нагрузка предназначена для обхода веб-приложения Kona WAF (Web Application Firewall), реализованного компанией Akamai. Она использует отсутствие правильной санитаризации пользовательского ввода в WAF. Полезная нагрузка состоит из комбинации символов, которые не вызовут блокировку WAF. Полезная нагрузка состоит из:
1 |
\');confirm(1);// |
При выполнении она закрывает текущий тег скрипта, добавляет диалоговое окно confirm для подтверждения пользователя и затем добавляет комментарий для закрытия тега скрипта. Обратный слэш перед одиночной кавычкой используется для экранирования кавычки, чтобы она не прекратила работу тега скрипта раньше времени.
Обход ModSecurity WAF
Эта полезная нагрузка предназначена для обхода WAF ModSecurity. Она немного сложнее некоторых других полезных нагрузок, поскольку использует возможность ModSecurity разделять определенные входные данные на отдельные переменные. Сама полезная нагрузка состоит из:
1 |
<img src=x onerror=prompt(document.domain) onerror=prompt(document.domain) onerror=prompt(document.domain)> |
Этот пейлоад использует факт, что ModSecurity разделяет некоторые входные данные на отдельные переменные. В данном случае атрибут ‘onerror’ тега img разделен на три отдельные переменные, каждая из которых выполняет диалоговое окно prompt для отображения текущего домена документа. Поскольку WAF рассматривает только отдельные переменные, полезная нагрузка обходит фильтрацию и выполняет свой код.
Обходы XSS в Wordfence
Wordfence — это плагин безопасности для сайтов WordPress, который включает межсайтовый скриптинг (XSS) в свою защиту. Однако он не идеален и может быть обойден с использованием следующих полезных нагрузок:
1 |
<meter onmouseover="alert(1)" |
Эта полезная нагрузка предназначена для обхода брандмауэра Wordfence, путем использования того факта, что он не фильтрует определенные теги HTML. В данном случае используется тег meter, а также событие onmouseover, которое вызывает диалоговое окно alert.
1 |
'">><div><meter onmouseover="alert(1)"</div>" |
Эта полезная нагрузка похожа на предыдущую, но использует вложенный тег div, чтобы скрыть тег meter. Это делается для обхода любых фильтров, которые могут блокировать использование тега meter.
1 |
<marquee loop=1 width=0 onfinish=alert(1)> |
Эта полезная нагрузка предназначена для обхода Wordfence, используя тег marquee, чтобы скрыть сообщение alert. Атрибут loop установлен на 1, чтобы сообщение продолжалось повторяться, а атрибут width установлен на 0, чтобы сообщение было скрыто от просмотра. Событие onfinish вызывает диалоговое окно alert, когда сообщение заканчивает повторяться.
Заключение
Уязвимости XSS могут представлять серьезную проблему для веб-приложений и сайтов. Они могут быть использованы злоумышленниками для кражи данных, манипуляции пользовательскими сеансами или выполнения вредоносного кода на сервере или в браузере пользователей.
Понимание различных способов обхода фильтров и защитных механизмов, таких как Chrome XSS-Auditor, Kona WAF, ModSecurity и Wordfence, поможет разработчикам и администраторам повысить безопасность своих приложений и сайтов, предотвратить XSS-атаки и защитить пользователей от потенциальных угроз.
ПОЛЕЗНЫЕ ССЫЛКИ: