Как вводить и изменять сообщения WebSocket для тестирования

Как вводить и изменять сообщения WebSocket для тестирования

18 июня 2025 г.

По какой -то причине большинство онлайн -ресурсов либо полностью пропускают тему перехвата и изменения трафика WebSocket, либо охватывают его исключительно в контексте информационной безопасности и охоты на уязвимость.

Тем не менее, WebSocket - это транспортный протокол, как и HTTP. Следовательно, при тестировании приложений важно иметь возможность работать с WebSockets так же, как и со стандартными запросами, - перехватывая, изменяя и отправляя пользовательские сообщения.


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

Тем не менее, ситуация становится значительно сложнее, когда речь заходит о тестировании подключений WebSocket на этих же клиентах, включая веб -приложения.

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

Но что, если вам нужно перехватить конкретное сообщение и изменить ответ?

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

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

Ниже мы рассмотрим два решения, которые охватывают большинство вариантов использования, связанных с веб -токатами. Они позволят вам перехватывать, изменять или даже вводить свои собственные сообщения, установив соединение человека в среднем уровне между клиентом и сервером.

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

Burp Suite

Zap Proxy

Бесплатной версии достаточно для выполнения большинства основных задач. Однако он не отображает сообщения Ping/Pong (или, если это так, я не смог найти настройку, чтобы включить их).
https://portswigger.net/burp/communitydownload

Это приложение с открытым исходным кодом, которое предлагает больше функций и, в некоторых отношениях, более удобно, чем Burp для работы с WebSockets, хотя у него есть свои недостатки.
https://www.zaproxy.org/download/

Я начну с ZAP Proxy, так как он имеет значительно больше функций по сравнению с Burp, хотя его интерфейс немного хуже.

Zap Proxy

Основными преимуществами ZAP по сравнению с Burp при работе с WebSockets являются:

  • Отображает сообщения Ping/Pong.
  • При отправке сообщения WebSocket вы можете вручную выбрать тип сообщения (текст, двоичный, пинг, поннг или закрытие).

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

Настройки

Чтобы открыть настройки, перейдите кИнструменты> ПараметрыПолем

При необходимости вы можете изменить язык интерфейса вЯзыкраздел. Изменение вступит в силу после перезапуска.

Затем перейдите кСетьПолем

Местные серверы/прокси

ОставитьАдрескак 0,0,0,0, если вам нужно прокси по входящим соединениям.

ВведитеПортВы собираетесь использовать.

Генерировать сертификат (Генерировать) и затем сохранить его (Сохранять) Установите его на вашем устройстве, используя тот же метод, который вы бы сделали для любого другого подхижиющего.

Просмотр сообщений

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

Подобно Burp, эта вкладка отображает все сообщения во всех активных соединениях. Каждому соединению назначается собственный идентификатор (называемый каналом в ZAP). Ключевое отличие от Burp заключается в том, что ZAP также отображает тип сообщения, включая сообщения Ping и Pong.

Нажатие на сообщение отображает свое тело на верхней панели. Контент также можно просмотреть в формате HEX.

Перехват запроса

Чтобы установить точку останова, щелкните правой кнопкой мыши на сообщение и выберитеПерерыв...Полем

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

АШаблон полезной нагрузкиПоле поддерживает регулярные выражения.

Когда сообщение перехватывается, оно появляется в верхнем окне. Здесь вы можете изменить его, а затем отправить. Чтобы отправить сообщение, нажмите кнопку стрелки.

Хотя они помечены по -разному, они делают то же самое. Единственная разница в том, что у вас включен глобальный перехват (🟢): щелчок «Стрелка первой» направляет текущее сообщение и перехватывает следующее, нажимая второе, отключает глобальное перехват.

Чтобы отбросить сообщение, не отправляя его, нажмите значок с пересеченным кругом: 🚫

❌ - Добавьте новую точку останова.

В нижней части экрана вы можете управлять своими активными точками останова вТочки остановавкладка

Отправка сообщений WebSocket

Чтобы открыть редактор сообщений, щелкните правой кнопкой мыши на сообщение в истории и выберитеОткройте/отправляйте с редактором сообщений, или перейти кИнструменты> Редактор сообщений WebSocketиз главного меню.

В редакторе вы можете выбрать целевое соединение WebSocket и направление сообщения:вход(для клиента) илиисходящий(на сервер).

Ключевое отличие от Burp заключается в том, что вы также можете выбрать тип сообщения:

Отрыжка костюма

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

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

Прокси

Третий экран - это основное окно всплеска. Перейдите прямо кПроксивкладка

Эта вкладка содержит пять основных суб-таблиц:

Перехват- Это функционирует как точка останова. При включении он перехватывает все запросы, которые соответствуют правилам, определенным в настройках (подробнее об этом ниже).

История HTTP- Это обеспечивает журнал всех HTTP -запросов.

ВЕБ -ВЕБКОВЫЙ ИСТОРИЯ- Это показывает историю сообщений во всех соединениях WebSocket. В рамках сеанса каждому соединению присваивается уникальный числовой идентификатор, что позволяет легко различать их.

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

Настройки прокси- Здесь вы настраиваете параметры прокси.

Настройки прокси

Нам нужно начать с настроек.

Если мы являемся мобильными клиентами, мы должны разрешить все входящие соединения. Для этого выберите единственную запись вПрокси -слушателии нажмитеРедактироватьПолем Там указать свой порт и изменитьПривязать к адресукВсе интерфейсыПолем

Экспортируйте сертификат:

  1. НажиматьСертификат импорта / экспорта CAВ нижней части прокси -слушателей блокируется.
  2. ВыбиратьСертификат в формате derПолем
  3. НажиматьВыберите файли вручную введите любое имя файла с расширением .der.
  4. Установите сертификат на свой смартфон или компьютер (в зависимости от того, что вы планируете контролировать), как и с другими ненубиями.

Запрос правила перехвата

Здесь вы определяете правила перехвата (точки останова). Burp автоматически перехватывает все трафики, соответствующие этим условиям. Поскольку наша цель - перехватить только сообщения WebSocket, мы добавим правило с установленным оператором вИ, тип совпаденияURLи отношения сМатчиПолем ВсостояниеПоле, введите URL -адрес вашего сервера WebSocket.

В правом верхнем углу нажмите на эллипсис (), перейти кНастройки проектаи выберитеСохранятьПолем Вам нужно будет вручную ввести имя файла и расширение (например, .json).

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

История веб -билетов - просмотреть сообщения

Здесь вы можете просто просмотреть сообщения, обмениваемые через соединение WebSocket, сортировать их по дате, идентификатору сокета и т. Д.

Когда вы нажимаете на сообщение, его тело отображается на панели внизу.

Перехват

Поскольку мы уже настроили настройки для перехвата запросов только на адрес WebSocket, все, что нам нужно сейчас, это нажмите наПерехват выключен/включенпереключать.

После того, как вы включите его, все соответствующие запросы будут захвачены и отображены на вкладке «Перехват». Здесь вы можете изменить запрос, а затем нажать →впередотправить его.

Ретранслятор -Отправка сообщений в WebSocket

При тестировании веб -питания вам часто нужно делать больше, чем просто перехватить трафик. Также важно проверить, как клиент обрабатывает различные сообщения, отправляемые с сервера. Наиболее удобный способ сделать это - напрямую отправлять сообщения клиенту через подключение к WebSocket, эмулируя сервер (или наоборот, если ваш тестовый пример требует этого).

Чтобы сделать это, идите вВЕБ -ВЕБКОВЫЙ ИСТОРИЯВкладка, щелкните правой кнопкой мыши на любом сообщении в активном соединении и выберитеОтправить в ретрансляторПолем Затем переключитесь наРетрансляторвкладка (расположенная на том же уровне, что иПроксивкладка).

Слева вы найдете панель для сочинения вашего сообщения, в то время как панель справа отображает историю сообщений WebSocket.

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

Кроме того, сообщения могут быть отправлены и отредактированы в формате HEX. Это особенно полезно, когда контракт API требует отправки конкретных последовательностей байтов вместо простого текста.

Заключение

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

Еще неизвестно, сколько времени потребуется для таких мейнстрим, как Чарльз и Проксиман, чтобы внедрить надежную поддержку WebSocket. До тех пор мы должны обойтись с инструментами, которые в настоящее время находятся в нашем распоряжении.

Надеюсь, вы нашли это руководство полезным. Не стесняйтесь следить за мной и подключитьсяLinkedIn- Я всегда рад слышать от других профессионалов.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE