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

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

Введение

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

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

В этой лаборатории вы научитесь настраивать Burp Proxy для перехвата ответов сервера и модификации HTML-содержимого веб-страницы перед его отображением в вашем браузере. Для этой демонстрации мы будем использовать простой локальный веб-сервер.

Перейдите в Proxy > Options > Intercept Server Responses

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

Сначала вам нужно запустить Burp Suite. Вы можете найти его в меню приложений или выполнив поиск.

После открытия Burp Suite:

  1. Нажмите на вкладку Proxy в верхней части окна.
  2. Во вкладке Proxy нажмите на подвкладку Options.
  3. Прокрутите вниз по опциям, пока не найдете раздел под названием Intercept Server Responses.

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

Включите флажок 'Intercept responses based on the following rules'

На этом шаге вы активируете функцию перехвата ответов.

В разделе Intercept Server Responses, который вы нашли на предыдущем шаге, вы увидите флажок.

  1. Нажмите на флажок рядом с надписью Intercept responses based on the following rules.

Как только вы установите этот флажок, Burp Proxy будет настроен на перехват ответов сервера, соответствующих правилам, определенным ниже. Правило по умолчанию, Is a response to a request that was intercepted (Является ответом на перехваченный запрос), добавляется автоматически и идеально подходит для наших целей. Это правило указывает Burp перехватывать ответ только в том случае, если соответствующий ему запрос также был перехвачен прокси. Это предотвращает остановку Burp на каждом ответе, например, на фоновых изображениях или скриптах, и фокусирует внимание только на трафике, который вы активно просматриваете.

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

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

  1. Перейдите на подвкладку Proxy > Intercept.
  2. Убедитесь, что кнопка гласит Intercept is on (Перехват включен). Если она гласит "Intercept is off" (Перехват выключен), нажмите на нее, чтобы включить перехват.
  3. Нажмите кнопку Open Browser (Открыть браузер). Откроется новое окно браузера Chromium, предварительно настроенное на использование Burp Proxy.
  4. В адресной строке браузера введите http://127.0.0.1:8000 и нажмите Enter.

Браузер будет казаться загружающимся бесконечно. Это происходит потому, что Burp перехватил HTTP-запрос. Вернитесь в окно Burp Suite. На вкладке Proxy > Intercept вы увидите необработанный HTTP-запрос:

GET / HTTP/1.1
Host: 127.0.0.1:8000
... (other headers)

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

Измените HTML-тело в перехваченном ответе

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

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

HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.6
Date: ...
Content-type: text/html
Content-Length: ...

<h1>Welcome to the Original Page!</h1><p>This is the content you will modify.</p>

Основная текстовая область редактируема. Здесь вы можете изменять ответ "на лету".

  1. В текстовой области тела ответа найдите строку <h1>Welcome to the Original Page!</h1>.
  2. Измените текст на <h1>Welcome to the Modified Page!</h1>.
  3. Вы также можете изменить текст абзаца, если хотите, например, на <p>This content has been changed by Burp Proxy.</p>.

Теперь вы изменили ответ сервера. Он все еще удерживается Burp Proxy и еще не достиг браузера.

Перешлите измененный ответ и наблюдайте за изменением в браузере

На этом заключительном шаге вы отправите измененный ответ в браузер и увидите результат.

Измененный ответ все еще ожидает на вкладке Proxy > Intercept.

  1. Нажмите кнопку Forward (Переслать) в последний раз. Это освободит ответ и отправит вашу измененную версию в браузер.
  2. Вернитесь в окно Burp Browser, которое ранее загружалось.

Страница теперь завершит загрузку, но вместо оригинального содержимого отобразит введенный вами текст. Вы должны увидеть:

Welcome to the Modified Page! This content has been changed by Burp Proxy.

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

Резюме

В этой лабораторной работе вы получили практический опыт работы с ключевой функцией Burp Suite. Вы научились:

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

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