Skip to content

Pwn-сессии и захват токенов ​

Pwn-сессия хранит актуальный контекст авторизации отдельного пользователя: cookies и чувствительные заголовки. WebVulnFinder может применять этот контекст к запросам Repeater, Intruder, автоматическим тестам и контролируемым AI-проверкам, в том числе для воспроизводимого сравнения поведения разных пользователей.

Сначала определите чувствительные данные ​

Перед использованием сессий настройте в проекте списки:

  • SECURE_HEADERS — имена авторизационных и других чувствительных заголовков;
  • SECURE_COOKIE — имена cookies, которые подтверждают авторизацию или содержат чувствительные значения.

Эти списки используются при создании проверок запросов без авторизации: WebVulnFinder удаляет отмеченные данные и сравнивает поведение API с исходным запросом. Они также определяют смысл захваченного контекста при последующих тестах и помогают проверять, не отразилось ли чувствительное значение в ответе.

Обычный захват из Proxy ​

При проксировании трафика WebVulnFinder связывает авторизационные заголовки и cookies с кодом Pwn-сессии. Заголовок Authorization учитывается автоматически; дополнительные авторизационные заголовки берутся из SECURE_HEADERS. Cookies обновляются по фактически отправляемым запросам и получаемым ответам.

Обычно новый токен становится известен продукту, когда приложение отправляет следующий запрос с этим токеном. Для активного пользовательского сценария этого достаточно: сессия обновляется по мере работы с приложением.

Явный захват из других инструментов Burp ​

Чтобы контролируемо обновить Pwn-сессию запросом из Repeater, Intruder или другого инструмента Burp, добавьте в запрос:

  • X-Pwnfox-Color: <цвет> — выбирает сессию для текущего HTTP-сервиса;
  • заголовок-маркер захвата. По умолчанию это X-Capture-Session; имя можно изменить в проектной «Настройке захвата сессии», а его значение не имеет значения.

Только запрос с обоими заголовками обновляет cookies, чувствительные заголовки и значения из правил захвата. В Repeater и Intruder маркер можно переключить из контекстного меню редактора запроса: пункт «Добавить маркер захвата сессии» добавляет настроенный заголовок со значением true, а для уже помеченного запроса меню предлагает удалить маркер.

Применение сессии правилом Burp ​

Для того чтобы Intruder или другие расширения всегда работали с актуальной сессией, в Burp Session Handling Rules можно настроить их актуализацию через реализацию хука WebVulnFinder. Для этого настройте, когда оно должно применяться, например при наличии query параметра updateSession, выберите scope и подключите реализацию плагина «Применить Pwn-сессию WebVulnFinder». WebVulnFinder подставляет актуальные cookies и заголовки на основе значения заголовка X-Pwnfox-Color: <цвет>. Если точного совпадения нет, запрос не изменяется. При применении сессии обновляются только значения cookies, которые уже есть в запросе. Отсутствующие cookies и заголовок Cookie не добавляются. Для авторизационных заголовков действует то же правило: отсутствующий заголовок не создаётся.

Автообновление сессии

Захват значения из ответа ​

Если приложение обновляет токен фоновым запросом, после получения нового значения пользовательская активность может отсутствовать. В этом случае ожидание следующего запроса откладывает обновление Pwn-сессии. Правило в разделе «Настройка захвата сессии» извлекает значение непосредственно из ответа и сразу сохраняет его в выбранное назначение.

Правило задаёт:

  • сервис или регулярное выражение для нескольких сервисов, выражение с одной группой захвата для значения и шаблон пути запроса;
  • где искать значение: в теле ответа или в именованном заголовке. Для нового правила выбрано тело, а в поле имени заголовка предложен Location;
  • назначение: заголовок, cookie или переменная, а также его имя;
  • шаблон целевых сервисов;
  • шаблон вставки с $1 на месте найденного значения.
  • необязательный «Комментарий для ИИ», объясняющий модели назначение переменной.

Например, для redirect-ответа выберите источник «Заголовок», оставьте имя Location и задайте regexp для токена в URL перехода. Проверка не зависит от HTTP-статуса, поэтому такое правило работает и с ответами перенаправления.

Если одинаковый ответ приходит с нескольких доменов, укажите в поле «Сервис для захвата или регулярное выражение» шаблон полного адреса сервиса, например https://(auth|login)\.example\.com:443. Для одного сервиса можно оставить обычный адрес. Шаблон должен совпадать со всем адресом, включая схему и порт.

Значения, записанные в заголовок или cookie, участвуют в обычном жизненном цикле Pwn-сессии и подставляются в следующие запросы. Переменная сохраняется в сессии и передаётся в global variables Hackvertor. WebVulnFinder сам не подставляет её в запрос и не показывает в таблице checker.

Последнее значение каждого правила и цвета хранится в Burp-проекте. Поэтому новая Pwn-сессия сразу получает ранее захваченные данные, если её сервис совпадает с целевым шаблоном. Сессии для подходящих сервисов из HOSTS создаются также при запуске плагина и изменении списка.

Чтобы посмотреть, скопировать или исправить захваченное значение, откройте контекстное меню правила и выберите «Значение», а затем цвет сессии. В меню показаны только цвета, для которых правило уже захватило значение. Изменённый текст сохраняется и применяется как новое захваченное значение.

Для назначения «Переменная» можно вручную задать значение через пункт «Значение» → «Задать значение переменной…» и выбрать цвет Pwn-сессии. Оно сохраняется как обычное захваченное значение для сервисов, подходящих под правило; следующий захват обновит его.

Через произвольный диалог можно попросить модель предложить правило по сохранённому ответу. Рекомендация покажет совпадение выражения и извлечённое значение; правило начнёт действовать только после принятия.

Помощник может сравнить предложение с уже настроенными правилами. Если новое правило лучше охватывает выдачу или обновление того же значения, он предложит замену существующего правила. В рекомендации будут показаны обе версии и причина замены; её можно отдельно принять или отклонить. Принятая замена сохраняет ранее захваченные значения этого правила.

Рекомендация правила захвата с предпросмотром совпадения

Настройка захвата сессии

Использование переменных через Hackvertor ​

Установите или обновите Hackvertor. Создавать custom tag не нужно: WebVulnFinder регистрирует захваченные значения и вставляет штатный get_*-тег не требующий включения динамического исполнения кода. Например, для variable property1 красной сессии он выглядит так:

text
<@get_webvulnfinder_red_property1/>

В Repeater или Intruder тег можно не набирать вручную. Откройте контекстное меню редактора запроса и выберите «Вставить переменную». Если variable определена для нескольких Pwn-сессий, дополнительно выберите цвет. Тег заменит выделенный фрагмент запроса или будет вставлен в позицию курсора.

Вставка переменных

При выборе «Сменить сессию» WebVulnFinder меняет цвет во всех своих native get_*- тегах запроса: в query, заголовках, cookies и теле. То же происходит, когда сессия выбирается для автоматического теста. Поэтому один шаблон запроса можно использовать для нескольких цветов без ручного исправления каждого тега. Burp Session Handling Action применяет сохранённые cookies и заголовки, но цвет в тегах не меняет.

Инструмент дополнительных HTTP-проверок AI умеет передавать штатные Hackvertor-теги в значениях изменяемых параметров. Для переменных проекта модель получает список уже доступных get_*-тегов и заданные для них комментарии.

Глобальные переменные hackvector

Проверка валидности сессий ​

Назначьте checker, если оставляете плагин надолго работать без наблюдения. Он остановит автоматизацию, если актуализация сессии даст сбой или WAF заблокирует автоматические запросы. Так плагин не будет часами работать вхолостую.

В качестве checker выберите максимально простой API-запрос, который требует авторизацию и без неё возвращает другой HTTP-статус. В таблице наблюдений выделите этот API и выберите «Назначить checker сессии». Назначения и текущие сессии можно просмотреть и проверить вручную в настройках проекта.

Контрольный запрос и состояние сессий проекта

Для API сервиса с назначенным checker используется только его собственная сессия: сессия другого домена не подставляется. Если сессии нет или проверка её отклонит, API в дашборде получает состояние ожидания сессии и не передаётся ИИ. После появления сессии анализ может продолжиться. Остановка и повторный запуск дашборда сохраняют состояние объектов в текущем процессе Burp.

Когда назначены checker, автоматизация останавливается после потери сессий на всех сервисах с checker, даже если сессии других доменов ещё есть. Если checker не назначены, остановка происходит при потере всех сессий. Плагин покажет уведомление в Burp и отправит его в Telegram.

Рекомендуемый процесс удержания сессии ​

  1. Настройте SessionHolder через Burp Session Handling Rule с extension action WebVulnFinder. Ограничьте его запросами с выбранным уникальным маркером. Для таких запросов плагин будет подставлять актуальную Pwn-сессию.
  2. Напишите скрипт Turbo Intruder, который регулярно отправляет запрос с этим маркером. Если вы используете несколько сессий, скрипт должен отправлять отдельный запрос для каждой сессии.
  3. Запрос, в ответе на который приходит актуальная сессия, пометьте заголовком захвата. По умолчанию это X-Capture-Session; имя можно изменить в настройках проекта. Когда ответ вернёт новые cookies или токен, WebVulnFinder сохранит их в соответствующую Pwn-сессию.

Используйте WebVulnFinder только в согласованном scope.