Введение
В этой лабораторной работе вы научитесь выполнять атаку типа "Sniper" — один из наиболее фундаментальных и часто используемых типов атак в инструменте Intruder Burp Suite. Burp Intruder — это мощный инструмент для автоматизации настраиваемых атак на веб-приложения с целью выявления и эксплуатации уязвимостей безопасности.
Атака Sniper предназначена для перебора списка полезных нагрузок (payloads), поочередно вставляя их в одну, указанную позицию в HTTP-запросе. Это делает ее идеальной для таких задач, как угадывание имен пользователей, поиск токенов сброса пароля или фаззинг (fuzzing) одного параметра на наличие уязвимостей.
Мы пройдемся по процессу отправки запроса в Intruder, настройки позиции полезной нагрузки, выбора типа атаки Sniper, загрузки простого списка полезных нагрузок и, наконец, запуска атаки и анализа результатов. Для этой лабораторной работы Burp Suite уже установлен в среде.
В Intruder > Positions выберите значение параметра и нажмите 'Add §'
На этом шаге вы определите цель для вашей атаки. После отправки запроса в Intruder вам нужно точно указать, куда должны вставляться полезные нагрузки.
Сначала вам нужен запрос для работы. Для целей этой лабораторной работы мы предполагаем, что вы уже перехватили запрос на вход в систему в Burp Proxy и отправили его в Intruder (щелкнув правой кнопкой мыши по запросу и выбрав "Send to Intruder"). Запрос в Intruder может выглядеть следующим образом:
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=myuser&password=mypass
По умолчанию Burp Intruder автоматически добавляет маркеры полезной нагрузки (§) вокруг того, что он считает интересными частями запроса. Чтобы получить точный контроль, лучше удалить их и установить свои собственные.
- Перейдите на вкладку
Intruder>Positions. - Нажмите кнопку
Clear §справа, чтобы удалить все автоматически добавленные маркеры полезной нагрузки. - В редакторе запроса выделите мышью только значение параметра
username(в данном случаеmyuser). - При выделенном значении нажмите кнопку
Add §.
Теперь ваш запрос должен выглядеть следующим образом, где только значение имени пользователя отмечено как позиция для полезной нагрузки:
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=§myuser§&password=mypass
Это указывает Intruder вставлять полезные нагрузки только вместо myuser, оставляя остальную часть запроса неизменной для каждой попытки.
Установите тип атаки на 'Sniper'
На этом шаге вы выберете подходящий тип атаки для вашей цели. Burp Intruder предлагает четыре различных типа атак, каждый из которых служит своей цели. Для этой лабораторной работы мы будем использовать Sniper.
Вот краткий обзор типов атак:
- Sniper: Использует один набор полезных нагрузок (payload set). Он поочередно нацеливается на каждую позицию полезной нагрузки (
§...§). Для каждой позиции он перебирает каждую полезную нагрузку из списка. Это наиболее распространенный тип для фаззинга одного параметра. - Battering ram: Использует один набор полезных нагрузок. Он одновременно вставляет одну и ту же полезную нагрузку во все определенные позиции полезной нагрузки.
- Pitchfork: Использует несколько наборов полезных нагрузок. Для каждого запроса он берет одну полезную нагрузку из каждого набора и помещает их в соответствующие позиции.
- Cluster bomb: Использует несколько наборов полезных нагрузок. Он тестирует каждую возможную комбинацию полезных нагрузок из всех наборов.
Поскольку наша цель — протестировать список различных имен пользователей в одном параметре, Sniper — идеальный выбор.
Чтобы установить тип атаки:
- Оставайтесь на вкладке
Intruder>Positions. - Найдите выпадающее меню
Attack typeв верхней части экрана. - Нажмите на выпадающее меню и выберите
Sniperиз списка.
Теперь вы настроили Intruder на использование метода атаки Sniper.
Перейдите на вкладку Intruder > Payloads
На этом шаге вы перейдете в раздел, где определяются фактические данные, которые будут использоваться в атаке. Теперь, когда вы настроили целевую позицию (username) и тип атаки (Sniper), следующим логичным шагом является предоставление списка полезных нагрузок (payloads).
Полезные нагрузки — это значения, которые Intruder будет подставлять в позицию §...§, определенную вами на Шаге 1.
Чтобы продолжить, просто перейдите на подвкладку Payloads в инструменте Intruder. Вы найдете ее рядом с вкладкой Positions, над которой вы только что работали. Нажатие на эту вкладку перенесет вас на экран конфигурации полезных нагрузок, где на следующем шаге вы настроите список потенциальных имен пользователей.
Загрузите простой список полезных нагрузок (например, admin, test, user)
На этом шаге вы настроите список полезных нагрузок для атаки. Поскольку наш тип атаки — Sniper, и у нас одна позиция для полезной нагрузки, нам нужно настроить только один набор полезных нагрузок.
На вкладке Intruder > Payloads вы увидите разделы Payload Sets и Payload Options.
- В разделе
Payload Setsубедитесь, чтоPayload setустановлен на1, аPayload type— наSimple list. Это значение по умолчанию и используется для предоставления простого списка строк. - В разделе
Payload Options [Simple list]вы добавите свои полезные нагрузки. Вы можете сделать это, вводя текст непосредственно в текстовое поле или используя кнопкуAdd.
Давайте добавим несколько распространенных имен пользователей для тестирования: В текстовой области введите следующие значения, каждое на новой строке:
admin
test
user
root
guest
Теперь ваш раздел Payload Options должен содержать этот список. Intruder отправит один запрос для каждой строки в этом списке, подставляя значение в параметр username, который вы отметили ранее. Payload Count внизу теперь должен показывать 5.
Запустите атаку и наблюдайте за таблицей результатов
На этом шаге вы запустите настроенную атаку и проанализируете ее результаты. Поскольку позиция, тип атаки и полезные нагрузки настроены, вы готовы начать.
- Чтобы начать атаку, нажмите кнопку
Start attack, расположенную в правом верхнем углу вкладкиIntruder. - Откроется новое окно "Attack", отображающее таблицу результатов. Это окно будет заполняться в режиме реального времени по мере того, как Intruder отправляет каждый запрос.
Таблица результатов — самая важная часть процесса. Обратите пристальное внимание на столбцы, особенно на:
- Payload: Конкретная полезная нагрузка, использованная для данного запроса (например,
admin,test). - Status: Код состояния HTTP ответа (например,
200,302,401). - Length: Размер тела ответа в байтах.
Чтобы найти потенциальные уязвимости или действительные имена пользователей, ищите аномалии. Например, успешный вход может привести к статусу 302 Found (перенаправление на панель управления), в то время как все неудачные попытки приводят к статусу 200 OK (повторное отображение страницы входа). Аналогично, ответ для действительного имени пользователя может иметь другую Length, чем остальные, поскольку сообщение об ошибке меняется (например, "Incorrect password" против "User not found").
Сортируя таблицу по столбцам Status или Length, вы можете легко обнаружить любые ответы, которые отличаются от базовых, что указывает на потенциальное обнаружение.
Резюме
В этой лабораторной работе вы успешно выполнили базовую атаку Sniper с использованием Burp Intruder. Это фундаментальный навык для любого специалиста по тестированию безопасности веб-приложений.
Вы научились:
- Изолировать конкретный параметр запроса для тестирования на вкладке
Positions, очистив значения по умолчанию и добавив свои собственные. - Устанавливать тип атаки
Sniper, который идеально подходит для тестирования одного параметра с использованием списка полезных нагрузок. - Переходить на вкладку
Payloadsи загружать простой пользовательский список потенциальных входных данных. - Запускать атаку и анализировать таблицу результатов, ища аномалии в кодах состояния HTTP и длине ответов для выявления интересного поведения.
Овладение атакой Sniper в Burp Intruder предоставляет мощный метод для автоматизации повторяющихся задач тестирования, таких как перечисление имен пользователей, подбор паролей и фаззинг на предмет распространенных уязвимостей.
