Kraken
  • 🐙Привет!
    • 👋Добро пожаловать!
  • ✏️Крупицы знаний
    • 🌚Общие статьи
      • Как установить Kali Linux
      • Как поставить виртуальную Kali Linux
      • Что такое CVE
      • Обзор популярных алгоритмов хеширования
      • Модель OSI
      • Какие есть алгоритмы шифрования
      • Что такое TCP/IP
      • HSTS
      • Что такое хеширование и как его используют в ИБ
      • Скрипт для проверки данных SSL-сертификата
      • Шифруем файлы на Kali Linux с помощью OpenSSL
      • Как работает WPA2
      • О протоколе FTP
      • Что такое CVSS
      • Что такое политика одного источника (SOP)
      • О Cross-Origin Resource Sharing (CORS)
      • О Content Security Policy (CSP)
      • Что такое Bash
      • Веб-сокеты
      • MITRE ATT&CK
      • Начало в OSINT
      • Особенности и подходы к тестированию мобильных приложений
      • Что такое REST
      • Что такое API
      • Сравнение безопасности среды iOS и Android
      • CSS в ИБ
    • 🎪Карьера
      • Какие бывают роли у пентестеров и в чем их смысл
      • Какие есть виды пентеста
      • Что входит в пентест
      • Какие есть области знаний в веб-пентесте
      • Главные ошибки новичков в ИБ
    • 😰Уязвимости
      • Об атаке Pastejaking
      • Об уязвимости KRACK
      • Об уязвимости Regex DoS
      • Об атаке MITM
      • Что такое уязвимость нулевого дня
      • Атака на протокол STP
      • Защита протокола STP
      • Clickjacking
      • База при атаке на Wi-Fi
      • Атаки по сторонним каналам
      • DNS ребайндинг
    • ⚙️Инструменты
      • Лучшие сканеры открытых портов и инструменты проверки портов
      • Что такое OWASP ZAP и как он помогает защитить приложения?
      • О фреймворке WiFi Exploitation Framework (WEF)
      • WeBaCoo — поддерживаем доступ к взломанному веб-серверу
      • Socialscan — проверяем использование электронной почты и имен пользователей в соцсетях
      • Обзор инструментов Red Team
      • 11 инструментов для сканирования уязвимостей
      • Подборка инструментов для автоматизации атак на JWT
      • О Bulk_Extractor
      • О Unicornscan
      • О Maryam
      • О Picocrypt, утилите для шифрования данных
      • Анализируем трафик с ZUI (Zed User Interface)
      • Об инструменте SkipFish
      • Как получить уведомления на почту о входе по SSH
      • О сканере OpenSCAP
      • О Censys — инструменте для поиска уязвимых поддоменов
      • О Scanless — инструменте для анонимного сканирования открытых портов
      • О SearchSploit — инструменте для поиска эксплойтов
      • Выбираем менеджер паролей
      • О Maltego
      • Устанавливаем и используем Snyk CLI в Windows
      • Проверяем безопасность Docker-образов с помощью Trivy
      • Об инструменте SpiderFoot
      • Сканируем сети с помощью скриптов Bash
      • О фреймворке Volatility на Windows
      • Определяем тип WAF с помощью WafW00f
      • Об инструменте ReNgine
      • О Foremost — инструменте для восстановления данных
      • Chisel — инструмент для проброса портов
      • O Yersinia
      • Об Acunetix
      • O Netcat
      • O Samba
      • O John the Ripper
      • О Common User Passwords Profiler (CUPP)
      • О RainbowCrack
      • Shodan
      • MobSF
      • Netsparker
      • Fortify
      • Veracode
      • Rapid7 InsightVM
      • Aircrack-ng
  • 🛠️ИНСТРУМЕНТЫ
    • ⌨️Беспроводные атаки
      • Aircrack-Ng
    • 🔑Атаки на пароли
      • Crunch
      • John
      • CUPP
      • Hashcat
      • Hydra
    • 👁️Сбор Информации
      • Masscan
      • Dnsenum
      • Parsero
      • Nmap
  • 👨‍💻Пентест
    • Методология
    • 🖥️Аппаратный/Физический доступ
      • Физические атаки
      • Побег из КИОСКа
  • 👾MITRE
    • 🗺️Тактики
      • 🏢Предприятия
        • Разведка
      • 📱Мобильные устройства
      • 🏭ICS
    • 💀CTI
      • ☠️Группы
        • admin@338
        • Ajax Security Team
        • ALLANITE
        • Andariel
  • 📟Справочник по безопасной разработке
    • 👨‍🔬CLIENT SIDE
      • Cross-Site Scripting [XSS]
      • Cross-Site Request Forgery [CSRF]
      • Clickjacking
      • Open Redirects
    • 🖥️SERVER SIDE
      • SQL Injections [SQLi]
      • XML External Entity Injection [XXE]
      • OS Command Injection [Command Execution]
      • File Upload
      • Server-Side Request Forgery [SSRF]
      • Host Header Injection
      • Аутентификация
      • Directory Traversal
      • Template Injection [SSTI]
    • API
  • 🐝OWASP
    • Cross Site Scripting (XSS)
Powered by GitBook
On this page
  • Что такое веб-сокеты
  • Как происходит соединение в веб-сокетах
  • Есть ли у веб-сокетов разновидности?
  • Какие есть потенциальные уязвимости у веб-сокетов
  1. Крупицы знаний
  2. Общие статьи

Веб-сокеты

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

Last updated 1 year ago

Что такое веб-сокеты

Технология, которая обеспечивает двустороннее, непрерывное соединение между клиентом (чаще всего браузером) и сервером. Она позволяет передавать данные в реальном времени без необходимости постоянно обновлять страницу или выполнять новые HTTP-запросы. Давайте представим, что соединение нашего компьютера с сайтом это что-то вроде телефонной связи. По этой метафоре вот как происходит соединение без веб-сокетов: Мы заходим на веб-сайт → наш компьютер «звонит» на сайт → запрашивает информацию → сайт «отвечает" один раз. Если мы хотим что-то ещё → нам нужно сделать новый «звонок».

Веб-сокеты же создают постоянный «горячий телефонный линк» между компьютером и сайтом. Информация может передаваться туда и обратно в любой момент, без необходимости звонить снова и снова.

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

Как происходит соединение в веб-сокетах

Здесь даже есть термин — «рукопожатие» (handshake). Вот что происходит:

1. Запрос на установку соединения.

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

2. Ответ сервера.

Если сервер поддерживает веб-сокеты и готов принять соединение → отвечает на HTTP-запрос клиента статусным кодом 101 Switching Protocols. Сервер также отправляет заголовок Upgrade: websocket и Connection: Upgrade. То есть подтверждает, что переключение протоколов произошло, и теперь будет использоваться протокол веб-сокет.

3. Открывается постоянное соединение.

После «рукопожатия» HTTP-соединение переходит в режим веб-сокетов, устанавливается постоянное, двустороннее .

4. Передача данных.

Сразу после соединения, клиент и сервер могут отправлять и получать данные в любое время. Данные обычно передаются в виде «кадров» (frames), которые могут содержать как текст, так и бинарные данные.

5. Закрытие соединения.

Клиент или сервер могут инициировать закрытие соединения, отправив управляющий кадр с кодом операции, указывающим на закрытие соединения (опкод 0x8). Этот кадр может также содержать статусный код, который говорит другой стороне причину закрытия соединения, и, опционально, короткое текстовое сообщение с пояснением.

Есть ли у веб-сокетов разновидности?

Если коротко: нет. Но веб-сокеты можно рассмотреть в разном контексте и как-то их распределить:

1. Библиотеки и Фреймворки.

Разработчики часто используют различные библиотеки и фреймворки, чтобы упростить работу с веб-сокетами. Например, Socket.IO, WebSocket-Node и ws для Node.js, а также Socket.IO и Websocket-Rails для других языков программирования.

2. Безопасные Веб-Сокеты (WSS).

Есть два типа протоколов: обычные веб-сокеты (WS), в которых нешифрованное соединение, и безопасные веб-сокеты (WSS), которые используют шифрование через TLS (тот же протокол, который используется для HTTPS). WSS обеспечивает безопасное соединение и предотвращает перехват данных.

3. Серверные реализации.

Веб-сокеты поддержаны различными веб-серверами и платформами: Apache, Nginx, IIS, а также серверами, базирующимися на Node.js.

Какие есть потенциальные уязвимости у веб-сокетов

  1. Могут быть уязвимы для DoS. Кибержулики могут просто попытаться исчерпать ресурсы сервера, устанавливая множество соединений.

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

  3. Могут использоваться в сочетании с уязвимостями XSS для построения сетевых атак, поскольку могут позволять злоумышленникам направлять злой код прямо в браузер пользователя.

  4. Могут быть подвержены проблемам безопасности, аналогичным традиционному веб-трафику, например, инъекция кода. Это в случае, если не проводится должная валидация вводимых данных.

  5. Неправильное управление ошибками и логирование могут привести к утечке конфиденциальной информации о внутренней работе сервера через веб-сокеты.

Что можно сделать?

  • Использовать wss:// для шифрования данных.

  • Обеспечить аутентификацию и авторизацию на уровне каналов веб-сокетов.

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

  • Проводить тщательную валидацию и санацию всех данных, получаемых через веб-сокеты.

  • Применять механизмы защиты от пересечения сессий.

Традиционные веб-сокеты (ws://) не используют шифрование. Это может привести к .

✏️
🌚
TCP-соединение
MITM