Как стать автором
Обновить
0
Digital Security
Безопасность как искусство

Burp и его друзья

Время на прочтение11 мин
Количество просмотров19K

В этой статье мы расскажем о полезных плагинах для Burp Suite Professional — инструмента для анализа веб-приложений. Плагинов много, и, чтобы помочь аудиторам сделать правильный выбор, мы составили список тех, которые сами чаще всего используем в работе.


img


Кратко о Burp Suite



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


Удобство Burp Suite заключается в том, что все утилиты и плагины, которые дополняют его, могут взаимодействовать друг с другом. В настройках браузера вы можете установить в качестве прокси Burp Suite (для сайтов, работающих по HTTPS, также будет нужно установить сгенерированный TLS-сертификат Burp). В этом случае все ваши действия в браузере, а именно отправленные запросы и полученные ответы, будут сохраняться в Burp Proxy. Кроме браузера, на десктопе можно попробовать перенаправить в Burp HTTP-трафик из мобильных приложений, да и вообще любой HTTP-трафик, будь то десктопное приложение или какое-нибудь IoT устройство. HTTP-запросы из истории Proxy можно пересылать в другие инструменты и работать с ними.


Например, вам нужно проверить, можно ли устроить bruteforce-атаку на подбор OTP-кода. Для этого вам нужно перехватить запрос на проверку OTP...



… и отправить этот запрос в инструмент Intruder.
После этого нам достаточно будет выделить место в HTTP-запросе, которое нужно атаковать, и настроить значения, которые будут применяться, – в данном случае у нас перебор чисел от 0000 до 9999.



Либо можно воспользоваться инструментом Repeater для того, чтобы вручную выполнять какие-либо проверки, тесты или атаковать веб-приложение. Например, можно легко проэксплуатировать SQL-инъекцию в случае, если какие-нибудь иные инструменты вроде sqlmap не могут с ней справиться.



Этим инструментарий Burp Suite не ограничивается. Приведем список стандартных инструментов Burp Suite “из коробки”:


  • Proxy — прокси-сервер, позволяющий перехватывать весь HTTP- и WebSocket-трафик между браузером и веб-приложением, а также просматривать историю прошедших через него запросов. Кроме того, Proxy имеет ряд настроек, позволяющих перенаправлять трафик или модифицировать его “на лету”.
  • Scanner — инструмент для сканирования веб-приложения на уязвимости. С версии Burp 2.0 также включает crawler для сбора доступных страниц и endpoint в веб-приложении.
  • Intruder — инструмент для проведения автоматизированных атак и фаззинга веб-приложений.
  • Repeater — инструмент для ручного изменения и повторной отправки конкретных HTTP-запросов, а также для анализа ответов приложения.
  • Sequencer — инструмент для автоматизированного анализа энтропии в ответах от сервера. Это могут быть сессионные идентификаторы или токены. Представьте: у вас есть тысяча псевдослучайных токенов, и нужно узнать, есть ли закономерность в их генерации. В этом случае и пригодится Sequencer. Однако на практике этот инструмент бывает полезен очень редко.
  • Infiltrator — инструмент, который помогает проводить аудит приложений, добавляя в них хуки для потенциально уязвимых мест. Для его использования необходимо, чтобы разработчик установил генерируемый инструментом файл на машину, где запущено приложение. В работе инструмент применяется крайне редко.
  • Clickbandit — инструмент для генерации clickjacking атак. На практике пригождается редко.
  • Decoder — инструмент для кодирования и декодирования данных.
  • Comparer — работает почти как diff, поможет найти различия между двумя большими запросами.
  • Collaborator — внешний сервер, который позволяет проверить различные blind-вектора, когда нужен “отстук” на какой-то публично доступный IP-адрес в интернете.
  • Extender — “волшебная палочка” для добавления расширений.

Также стоит отметить, что Burp поддерживает работу с WebSocket, позволяя так же, как и при работе с протоколом HTTP, перехватывать и модифицировать запросы, передаваемые через WebSocket. А в новых версиях добавили функциональность, аналогичную Repeater, только для WebSocket.


Подробно останавливаться на каждом элементе Burp Suite мы не будем, а перейдем скорее к самому интересному — полезным дополнениям и расширениям.


Param-miner


Про param-miner мы упоминали, когда обсуждали Arjun. Этот инструмент аналогичен Arjun, но работает в Burp и, кроме параметров, может находить еще скрытые заголовки и Cookie. Изначально разрабатывался как средство для поиска скрытых параметров, которые могут быть полезны при поиске уязвимостей типа Web Cache Poisoning.


+


  • Плагин помогает находить скрытые GET/POST-параметры, параметры JSON-запроса, HTTP-заголовки, Cookie.
  • Позволяет запускать как анализ нескольких запросов, так и всего трафика.

-


  • Требует внимания и настройки, чтобы избегать проблем с производительностью и случайным DoS на веб-приложения.
  • В случае если вы решите остановить запущенный процесс поиска параметров, вам придется удалить или отключить плагин — иначе никак.
  • Крайне неудобный UI: настройка плагина производится в отдельном окне, а результаты отображаются только в списке всех уязвимостей и могут легко затеряться или забыться.

Stepper


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


Самый простой способ использования следующий. Допустим, для каждого нового запроса вам нужно получить новый CSRF-токен. Делать это вручную крайне неудобно. Вместо этого вы можете сделать последовательность в Stepper, которая будет сначала получать CSRF-токен, после чего выполнять нужный вам запрос. Для этого вам нужно будет в первом запросе указать, что является параметром, и добавить его как переменную (csrf_token в примере).



А затем в следующем запросе указать, куда этот параметр подставить, используя название переменной ($VAR:csrf_token$). В итоге Stepper сможет выполнить корректную последовательность запросов. Результаты подстановки можно будет увидеть во вкладке Stepper Replacements.



Кроме того, этот параметр можно использовать в другом инструменте, например в Repeater, указав в запросе переменную как $VAR:Test:csrf_token$:



Используя возможности Stepper, можно легко заскриптовать такие действия, как многоступенчатая покупка или сложный процесс аутентификации, что значительно упрощает процесс тестирования сложной логики в веб-приложениях.


+


  • Существует возможность создавать произвольные последовательности HTTP-запросов.
  • Для извлечения интересующих параметров из запросов и ответов используются регулярные выражения, что дает определенную гибкость в конфигурировании последовательности.
  • Есть глобальные переменные, которые можно использовать в Repeater.

-


  • Отсутствует режим для фаззинга последовательности запросов, аналогичный Intruder.

Turbo intruder


Turbo Intruder — более быстрый аналог Intruder, оснащенный скриптовым движком для отправки большого количества HTTP-запросов и анализа результатов. Полезен, если ВАМ НУЖНА СКОРОСТЬ! Очень эффективен при поиске уязвимостей, связанных с "состоянием гонки" (Race Condition), поскольку имеет внутри небольшой скриптовый движок на Python, в котором есть специальные функции для тестирования Race Condition (например, одномоментная отправка запросов). Возможности расширения позволяют заскриптовать различную логику, например многоступенчатую аутентификацию.
Пример простой bruteforce-атаки с использованием Turbo Intruder:



Для сравнения устроим с помощью Intruder и Turbo Intruder bruteforce-атаку для подбора OTP, состоящего из 4-х цифр от 0000 до 9999. Будем использовать 50 потоков. В нашем эксперименте Turbo Intruder справился всего за 18 секунд, в то время как Intruder за 18 секунд совершил лишь примерно 1000 запросов!


+


  • Быстрый. По словам разработчиков, опережает даже скрипты на Go.
  • Может быть запущен автономно через командную строку.
  • Скриптовый движок на Python позволяет обеспечить гибкость, а значит может работать с многоступенчатыми последовательностями атак и отправлять запросы любого вида (может быть полезно при попытке эксплуатации атак HTTP Request Smuggling).
  • Собственный стек HTTP позволяет отправлять запросы, которые нарушают корректную работу некоторых библиотек, а также позволяет добиться хорошей скорости отправки запросов.
  • Удобная система фильтров анализа отправленных запросов и полученных ответов.
  • Существуют различные шаблоны скриптов.

-


  • Сложнее использовать, чем стандартный Intruder.
  • Написание скриптов в окне без подсветки синтаксиса и мощи современных IDE довольно неудобно, кроме того эти скрипты сложно отлаживать.
  • Интерфейс в отдельном от Burp окне.
  • По словам разработчиков, сетевой стек не так надежен, как ядро ​​Burp.
  • Может стать причиной DoS, поэтому рекомендуется отслеживать производительность приложений во время атак.

Freddy


Freddy — плагин, который позволяет проверить уязвимости, связанные с Java и .NET десериализацией в веб-приложениях. Может работать в нескольких режимах, а также добавляет дополнительные проверки при использовании стандартного Burp-сканирования. Имеет под капотом довольно большую библиотеку различных эксплоитов и проверок для десериализации.


Примеры уязвимостей, которые может обнаруживать Freddy:



+


  • Пассивный режим сканирования может обнаруживать использование потенциально опасных библиотек сериализации и API-интерфейсов, анализируя сигнатуры в HTTP-запросах и HTTP-ответы для поиска исключений, выдаваемые целевыми библиотеками.
  • Активный режим сканирования добавляет проверки в стандартный Burp Scanner, для обнаружения уязвимостей используются различные методы.
  • Добавляет в Intruder словарь с различными проверками для поиска баг десериализации.

Backslash Powered Scanner


Backslash Scanner — еще один плагин, который неплохо дополняет стандартные проверки Active Scanner. Внутри плагина используются специальные техники, позволяющие обнаружить нестандартное поведение веб-приложений при обработке запросов с различными последовательностями спецсимволов. Это бывает очень полезно в случае, если на стороне веб-приложения используется фильтрация/WAF или сама уязвимость нетривиальная и сложно эксплуатируемая. В этом случае Backslash Scanner укажет вам на те места в запросе, которые требуют пристального внимания, что будет хорошим стартом для анализа уязвимости.


Пример репорта Backslash Scanner:



+


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

-


  • Может давать false-positive и потому требует некоторой настройки для конкретных веб-приложений.

Active Scan ++


Active Scan ++ также дополняет стандартный сканер Burp Suite некоторыми проверками, которые не входят в стандартный комплект поставки Burp.


+


  • Не требует никаких дополнительных настроек.
  • Периодически обновляется, добавляются новые техники, основанные на новых исследованиях.

J2EEScan


J2EEScan — плагин, заточенный для атак на J2EE (Java 2 Enterprise Edition) приложения. "Под капотом" имеет большое количество проверок, связанных с Java-приложениям, в том числе проверки на известные уязвимости вроде “Apache Struts”. Проверки также добавляются в стандартный Burp Scanner. На практике этот сканер далеко не часто что-либо находит, но иметь его под рукой точно стоит.



+


  • Не требует никаких дополнительных настроек.

-


  • Плагин давно не обновлялся.

Upload Scanner


Upload Scanner — еще один плагин для дополнения проверок Active Scanner. Поможет проверить точки загрузки файлов на такие известные уязвимости, как ImageTragic, инъекции PHP в метадату изображения, загрузку файла htaccess и т.д.


+


  • Имеет гибкие настройки, позволяющие указать форматы файлов, используемые модули, что позволяет уменьшить количество отправляемых плагинов запросов.
  • Кроме проверки уязвимостей, связанных с обработкой изображений, плагин умеет искать Code Injection, XSS, обход CSP и т.д.

Error Message Checks


Error Message Checks — плагин, который пассивно обнаруживает различные stacktrace и вывод ошибок в веб-приложении, которые могут появиться при сканировании или crawling'е. Это очень полезно, поскольку не все сканеры могут обнаружить сообщения об ошибках сервера и оповестить о них, потому это часто остается незамеченным для аудитора, который смотрит на приложение со стороны пользователя.


+


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

Decoder Improved


Decoder Improved — по сути, улучшенный стандартный Decoder. Встроенный Decoder в Burp не так уж и хорош и имеет свои недостатки: в нём нет вкладок, неудобно использовать Hex-редактор, к тому же имеет довольно скудное количество возможных форматов данных. С этими проблемами и помогает справится Decoder Improved.



+


  • Поддерживает всё, что есть в Decoder, а также позволяет использовать алгоритмы сжатия (Gzip, Zlib), хешировать данные, а также меняет систему счисления (от base 2 до base 32).
  • Поддерживает функциональность вкладок.
  • Имеет улучшенный Hex-редактор.
  • Предлагает функциональность регулярных выражений, что позволяет в процессе кодирования/декодирования легко подменять данные.
  • Поддерживает режим замены только спецсимволов HTML/URL, в то время как буквенно-цифровые символы остаются без изменений.

Hackvertor


Hackvertor — плагин, который также поможет преобразовать данные в запросах и ответах. Только для этого не придется переключаться между вкладками. При работе с ним в Repeater или Intruder появляется возможность оборачивать пейлоады в специальные теги, с помощью которых задаются правила кодирования или декодирования данных. А все преобразования происходят “на лету” во время отправки запроса. А еще у него есть форк, который работает с pareq. Он пригодится при тестировании 3D Secure от нашего коллеги web_rock.



+


  • Позволяет кодировать и декодировать данные на лету.
  • "Под капотом" содержится огромное количество различных правил преобразования, которые также можно сочетать друг с другом.
  • Шаблоны XSS-пейлоадов “из коробки”.
  • Возможность создания своих правил.
  • Возможность использования прямо из Repeater или Intruder.

Logger++


Logger++ плагин, главная задача которого — тщательно логировать все запросы, происходящие внутри Burp Suite. Как те, что просто “летят” из браузера, так и те, что генерируются плагинами и сканером. Плагин устраняет основной недостаток встроенного Proxy History — логирование запросов только из браузера и отсутствие прочих запросов из “недр” Burp, например запросов конкретного плагина, запросов из других инструментов (например, Repeater) или сканера в текущий момент. Плагин поддерживает фильтрацию логов. Так, вы можете найти все POST-запросы без CSRF-токена. Для этого нужно, побродив по ресурсу, отфильтровать историю запросов по методу запроса и интересующему параметру.



+


  • Логирование всех запросов из инструментов и плагинов.
  • Наличие фильтрации для быстрого поиска по логу запросов.
  • Конфигурация плагина позволяет выбирать необходимые для логирования инструменты.
  • Существует возможность импортировать запросы из OWASP ZAP, Proxy History и WStalker.
  • Существует возможность экспорта логов в формате JSON и CSV.

-


  • Не очень интуитивные фильтры, которые используются для поиска по истории запросов.
  • Может влиять на производительность Burp, потому что без дополнительных настроек логирует все.

HTTP Mock


HTTP Mock — плагин, который будет полезен, если вам надо подменять не просто кусочек ответа (тогда вам поможет Match&Replace в настройках Proxy Intercept), а целиком весь ответ для определенных URL.



+


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

Request highlighter


Request highlighter — плагин для подсветки HTTP-запросов на основе содержимого заголовков. Удобно для выделения уникальных Cookies, хостов, токенов аутентификации, пользовательских заголовков. С помощью плагина во вкладке Proxy History можно помечать запросы, относящиеся к различным сессиям, хостам, браузерам или устройствам. Данная функциональность может быть очень полезна, если нужно протестировать сайт с нескольких браузеров с разными пользовательскими сессиями — плагин будет подсвечивать запросы соответствующими цветами.


+


  • Удобная подсветка.

-


  • Поиск и выделение осуществляется только по заголовкам запроса — создать выделения на основе заголовков ответа не удастся.

Autorize


Autorize — плагин для проверки уязвимостей, связанных с разграничением прав доступа в веб-приложении. Удобен и прост в работе. По большей части всё, что нужно, — это просто указать, где в запросе места, по которым определяется сессия пользователя, и подставить нужные значения. Далее плагин будет повторять все запросы, которые вы делаете в браузер, но уже с другими сессионными идентификаторами, что позволяет очень быстро проверить IDOR’ы в приложении.


+


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

HTTP Request Smuggler


HTTP Request Smuggler — плагин для проверки недавно заново открытых атак типа HTTP Request Smuggling. Несмотря на то, что стандартный сканер Burp Suite также выполняет проверки на данную уязвимость. Этот плагин обновляется чаще, и его можно запускать отдельно от остального сканирования, что бывает удобно, если нужно проверить только эту уязвимость.


PHP Object Injection Check / PHP Object Injection Slinger


PHP Object Injection Check и PHP Object Injection Slinger — плагины, которые позволяют проверить уязвимости в десериализации PHP-объектов. Первый просто добавляет несколько проверок в стандартный Burp Scanner, а второй представляет собой незасимый сканер, в который отдельно нужно добавлять запросы. PHP Object Injection Slinger содержит в себе множество различных проверок из PHPGGC — инструмента для создания payload’ов для десериализации в PHP.


CSP Auditor


CSP Auditor — плагин, который помогает обнаружить слабости в конфигурации CSP. Кроме того, он парсит CSP из ответа сервера и отображает их в более удобном для чтения и анализа виде.



+


  • Удобный вид для чтения CSP.

-


  • Редко обновляется.

Заключение


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

Теги:
Хабы:
Всего голосов 27: ↑27 и ↓0+27
Комментарии3

Публикации

Информация

Сайт
dsec.ru
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия

Истории