Browser Desync Demo

Учебный лендинг про Browser Desync‑атаки: короткое объяснение, схема эксплуатации и безопасная демо‑симуляция, которая полностью работает в вашем браузере.[page:1]
HTTP
Desync

О уязвимости

Что такое Browser Desync

Browser Desync — это класс атак, когда браузер и сервер по‑разному видят один и тот же HTTP‑ответ. Из‑за этого часть байтов может восприниматься как отдельный документ и использоваться для внедрения HTML/JS‑кода.[page:1]
В отличие от классического HTTP Request Smuggling, здесь упор на рассинхрон между браузером и цепочкой прокси/бэкендов. Атака остаётся в рамках браузера, но опирается на нюансы парсинга и кеширования на стороне инфраструктуры.[page:1]
Типичные триггеры: конфликтующие заголовки Content-Length и Transfer-Encoding, нестандартные разделители, особенности компрессии и кеширования. Всё это влияет на то, как участники цепочки «режут» один и тот же поток.[page:1]
Ниже — упрощённая учебная модель, где можно руками задать сырые заголовки и тело, а затем посмотреть, как условный «сервер» и «браузер» могли бы их интерпретировать.

Сценарий атаки

Высокоуровневая схема

1. Подготовка

Атакующий исследует связку браузер → прокси → сервер и ищет граничные случаи: конфликт длины, странные заголовки, особенности кешей и балансировщиков.[page:1]

2. Рассинхрон

Из‑за неодинакового парсинга один и тот же поток байтов может превращаться либо в один ответ, либо в несколько ответов и начало нового документа.

3. Внедрение нагрузки

В «лишний» фрагмент потока внедряется HTML/JS, который браузер видит как часть доверенного ответа и выполняет в контексте целевого сайта.

4. Эксплуатация

Далее возможны XSS, подмена содержимого, обход CSP, кража данных и другие эффекты — всё зависит от конфигурации стека и защиты приложения.[page:1]

Демо‑зона

Тестовый запрос

Это безопасная учебная симуляция. Все расчёты происходят прямо в вашем браузере, никакие реальные HTTP‑запросы с формы не отправляются наружу.[page:1]

Задайте сырые заголовки и/или тело, нажмите «Отправить тест» и посмотрите, как условные «сервер» и «браузер» могли бы по‑разному интерпретировать ответ.

Как пользоваться демо

  1. 1 Выберите один из пресетов или введите свои заголовки и тело.
  2. 2 Нажмите «Отправить тест» — появится текстовый разбор.
  3. 3 Обратите внимание, какой фрагмент может считаться «лишним» и стать отдельным документом.
  4. 4 Меняйте заголовки и тело и смотрите, как меняется симуляция.

Быстрый старт: выберите пример запроса

Клик по примеру заполнит оба поля формы. Значения можно отредактировать перед запуском симуляции.

Учебная форма запроса

Вы можете пользоваться готовыми примерами выше или полностью своими заголовками и телом запроса.
</>

Результат симуляции

Заполните хотя бы одно из полей, чтобы увидеть разбор: как условный «сервер» и «браузер» могли бы разделить один и тот же поток байтов.

Симуляция упрощена и не повторяет поведение конкретного сервера или браузера. Её цель — показать идею рассинхронизации и появления «лишнего» ответа.[page:1]

Контакты

Автор лендинга

Лендинг сделан в учебных целях: практика вёрстки, адаптива и объяснения технических идей понятным языком.

GitHub: @buhtig-sudo-azar