Изменение HTTP-запроса на лету в Burp Proxy

Beginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы изучите основы перехвата и модификации веб-трафика с помощью Burp Suite, одного из самых популярных инструментов для тестирования безопасности веб-приложений. Возможность перехватить HTTP-запрос, изменить его содержимое перед отправкой на сервер, а затем наблюдать за ответом является фундаментальным навыком для обнаружения широкого спектра уязвимостей, таких как подмена параметров (parameter tampering) и небезопасные прямые ссылки на объекты (insecure direct object references).

Вы будете использовать Burp Proxy для захвата запроса из вашего браузера, модификации параметра URL "на лету" и его перенаправления на простое веб-приложение, работающее локально. Это практическое упражнение продемонстрирует, как прокси может использоваться для манипулирования обменом данными между клиентом и сервером.

Включение режима перехвата на вкладке Proxy

На этом шаге вы запустите Burp Suite и включите его основную функцию перехвата трафика. Burp Proxy действует как посредник (man-in-the-middle) между вашим браузером и целевым веб-сервером, позволяя вам просматривать и изменять весь проходящий через него трафик.

Сначала откройте меню запуска приложений (application launcher) в верхнем левом углу рабочего стола и запустите Burp Suite.

  1. Нажмите "Temporary project" (Временный проект), а затем нажмите "Next" (Далее).
  2. Выберите "Use Burp defaults" (Использовать настройки Burp по умолчанию) и нажмите "Start Burp" (Запустить Burp).

После открытия Burp Suite перейдите на вкладку Proxy. Здесь вы управляете перехватом HTTP-трафика.

На вкладке Proxy вы увидите несколько подвкладок. Убедитесь, что вы находитесь на подвкладке Intercept. Здесь вы найдете кнопку, которая включает и выключает перехват. По умолчанию он может быть выключен.

Нажмите кнопку, на которой написано "Intercept is off" (Перехват выключен), чтобы включить его. Текст кнопки изменится на "Intercept is on" (Перехват включен), и она будет выглядеть нажатой.

Теперь Burp Proxy активно ожидает захвата следующего HTTP-запроса, сделанного предварительно настроенным браузером в этой лабораторной среде.

Перехват запроса из вашего браузера

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

Откройте веб-браузер, предоставленный в лабораторной среде. Браузер уже настроен на отправку своего трафика через Burp Proxy, работающий на 127.0.0.1:8080.

В адресной строке браузера перейдите к простому веб-приложению, которое было запущено скриптом настройки. Введите следующий URL и нажмите Enter:

http://127.0.0.1:5000/search?q=books

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

Теперь вернитесь в окно Burp Suite. На вкладке Proxy -> Intercept вы увидите необработанное содержимое HTTP-запроса, который только что отправил ваш браузер.

GET /search?q=books HTTP/1.1
Host: 127.0.0.1:5000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
...

Теперь вы успешно перехватили HTTP-запрос до того, как он достиг своего назначения.

Изменение значения параметра в представлении 'Raw' запроса

На этом шаге вы измените перехваченный HTTP-запрос. Это основа для изменения запросов "на лету". Вы можете изменить любую часть запроса, включая метод, путь, заголовки или тело. В этой лаборатории вы измените параметр URL.

При отображении запроса на вкладке Proxy -> Intercept убедитесь, что вы находитесь в представлении Raw. Это представление показывает текст запроса в открытом виде, что облегчает его прямое редактирование.

Найдите первую строку запроса:

GET /search?q=books HTTP/1.1

Часть q=books является параметром URL. Серверное приложение использует значение q (которое в настоящее время равно books) для генерации своего ответа.

Теперь отредактируйте это значение непосредственно в текстовой области. Щелкните в представлении Raw и измените books на dvds.

Измененная первая строка теперь должна выглядеть так:

GET /search?q=dvds HTTP/1.1

Вы успешно изменили данные запроса во время передачи. Браузер не знает об этом изменении; он по-прежнему думает, что запросил страницу с q=books. Сервер еще не получил никакого запроса.

Отправка измененного запроса

На этом шаге вы освободите измененный запрос из Burp Proxy и позволите ему продолжить путь к веб-серверу.

После редактирования запроса на вкладке Intercept вам нужно решить, что с ним делать. У вас есть три основных варианта с помощью кнопок в верхней части представления:

  • Forward: Отправляет запрос (в его текущем, возможно измененном, состоянии) на сервер.
  • Drop: Полностью отбрасывает запрос. Браузер в конечном итоге получит ошибку тайм-аута.
  • Action: Предоставляет меню других действий, таких как отправка запроса в другие инструменты Burp.

Чтобы отправить измененный запрос на сервер, нажмите кнопку Forward.

После того как вы отправите запрос, Burp покажет ответ сервера на той же вкладке. Вы можете отправить этот ответ обратно в браузер, снова нажав Forward.

Чтобы избежать перехвата последующих запросов (например, для favicon), рекомендуется отключить перехват после того, как вы закончили с интересующим вас запросом. Нажмите кнопку "Intercept is on", чтобы переключить ее обратно на "Intercept is off". Это позволит всему остальному трафику проходить свободно.

Наблюдение за ответом сервера на измененный запрос

На этом шаге вы увидите результат вашего действия как в браузере, так и в истории Burp Suite. Это подтвердит, что сервер обработал измененные данные.

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

You searched for: dvds

Это подтверждает, что сервер получил и обработал измененное значение параметра (dvds), а не исходное (books). Вам удалось обмануть сервер, заставив его отобразить другой контент.

Затем вернитесь в Burp Suite для более детального просмотра. Щелкните на вкладке Proxy, а затем на подвкладке HTTP history. Эта вкладка регистрирует все запросы и ответы, прошедшие через прокси. Вы должны увидеть запись для GET /search?q=dvds. Щелкните на нее, чтобы увидеть полный отправленный вами запрос и соответствующий ответ сервера, что обеспечит полную запись взаимодействия.

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

Резюме

В этой лаборатории вы освоили важнейший навык модификации HTTP-запроса "на лету" с помощью Burp Proxy.

Вы успешно:

  • Включили режим перехвата в Burp Proxy.
  • Захватили живой HTTP-запрос из браузера.
  • Изменили параметр URL в представлении необработанного запроса (raw request view).
  • Отправили измененный запрос на веб-сервер.
  • Наблюдали, что ответ сервера основывался на ваших измененных данных.

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