Взлом
Уважаемые гости! При посещении нашего сайта просим вас ознакомиться с разделами форума, прежде чем оставлять ваши объявления и т.п., а также при обращении за помощью просим быть внимательными: на сайте есть как проверенные специалисты, так и непроверенные. Если вы обратились к специалисту, который проверку НЕ проходил, рекомендуем воспользоваться услугой гарант-сервиса. Спасибо, что посетили форум хакеров.

Кража файлов cookie HttpOnly с помощью техники Сookie sandwich

BoHDaN★

Новый
Пользователь
Регистрация
7 Авг 2025
Сообщения
19
Реакции
0
Баллы
1
Возраст
31
Техника «Cookie Sandwich» для обхода HttpOnly: практика эксплуатации
Знімок екрана 2025-08-20 123158.png


Введение
В пентестах веб-приложений часто встаёт задача обойти флаг HttpOnly, который защищает cookie от доступа со стороны JavaScript. В этом материале разбирается малоизвестный трюк — «cookie sandwich». Приём базируется на устаревших механизмах обработки cookie ($Version, кавычки, спецсимволы) и позволяет злоумышленнику получить доступ к данным, которые по задумке должны быть недоступны.

Суть метода
Идея в том, что веб-серверы по-разному интерпретируют cookie в заголовках, если в них вставить специальные символы и устаревшие атрибуты. Cookie sandwich создаёт ситуацию, когда один cookie «вклинивается» внутрь другого, и сервер ошибочно раскрывает содержимое защищённого HttpOnly.

Демонстрация
Создание «сэндвича»:
JavaScript:
document.cookie = $Version=1;;document.cookie = param1="start;document.cookie = param2=end";;

Заголовок на выходе:
Код:
Cookie: $Version=1; param1="start; sessionId=secret; param2=end
Сервер может воспринять sessionId как часть значения param1, и тем самым отдать его в ответе, даже если он был установлен с HttpOnly.

Особенности обработки
Apache Tomcat переключается в режим RFC2109, если встречает $Version.
— Если значение начинается с кавычек, парсер читает до следующей неэкранированной кавычки.
— Символы после «\» игнорируются.
Именно эти особенности позволяют злоумышленнику «захватить» дополнительные cookie между param1 и param2.

Flask и Python-фреймворки
Во Flask устаревший атрибут $Version не обязателен, так как кавычки в значениях поддерживаются по умолчанию. Атака выглядит так:
Код:
Cookie: param1="start; sessionId=secret; param2=end"
Ответ сервера:
Код:
Set-Cookie: param1="start\073 sessionId=secret\073 param2=end";

Реальный пример
Мишенью часто становятся системы аналитики, где visitorId хранится в cookie и отображается на странице:
HTML:
Если атакующий добьётся исполнения JS (например, через XSS), то сможет получить доступ к данным и обойти HttpOnly.

Эксплуатация на практике: кража PHPSESSID
  1. XSS-уязвимость: инъекция через oncontentvisibilityautostatechange.
  2. Поиск открытого cookie: endpoint отражает session в JSON.
  3. Cookie downgrade: использование $Version для принудительного парсинга по RFC2109.
  4. Финальная атака: упорядочивание cookie (через path=/json) и отражение PHPSESSID в ответе.
Пример вредоносного запроса:
Код:
Cookie: $Version=1; session="deadbeef; PHPSESSID=secret; dummy=qaz"
Ответ:
Код:
{"session":"deadbeef; PHPSESSID=secret; dummy=qaz"}

Итоговая схема:
— Жертва заходит на страницу с XSS.
— JS выставляет $Version, session и dummy с нужными путями.
— Отправляется запрос к tracking-endpoint.
— Сервер сам раскрывает HttpOnly cookie в JSON.

Заключение
Cookie sandwich
— это не просто «курьёз протокола», а реальный способ эксфильтрации HttpOnly cookie. В пентестах подобные техники помогают выявлять слабости на стыке браузеров, серверов и WAF-фильтров. Для защиты необходимо:
— переходить на строгий парсинг по RFC6265,
— избегать устаревших cookie ($Version и пр.),
— жёстко фильтровать ввод и устранять XSS,
— проверять работу аналитических и трекинговых сервисов.
 
Яндекс.Метрика