Рейтинг@Mail.ru

Введение в Burp Suite. Часть IV (Вкладка Intruder)

: в разделе: Open Source
11382

main

Burp Intruder – это инструмент для автоматизации специализированных атак против веб-приложений. Это очень мощный и хорошо настраиваемый инструмент, который может использоваться для выполнения огромного спектра задач от простых brute force-атак с перебором веб-каталогов до активной эксплуатации уязвимостей, связанных со сложным слепым внедрением SQL-кода.

 

Как работает Intruder

Работа Burp Intruder базируется на принятии HTTP-запроса (так называемый базовый запрос), изменяя запросы различным систематизированным образом, направляя каждый модифицированный вариант запроса и анализируя ответы приложения для выявления интересующих особенностей.

Для каждой атаки вы должны указать один или более набор полезных нагрузок (далее просто нагрузка) и позиции в базовом запросе, куда нагрузки должны быть помещены. Доступны многочисленные методы генерации нагрузок (включая простые списки строк, чисел, дат, brute force, побитовую обработку и многое другое).

Нагрузки могут быть помещены в позиции нагрузок, используя различные алгоритмы.

Attack Target (Целевая атака)

Эта вкладка используется для настройки информации о целевом сервере для осуществления атаки. Необходимыми опциями являются:

  • Host (Хост) – Это IP-адрес или имя хоста целевого сервера
  • Port (Порт) – Это номер порта службы HTTP/S
  • Use HTTPS (Использование HTTPS) – Указывает на то, следует ли использовать SSL.

Наипростейшим способом заполнения этих данных является выбор запроса для атаки в любом месте в рамках Burp, а затем выбор в контекстном меню опции "Send to Intruder" («Отправить в Intruder»). Этим самым вы отправите выбранный запрос в новую вкладку Intruder’а, при этом вкладки Target (Цель) и Position (Позиция) заполнятся автоматически.

1

Positions (Позиции)

Payload Positions (Позиции нагрузок)

Эта вкладка используется для настройки шаблона запроса для атаки, а также маркеров нагрузки и типа атаки (который определяет способ присвоения нагрузок к позициям нагрузок).

Attack Type (Тип атаки)

Burp Intruder поддерживает различные типы атак. Они определяют способ, которым нагрузки присваиваются к позициям нагрузок. Тип атаки может быть выбран при помощи выпадающего меню над редактором шаблона запросов.

Доступны следующие виды атак:

Sniper (Снайпер) – Используется одиночный набор нагрузок. Атака выбирает каждую позицию нагрузки по очереди и помещает каждую нагрузку в эту позицию по очереди. Те позиции, которые не указаны для данного запроса, не обрабатываются – маркеры позиции удаляются, а любой вложенный текст, который появляется между ними в шаблоне, остается неизменным. Этот тип атаки полезен для фаззинга (fuzzing) некоторых параметров запроса в индивидуальном порядке для общих уязвимостей. Общим числом запросов, генерируемых в атаке, является произведением числа позиций и числа нагрузок в наборе нагрузок.

Battering ram (Таран) – Используется одиночный набор нагрузок. Атака перебирает нагрузки и помещает те же самые нагрузки во все заданные позиции нагрузок одновременно. Такой тип атак полезен, когда для атаки требуется вставка той же самой входной информации в несколько позиций в запросе (например, вставка имени пользователя в файл Cookie и параметр тела). Общим числом запросов, генерируемых в атаке, является число нагрузок в наборе нагрузок.

Pitchfork (Вилы) – Используется несколько наборов нагрузок. Присутствуют различные наборы нагрузок для каждой заданной позиции (максимально до 20). Атака перебирает все наборы нагрузок одновременно и размещает по одной нагрузке в каждую заданную позицию. Иными словами, первый запрос поместит первую нагрузку с набора нагрузок 1 в позицию 1, а первую нагрузку из набора нагрузок 2 в позицию 2; второй запрос поместит вторую нагрузку из набора нагрузок 1 в позицию 1, а вторую нагрузку из набора 2 в позицию 2 и т.д. Такой тип атаки полезен, когда для атаки требуется вставка различной, но взаимосвязанной входной информации в несколько позиций в запросе (например, имя пользователя в один параметр и известный ID-номер, соответствующий этому имени пользователя, в еще один параметр). Общим числом запросов, генерируемых в атаке, является число нагрузок в наименьшем наборе нагрузок.

Cluster bomb (Кассетная бобма) – Используется несколько наборов нагрузок. Присутствуют различные наборы нагрузок для каждой заданной позиции (максимально до 20). Атака перебирает каждый набор нагрузок по очереди таким образом, что проверяются все комбинации нагрузок. То есть, если есть две позиции нагрузок, то атака поместит первую нагрузку из набора нагрузок 2 в позицию 2 и переберет все нагрузки в наборе нагрузок 1 в позиции 1; затем разместит вторую нагрузку из набора нагрузок 2 в позицию 2 и переберет все нагрузки в наборе нагрузок 1 в позиции 1. Такой тип атак полезен, когда для атаки требуется вставка различной или несвязанной, или неизвестной входной информации в несколько позиций в запросе (например, при переборе учетных данных: имя пользователя в один параметр и пароль в другой параметр). Общим числом запросов, генерируемых в атаке, является произведение числа нагрузок во всех заданных наборах нагрузок, что может оказаться крайне большим числом.


Вы можете изменить заданные по умолчанию маркеры нагрузок, используя кнопки рядом с редактором шаблона запросов:

Add § (Добавить §) – В отсутствие выделенного текста нажатие этой кнопки вставит одиночный маркер нагрузки на месте курсора. Если текст выделен, то текст будет ограничен парой маркеров с двух сторон.

Clear § (Очистить §) – Эта кнопка удалит все позиционные маркеры или со всего шаблона, или из выбранной области шаблона

Auto § (Авто §) – Эта опция делает предположение о том, где может оказаться полезным размещение нагрузки и расставляет маркеры нагрузки соответствующим образом. Опция полезна, чтобы быстро отметить подходящие для фаззинга (fuzzing) позиции, в то время как ручное позиционирование требуется при более специализированных атаках. Если выделен какой-то текст, то маркеры расставляются только в рамках выделенного текста, иначе они будут размещены на протяжении всего шаблона запроса. Автоматическое размещение маркеров помещает нагрузки в значения различных типов параметров запроса, включая:

  • URL query string parameters (Параметры строки запроса URL)
  • Body parameters (Параметры тела)
  • Cookies (Файлы Cookie)
  • Multipart parameter attributes (Атрибуты Multipart-параметра, например, имя файла при загрузке файлов)
  • XML data and element attributes (XML-данные и атрибуты элементов)
  • JSON parameters (JSON-параметры)

Мы можете настроить, будут ли автоматические позиции нагрузок заменять существующие значения параметров или добавляться к ним при помощи опции в меню Intruder. Обратите внимание, что если субфрагмент запроса, но не тело сообщения целиком, содержит данные, отформатированные с использованием XML или JSON, то вы можете автоматически размещать нагрузки в рамках этой структуры, вручную выбирая конкретный блок или отформатированные данные, а также использовать кнопку "Auto" («Авто») для размещения нагрузок в этой структуре. Это полезно, например, когда многокомпонентное значение параметра содержит данные в формате XML или JSON.

Refresh (Обновить) – Обновляет подсветку синтаксиса в редакторе шаблонов запроса, если необходимо.

Clear (Очистить) – Удаляет образец шаблона целиком.

Примечание: Вы также можете использовать пользовательский интерфейс позиций нагрузок в Intruder, чтобы настраивать пользовательские точки вставки для активных проверок при помощи Burp Scanner. Чтобы осуществить это, настройте шаблон запроса и маркеры нагрузок обычным образом в рамках Intruder, а затем выберите "Actively scan defined insertion points" («Сканирование заданных точек вставки в активном режиме») из меню Intruder.

2

Payloads (Полезные нагрузки)

Эта вкладка используется для настройки одного и более набора нагрузок. Количество наборов нагрузок зависит от типа атаки, заданного на вкладке "Position" («Позиции»). Для многих типовых задач, таких как параметры фаззинга (fuzzing), brute force с подбором пользовательского пароля или циклическое прохождение через идентификаторы страницы, нужен лишь одиночный набор нагрузок.

Ниже представлены этапы настройки, необходимые для конфигурирования набора нагрузок:

  • Payload set (Набор нагрузок) – Выберите, если хотите настроить при помощи выпадающего списка.
  • Payload type (Тип нагрузки) – Выберите, если хотите выбрать из выпадающего списка. Доступно большое число видов нагрузок, и они хорошо настраиваемые, позволяя вам быстро автоматизировать генерацию нагрузок практически для любой ситуации:
  • Simple list (Простой список)
  • Runtime file (Файл выполнения)
  • Custom iterator (Пользовательский итератор)
  • Character substitution (Замена символов)
  • Case modification (Замена регистра)
  • Recursive grep (Рекурсивный grep)
  • Illegal Unicode (Недопустимый Unicode)
  • Character blocks (Символьные блоки)
  • Numbers (Числа)
  • Dates (Даты)
  • Brute forcer (Брутфорсер)
  • Null payloads (Нулевая нагрузка)
  • Character frobber (Символьный frobber)
  • Bit flipper (Инверсия битов)
  • Username generator (Генератор имен пользователя)
  • ECB block shuffler (Раздатчик ECB-блоков)
  • Extension-generated (Сгенерированные расширения)
  • Copy other payload (Копировать другие нагрузки)

3

Payload Processing (Обработка нагрузок)

Нагрузки, сгенерированные при помощи настроенных типов нагрузки, могут быть обработаны в дальнейшем при использовании правил обработки и кодирования нагрузок.

Payload Processing Rules (Правила обработки полезных нагрузок)

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


Доступные следующие типы правил:

  • Add prefix (Добавить префикс) – Добавляет литеральный префикс перед нагрузкой.
  • Add suffix (Добавить суффикс) – Добавляет литеральный суффикс после нагрузки.
  • Match / replace (Поиск совпадения / замена) – Заменяет любые части нагрузки литеральной строкой, которые совпадают с заданным регулярным выражением.
  • Substring (Подстрока) – Извлекает субфрагменты нагрузок, начиная от заданной позиции (нулевой индекс) и до указанной длины.
  • Reverse substring (Обратная подстрока) – Функционирует тем же образом, как правила для подстрок, но указана конечная позиция с отсчетом в обратном направлении от конца нагрузки, а длина отсчитывается в обратном направлении от конечной позиции.
  • Modify case (Изменить регистр) – Изменяет регистр полезной нагрузки, если это возможно. Доступны те же самые опции, как для изменения регистра у типа нагрузки.
  • Encode (Кодирование) – Кодирует нагрузку, используя различные схемы: URL, HTML, Base64, ASCII hex или строковые типы, созданные для различных платформ.
  • Decode (Декодирование) – Декодирует нагрузку, используя различные схемы: URL, HTML, Base64, ASCII hex.
  • Hash (Хэш) – Выполняет операции хэширования с нагрузкой.
  • Add raw payload (Добавить необработанную нагрузку) – Добавляет необработанное значение нагрузки до или после обрабатываемого в настоящее время значения. Может быть полезным, например, если вам нужно отправить ту же самую нагрузку и в необработанной, и хэшированной форме.
  • Skip if matches regex (Пропустить, если соответствует регулярному выражению) – Проверяет, совпадает ли обрабатываемое в настоящий момент значение совпадает с заданным регулярным выражением и если совпадает, то пропускает нагрузку и переходит к следующей. Может быть полезным, например, если вы знаете, что значение параметра должно обладать минимальной длиной и хотите пропустить любые значения из списка, которые меньше этой длины.
  • Invoke Burp extension (Вызвать расширение Burp) Вызывает расширение Burp для обработки нагрузки. Расширение должно зарегистрировать обработчик нагрузок Intruder’а. Вы можете выбрать требуемый обработчик из списка доступных, которые были зарегистрированы загруженными в текущий момент расширениями.

4

Payload Encoding (Кодирование нагрузки) Вы можете настроить то, какие символы в рамках нагрузки следует подвергнуть URL-кодированию для безопасной передачи в HTTP-запросах. Любое сконфигурированное URL-кодирование выполняется в последнюю очередь, после того, как все правила обработки нагрузок будут применены.

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

5

Options (Опции)

Эта вкладка содержит опции атаки Intruder’а для заголовков запроса, ядра запроса, результатов атаки, поиска совпадений grep, извлечения grep, нагрузок grep и переадреации. Вы можете отредактировать эти опции в главном пользовательском интерфейсе Inturder до запуска атаки. Большинство настроек может быть также изменено в окне атаки, когда атака уже запущена.

Request Headers (Заголовки запроса)

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

Доступны следующие опции:

  • Update Content-Length header (Обновить заголовок Content-Length) – Эта опция заставляет Intruder добавлять или обновлять заголовок Content-Length в каждом запросе с корректным значением длины HTTP-тела. Эта функция обычно важна для атак, которые вставляют нагрузки переменной длины в тело шаблона HTTP-запроса. Если указано некорректное значение, то целевой сервер может возвратить ошибку, ответить неполным запросом или ожидать неопределенный срок для получения в запросе дополнительных данных.
  • Set Connection: close (Установка Connection: close) – Эта опция заставляет Intruder добавлять или обновлять заголовок Connection со значением “close”. В некоторых случаях (когда сервер сам не возвращает правильные заголовки Content-Length и Transfer-Encoding) эта опция может способствовать ускоренному выполнению атак.

6

Request Engine (Ядро запросов)

Эти настройки управляют ядром, используемым для создания HTTP-запросов в атаках Intruder’а. Доступны следующие опции:

  • Number of threads (Число потоков) – [Pro-версия] Эта опция регулирует число единовременных запросов, которые способна выполнить атака.
  • Number of retries on network failure (Количество попыток при отказе сети) – Если происходит ошибка соединения или другие проблемы сети, то Burp повторит запрос указанное число раз, прежде чем прекратить и двигаться дальше. Периодические сбои являются обычным явлением при тестировании, поэтому лучше всего повторить запрос несколько раз, когда происходит сбой.
  • Pause before retry (Задержка перед повторной попыткой) – Выполнив повторно неудачный запрос, Burp будет ждать определенное время (в миллисекундах) после неудачной попытки перед повторением запроса. Если сервер перегружен трафиком, или возникает временная проблема, то лучше всего подождать небольшой промежуток времени и повторить попытку.
  • Throttle between requests (Перерыв между запросами) – По выбору пользователя Burp может ждать с заданной задержкой (в миллисекундах) перед каждым запросом. Опция полезна для избежания перегрузки приложения или же для повышения скрытности. В качестве дополнительного варианта вы можете настроить переменную задержку (с заданным стартовым значением и приращением). Эта опция может оказаться полезной для тестирования интервала ожидания сеанса, установленного приложением.
  • Start time (Начальное время) – Эта опция позволяет настроить атаку на немедленный старт или на старт с заданной задержкой, или на старт в состоянии паузы. Эти варианты могут оказаться полезными, если настраиваемая атака будет выполняться позднее или сохранена для использования в будущем.

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

7

  • Attack Results (Результаты атаки) Эти настройки управляют тем, какого рода информация собирается в результатах атаки. Доступны следующие опции:
  • Store requests / responses (Хранить запросы / ответы) – Эти опции определяют, будет ли атака сохранять содержимое отдельных запросов и ответов. Сохранение запросов и ответов требует дискового пространства в вашей временной директории, но позволяет вам видеть их на протяжении всей атаки. Повторяйте индивидуальные запросы, если необходимо, и отправляйте их другим инструментам Burp.
  • Make unmodified baseline request (Создать неизмененный базовый запрос) – Если выбрана эта опция, то в дополнение к настроенным запросам атаки, Burp будет устанавливать шаблоны атак со всеми наборами позиций нагрузок в их базовые значения. Этот запрос будет показан, как item #0 в таблице результатов. Использование этой опции полезно для обеспечения базового запроса, с которым будут сравниваться ответы атаки.
  • Use denial-of-service mode (Использовать DoS-режим) – Если выбрана эта опция, то атака будет посылать запросы в обычном режиме, но не будет ожидать обработки ответов, полученных от сервера. После того, как каждый запрос будет выполнен, TCP-соединение будет разорвано. Эта функция может быть использована для выполнения DoS-атак на программного уровне против уязвимостей приложений путем повторной отправки запросов, которые инициируют задачи высокой нагрузки на сервере, избегая блокировки локальных ресурсов при помощи удержания сокетов в открытом состоянии в ожидании ответа сервера.
  • Store full payloads (Хранить нагрузки полностью) – Если выбрана эта опция, Burp будет сохранять значения нагрузок полностью и для каждого результата. Эта опция потребляет дополнительные объемы памяти, но может потребоваться, если вы хотите производить определенные действия во время выполнения, такие как изменение grep-настроек нагрузок или повторная отправка запросов с измененным шаблоном запросов.

8

Grep – Match (Grep – Поиск совпадений)

Эти настройки могут быть использованы для выделения полученных объектов, содержащих указанные выражения в ответе. Для каждого настроенного в списке объекта Burp добавит новый столбец результатов, содержащий флажок, указывающий на то, был ли объект обнаружен в каждом из ответов. Затем вы можете отсортировать столбец (нажав на заголовок столбца), чтобы сгруппировать совпавшие результаты вместе.

Использование этой опции может оказать значительную помощь при анализе больших массивов результатов, а также для быстрой идентификации интересующих объектов. Например, при атаках с подбором пароля сканирование таких фраз, как "password incorrect" («неправильный пароль») или "login successful" («успешный вход») может помочь разыскать успешные сеансы входа, а при поиске уязвимостей внедрения SQL-кода поиск сообщений, содержащих "ODBC", "error" и т.д., может выявить уязвимые параметры.

В дополнение к списку выражений для осуществления поиска совпадений, доступны следующие опции:

  • Match type (Тип искомых данных) – Указывает, будут ли выражения простыми строками или регулярными выражениями
  • Case sensitive match (Чувствительность к регистру искомых данных) – Указывает, должна ли быть проверка выражения чувствительной к регистру.
  • Exclude HTTP headers (Исключить HTTP-заголовки) – Указывает, должны ли быть заголовки HTTP-ответов исключены при проверке.

9

Grep - Extract (Grep – Извлечение)

Эти настройки могут быть использованы для извлечения полезной информации из ответов в таблицу результатов атаки. Для каждого настроенного объекта в списке, Burp добавит новый столбец результатов, содержащий текст, который был извлечен для этого объекта. Затем вы можете отсортировать этот столбец (путем нажатием на заголовок столбца), чтобы упорядочить извлеченные данные.

Эта опция полезна при анализе информации с приложений и поддерживает широкий спектр атак. Например, если вы циклически просматриваете набор идентификационных номеров документов, то вы можете извлечь заголовок страницы каждого документа при поиске интересующих объектов. Если вы нашли функцию, которая возвращает информацию о других пользователях приложения, вы можете провести перебор через пользовательские идентификационные данные и восстановить соответствующие поля, связанные с пользователями, если вы ищите аккаунты администраторов или даже пароли. Если функция "forgotten password" («забыл пароль») принимает в качестве параметра имя пользователя и возвращает настроенную пользователем подсказку, то вы можете пройти через список типовых имен пользователей и собрать все подсказки, связанные с паролем, а затем визуально проверить список, разыскивая легко подбираемые пароли.

Если тот же самый объект поиска добавляется несколько раз подряд, значит каждый ответ сервера будет проверен несколькими вариантами этого выражения, а затем текст после каждого варианта будет захвачен. Это может оказаться полезным, например, когда HTML-таблица содержит полезную информацию, но отсутствуют уникальные префиксы, с помощью которых можно автоматически выделить каждый элемент.

10

Grep – Payloads (Grep – Полезные нагрузки)

Эти настройки могут быть использованы, чтобы выделить итоговые результаты, содержащие отражения, отправленных нагрузок. Если опция включена, Burp добавит новый столбец результатов, содержащий флажок, показывающий, было ли значение текущей нагрузки обнаружено в каждом ответе. (Если используется более одной нагрузки, то будут добавлены отдельные столбцы для каждого набора нагрузок.) Эта функция может быть полезной при обнаружении кросс-сайтовых сценариев и других, связанных с ответами уязвимостей внедрения, которые могут возникнуть, когда введенная пользователем информация динамически вставляется в ответ приложения.

Доступны следующие опции:

  • Case sensitive match (Чувствительность к регистру искомых данных) – Указывает, должна ли проверка нагрузки быть чувствительной к регистру.
  • Exclude HTTP headers (Исключить HTTP-заголовки) – Указывает, должны ли заголовки HTTP-ответов быть исключены при проверке.
  • Match against pre-URL-encoded payloads (Соответствие с предварительно URL-зашифрованными нагрузками) – Настройка Intruder на URL-шифрование нагрузок в рамках запросов является нормальным явлением. Однако они нормально декодируются приложением и отображаются в их первичной форме. Вы можете использовать эту опцию, чтобы представить для нагрузок проверочные ответы Burp в форме, предшествующей шифрованию.

11

Redirections (Переадресация)

Эти настройки управляют тем, как Burp работает с переадресацией при выполнении атак. Часто требуется следовать переадресациям, чтобы достигнуть цели вашей атаки, и результат каждой попытки может быть отображен, только следуя переадресации. При фаззинге (fuzzing) соответствующая обратная связь может появиться только в сообщении об ошибке, которое возвращается после первоначального ответа при переадресации.

Доступны следующие опции:

Следовать переадресациям – Эта опция управляет целями следования переадресациям. Доступные следующие опции:

  • Never (Никогда) – Intruder не будет следовать никаким переадресация.
  • On-site only (Только на сайте) – Intruder будет следовать только переадресациям на тот же самый веб-сайт, то есть по тем URL, которые используют тот же самый хост, порт и протокол, который был использован в первоначальном запросе.
  • In-scope only (Только в области) – Intruder будет следовать только переадресациям на URL, которые находятся в целевой области всего пакета.
  • Always (Всегда) – Intruder будет следовать переадресациям на какой бы то ни было URL. Эту опцию следует использовать с осторожностью – иногда веб-приложения передают ваши параметры запроса при переадресации третьей стороне и, следуя переадресациям, вы можете случайно атаковать приложения, которые вы не собирались атаковать.
  • Обработка Cookies-файлов в переадресациях – Если эта опция выбрана, то любые наборы cookie-файлов в ответах при переадресации будут отправлены повторно при следовании цели переадресации. Например, эта опция может понадобиться, если вы пытаетесь осуществить brute force формы проверки для восстановления логина, который всегда возвращает переадресацию на страницу с указанием логина входа, и создается новая сессия в ответ на каждую попытку входа.

12

0
Привязка к тегам burp suite kali Linux хак

Оставить комментарий

Гость Воскресенье, 26 Май 2019