Тема
Типы наблюдений
| Тип | Бизнес-смысл и сохраняемый результат |
|---|---|
API | Каталог обнаруженных endpoint-ов и операций. Хранит метод, шаблон маршрута, тип/операцию GraphQL, признак требования авторизации, параметры, их источники, обязательность, комментарии и накопленные значения. |
Host | Хост или семейство динамических имён. Хранит исходный origin, необязательный шаблон сопоставления и список конечных точек IP:PORT с отдельными комментариями. |
BaseUrl | Базовый путь выбранного origin. Хранит необязательные шаблоны сопоставления origin и нормализованных URI-путей. |
CommentFinder | Комментарии из HTML/JavaScript и их положение в исходнике. Помогает находить забытые инструкции, debug-информацию, пути, TODO и отключенный код. |
SensitiveCode | Потенциально чувствительные JavaScript-конструкции с позицией и контекстом: источники и приемники данных, динамическое исполнение, DOM-операции и другие места для ручного security-review. |
SourceMap | Автоматическое наблюдение о реально полученном в трафике source map: успешном JSON-ответе на GET-запрос к файлу .js.map или .css.map. Это не предположение по ссылке или другому признаку существования карты. Чтобы такой запрос попал в трафик, при работе с приложением следует хотя бы один раз открыть инструменты разработчика браузера: обычно браузер запрашивает source maps при их использовании. Вложенные исходники извлекаются локально. JavaScript, JSX, TypeScript и TSX анализируются с сохранением исходного кода, включая компоненты React и декораторы в Angular TypeScript. Vue-файлы .vue и другие пока неподдерживаемые форматы доступны для просмотра. В результате SourceMap доступна таблица файлов: выбор строки открывает исходный код рядом с запросом карты. Наблюдения комментариев, строк и опасных конструкций из этих файлов попадают в обычный дашборд анализа. |
SupportHeader | Автоматически фиксирует уникальные в пределах проекта имена нестандартных HTTP-заголовков, встречавшихся в запросах или ответах. В карточке наблюдения можно посмотреть все значения выбранного заголовка во всем трафике проекта, а затем открыть конкретный HTTP-обмен, в котором встретилось выбранное значение. |
SupportCookie | Автоматически фиксирует уникальные в пределах проекта имена cookie, переданных в запросах. В карточке наблюдения можно посмотреть встречавшиеся значения и открыть конкретные HTTP-обмены, в которых cookie передавалась или устанавливалась. |
UnknowTag | Автоматическое наблюдение об HTML-теге, который не описан в собственной Xtext-грамматике WebVulnFinder и поэтому разобран как неизвестный элемент. Сохраняет сам фрагмент и его положение в исходном ответе для последующего анализа. |
DetectedVersion | Ручное наблюдение для фиксации замеченной пентестером версии компонента или технологии и связанных с ней HTTP-обменов. |
DetectedString | Автоматическое техническое наблюдение со структурированным набором категоризированных строк ответа. На нем основаны витрина строк, просмотр строк конкретного ответа, поиск HTTP-обменов по выбранному фрагменту, извлечение однотипных значений из ответов и смысловое сравнение ответов. |
Notes | Универсальная ручная заметка, к которой можно прикрепить один или несколько HTTP-обменов. Также используется для принятых AI-заключений, не относящихся к существующему наблюдению. |
SystemError | Техническая ошибка серверного анализа конкретного HTTP-обмена; помогает контролировать полноту обработки. |
Host и BaseUrl
Оба наблюдения можно создать из выбранного HTTP-обмена через меню ручного создания. Для Host подставляется origin запроса. Для BaseUrl автоматически подставляется наиболее конкретное подходящее значение списка BASE_URLS; если его нет, подставляется первый узел пути. Базовый путь оканчивается /. После создания можно изменить поля результата, задать для BaseUrl отдельные шаблоны origin и пути и дополнить Host адресами IP:PORT через меню таблицы. Комментарий конечной точки редактируется под таблицей при выборе строки.
«Порты и роль Host» собирает адреса IPv4/IPv6 и исследует стандартный набор TCP-портов каждого адреса с определением сервисов и версий. Для этого на машине с Burp должен быть установлен nmap. Он ищется через PATH; на macOS также поддерживаются стандартное приложение /Applications/nmap.app и каталоги Homebrew /opt/homebrew/bin и /usr/local/bin. Наличие nmap проверяется перед загрузкой данных с сервера. Если он недоступен, объекты исследования портов и роли Host получают статус «Ожидает»; пояснение показано в колонке «Причина». После установки обновите данные с сервера — доступные объекты вернутся в очередь без перезапуска Burp. Остальные исследования продолжают работать. DNS-имя разрешается в IP-адреса, затем каждый IP передаётся nmap. Найденные порты сохраняются до обращения к ИИ. Список разрешённых адресов, ход и время сканирования доступны в журнале конкретной задачи. Новые порты добавляются с комментариями nmap. Для известной пары IP:PORT заполняется только пустой комментарий. Непустой комментарий при повторном запуске остаётся без изменений. Ранее записанные конечные точки сохраняются: отсутствие порта в новом результате не доказывает, что он закрыт. Ошибка или отмена отражается в истории, а уже собранные данные остаются доступны.
ИИ сопоставляет результаты с данными проекта и предлагает комментарий о роли хоста, подозрительных сервисах и обнаруженном опасном поведении. Комментарий применяется через обычную рекомендацию. После завершения анализа и решений по рекомендациям Host получает общее состояние «Подтвердить» (RESOLVED). Возврат в «Новый» снова делает его доступным для автоматического исследования. Исследование охватывает точное имя из origin; шаблон связанных origin не расширяет область сканирования.
Принятие рекомендации о новом значении списка HOSTS или BASE_URLS также создаёт соответствующее наблюдение и сохраняет связанный HTTP-обмен. Повторное принятие того же значения не создаёт новое наблюдение. Шаблоны сопоставления задаются отдельно в карточке для анализа связанных запросов. Шаблон не подставляется в поиск открытого HTTP-обмена.
Модель API
API-наблюдение объединяет повторные обращения к одной логической операции и постепенно расширяет знание о ней. В частности:
- переменная часть URL может быть представлена единым шаблоном маршрута, а не множеством endpoint-ов для каждого идентификатора;
- GraphQL query/mutation/subscription и имя операции различают логические API на одном HTTP URL;
- повторные Proxy-запросы добавляют новые параметры и значения к существующему API;
- связанные HTTP-обмены сохраняются как доказательства и источники новых сведений об API без накопления незначимых дублей;
- новые параметры и значения расширяют уже известную схему API;
- пользователь может ограничить добавление похожих вариантов ответа;
- шаблон поиска API доступен для редактирования как регулярное выражение;
- обязательность параметров и необходимость авторизации являются сохраняемыми свойствами, которые могут изменяться вручную или через рекомендации.
В карточке API доступны следующие поля и действия:
| Элемент | Что показывает или изменяет |
|---|---|
| Шаблон маршрута | Регулярное выражение, по которому сохраненные запросы относятся к API. Изменение влияет на дальнейшие выборки и обогащение. Перед сохранением выражение проверяется на корректность. |
| Метод | HTTP-метод API. |
| Операция | Имя/тип операции, прежде всего для GraphQL. |
| «Требует авторизацию» | Сохраняет знание о необходимости auth-контекста. Значение также предлагается рекомендациями после no-auth теста. |
| «Не расширять похожими» | Если для кода ответа уже есть привязанный запрос, не добавляет ещё один только из-за отличия ответа. Новый статус, новый параметр или новый Content-Type тела по-прежнему могут привязать запрос. |
| Таблица параметров | Дедуплицированный список имен параметров и их источников, накопленный по всем относящимся к API запросам. Один параметр показывается один раз, даже если API вызывался многократно. |
| Вкладка «Значения» | Дедуплицированный пользовательский набор репрезентативных значений выбранного параметра. Список можно редактировать построчно и использовать как компактную память о значениях, важных для последующих тестов. |
| «Сохранить значение» в таблице запросов | Добавляет выбранные фактически встреченные значения в пользовательский список «Значения», не создавая повторов. |
| Вкладка «Информация» | Позволяет отметить параметр обязательным/необязательным и сохранить комментарий к нему. |
| Вкладка «Значения по запросам» | Показывает каждое фактически встреченное значение выбранного параметра и HTTP-запрос, в котором оно наблюдалось. Выбор строки открывает соответствующий request/response и передаёт имя параметра в стандартный поиск Burp, который показывает его передачу в запросе независимо от того, находится он в query, структурированном body, path или другом поддерживаемом источнике. |
| «Добавить к результату» | Загружает выбранные обмены из таблицы значений и прикрепляет их к текущему API-наблюдению как доказательства. |
Таким образом, карточка API позволяет пройти от общей дедуплицированной схемы к конкретному значению, а от него — к исходному HTTP-обмену. Тот же поперечный анализ для всех наблюдавшихся endpoint-ов доступен в общей витрине параметров; ее можно экспортировать, нормализовать вне Burp и превратить в собственные проектные словари.
