Введение
В этой лабораторной работе вы научитесь использовать одну из мощных функций Burp Intruder: 'Grep - Extract'. Эта функция позволяет определять правила для извлечения конкретных фрагментов текста из ответов, полученных во время атаки Intruder. Она невероятно полезна для сбора ценной информации, которая может меняться с каждым запросом, такой как CSRF-токены, идентификаторы сессий или другие динамически генерируемые данные.
К концу этой лабораторной работы вы сможете настроить Burp Intruder для автоматического поиска и отображения пользовательских данных из ответов, что сделает ваш рабочий процесс тестирования безопасности более эффективным. Мы смоделируем сценарий, в котором нам нужно извлечь скрытый токен из ответа веб-страницы.
В Intruder > Options прокрутите до раздела 'Grep - Extract'
На этом шаге мы начнем с запуска Burp Suite и отправки тестового запроса в инструмент Intruder. Это подготовит почву для настройки наших правил извлечения.
Сначала вам нужно запустить Burp Suite. Обычно вы можете найти его в меню приложений вашей настольной среды.
- Откройте Терминал с вашего рабочего стола.
- Запустите Burp Suite, выполнив команду
burpsuite. Выберите временный проект и нажмите "Next", затем "Start Burp". - Перейдите на вкладку Proxy > Intercept и убедитесь, что "Intercept is on".
- Откройте встроенный браузер Chromium, перейдя в Proxy > Intercept и нажав "Open Browser".
- В браузере перейдите на любой простой веб-сайт, например,
http://portswigger.net. - Запрос будет перехвачен в Burp Suite. Щелкните правой кнопкой мыши в любом месте области текста запроса и выберите Send to Intruder.
- Теперь перейдите на вкладку Intruder. Вы увидите запрос, который только что отправили.
- На вкладке Intruder нажмите на подвкладку Options.
- Прокрутите страницу вниз, пока не найдете раздел под названием Grep - Extract. Именно здесь мы будем настраивать наши правила извлечения данных.
Теперь вы успешно нашли раздел 'Grep - Extract' и готовы добавить правило.
Добавление нового правила извлечения
На этом шаге мы добавим новое пустое правило в раздел 'Grep - Extract'. Это правило будет впоследствии настроено для определения того, какие конкретные данные мы хотим извлечь из ответов сервера.
Функция 'Grep - Extract' работает путем создания списка правил. Каждое правило определяет шаблон для поиска в ответе. Когда ответ соответствует правилу, указанная часть ответа извлекается и отображается в новом столбце в таблице результатов Intruder.
Чтобы добавить новое правило, просто выполните следующую инструкцию:
- В разделе Grep - Extract, который вы нашли на предыдущем шаге, нажмите кнопку Add.
После нажатия кнопки Add в таблице правил появится новая запись. Эта новая запись будет иметь настройки по умолчанию, которые мы настроим на следующем шаге. Также появится диалоговое окно для определения извлечения, готовое к вводу данных.
Определение начальных и конечных разделителей для извлечения данных (например, скрытого токена)
На этом шаге мы настроим только что добавленное правило. Мы укажем Burp, что именно нужно извлечь, определив текст, который находится непосредственно перед и после наших целевых данных. Это делается с помощью начальных и конечных разделителей.
Для этой лаборатории представим, что мы пытаемся извлечь CSRF-токен из ответа, содержащего следующий HTML-фрагмент:
<input type="hidden" name="csrf_token" value="a1b2c3d4e5f6g7h8i9j0" />
Наша цель — извлечь значение a1b2c3d4e5f6g7h8i9j0.
- После нажатия "Add" на предыдущем шаге появится диалоговое окно "Define extract grep". Если оно не открыто, нажмите на новое правило, которое вы добавили, чтобы открыть его.
- Инструмент автоматически получает ответ из исходного запроса, который вы отправили в Intruder. Вы можете увидеть его в окне просмотра ответа внизу.
- Для определения извлечения мы укажем начальный и конечный разделители. Самый надежный способ — использовать опцию "Define start and end".
- Найдите уникальный фрагмент текста в ответе, который вы хотите извлечь. В нашем примере давайте предположим, что ответ содержит приведенный выше HTML-фрагмент.
- В окне просмотра ответа выделите значение, которое вы хотите извлечь (например,
a1b2c3d4e5f6g7h8i9j0). - Поля "Start" и "End" будут заполнены автоматически.
- Поле Start after expression должно содержать текст, непосредственно предшествующий вашим целевым данным. В нашем примере это будет
name="csrf_token" value=". - Поле End at delimiter должно содержать текст, непосредственно следующий за вашими целевыми данными. В нашем примере это будет
".
- Поле Start after expression должно содержать текст, непосредственно предшествующий вашим целевым данным. В нашем примере это будет
- Нажмите OK, чтобы сохранить правило.
Теперь вы настроили правило, которое будет искать в каждом ответе текст между name="csrf_token" value=" и ", и извлекать его.
Запуск атаки Intruder
На этом шаге мы настроим базовый полезный груз (payload) и запустим атаку Intruder. По мере выполнения атаки Burp будет применять правило Grep-Extract к каждому полученному ответу.
Сначала нам нужно установить позицию полезного груза.
- Перейдите на подвкладку Intruder > Positions.
- Здесь показан шаблон запроса. По умолчанию Burp мог автоматически добавить маркеры полезного груза (
§...§) вокруг значений параметров. Для этого упражнения не имеет значения, где находится полезный груз, так как мы сосредоточены на ответе. Вы можете оставить маркеры по умолчанию или удалить их и добавить в любом месте. Например, вы можете добавить его к значению cookie или параметру. - Убедитесь, что тип атаки установлен как Sniper.
Далее мы настроим простой полезный груз.
- Перейдите на подвкладку Intruder > Payloads.
- В разделе Payload Sets оставьте набор полезных грузов как
1. - В разделе Payload Options выберите Numbers из выпадающего списка.
- Настройте его для выполнения от
1до5с шагом1. Это отправит 5 запросов.
Наконец, запустите атаку.
- Нажмите кнопку Start attack в правом верхнем углу вкладки Intruder.
- Откроется новое окно "Intruder attack", показывающее результаты атаки в реальном времени.
Атака запущена, и Burp активно извлекает данные на основе созданного вами правила.
Просмотр извлеченных данных в новых столбцах таблицы результатов
На этом заключительном шаге вы увидите результаты вашей конфигурации Grep-Extract. Данные, которые вы указали Burp найти, теперь аккуратно организованы в окне результатов атаки.
- Посмотрите на окно Intruder attack, которое открылось на предыдущем шаге.
- Вы увидите таблицу со столбцами, такими как "Request", "Position", "Payload", "Status", "Length" и т. д.
- Прокрутите таблицу вправо. Вы должны увидеть новый столбец. По умолчанию он будет называться Extract 1. Если вы добавили больше правил, они будут называться Extract 2 и так далее.
- Этот новый столбец содержит данные, которые были извлечены из каждого ответа с использованием определенного вами правила.
Если целевой веб-сайт на самом деле не содержит строку csrf_token, которую мы использовали в качестве примера, этот столбец может быть пустым. Однако наличие столбца подтверждает, что ваше правило было активно. Если бы вы нацелились на реальный, динамический токен на странице входа, этот столбец теперь был бы заполнен уникальными токенами из каждого ответа, готовыми для анализа или использования в последующих атаках.
Вы можете щелкнуть правой кнопкой мыши по заголовку столбца, чтобы добавить или удалить столбцы, или щелкнуть по заголовку столбца, чтобы отсортировать результаты по этим данным.
Резюме
В этой лабораторной работе вы успешно научились использовать функцию 'Grep - Extract' в Burp Intruder. Вы прошли весь процесс: от отправки запроса в Intruder, добавления и настройки правила извлечения с использованием определенных разделителей, запуска атаки и, наконец, просмотра извлеченных данных в окне результатов.
Этот навык необходим для автоматизации процесса сбора динамических данных из веб-приложений, что является распространенной задачей при тестировании на проникновение и анализе безопасности. Теперь вы можете применить эти знания для извлечения CSRF-токенов, идентификаторов сессий, ключей API или любой другой конкретной информации из HTTP-ответов во время ваших оценок безопасности.
