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 pl
This commit is contained in:
parent
6941698796
commit
a55c61cd70
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
## Czym są WebSockety
|
## Czym są WebSockety
|
||||||
|
|
||||||
Połączenia WebSocket są nawiązywane poprzez początkowe **HTTP** handshake i są zaprojektowane do bycia **długoterminowymi**, co pozwala na dwukierunkowe przesyłanie wiadomości w dowolnym momencie bez potrzeby systemu transakcyjnego. To sprawia, że WebSockety są szczególnie korzystne dla aplikacji wymagających **niskiej latencji lub komunikacji inicjowanej przez serwer**, takich jak strumienie danych finansowych na żywo.
|
Połączenia WebSocket są nawiązywane poprzez początkowe **HTTP** handshake i są zaprojektowane jako **długoterminowe**, co pozwala na dwukierunkowe przesyłanie wiadomości w dowolnym momencie bez potrzeby systemu transakcyjnego. To sprawia, że WebSockety są szczególnie korzystne dla aplikacji wymagających **niskiej latencji lub komunikacji inicjowanej przez serwer**, takich jak strumienie danych finansowych na żywo.
|
||||||
|
|
||||||
### Nawiązywanie połączeń WebSocket
|
### Nawiązywanie połączeń WebSocket
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ var ws = new WebSocket("wss://normal-website.com/ws")
|
|||||||
```
|
```
|
||||||
Protokół `wss` oznacza połączenie WebSocket zabezpieczone **TLS**, podczas gdy `ws` wskazuje na **niezabezpieczone** połączenie.
|
Protokół `wss` oznacza połączenie WebSocket zabezpieczone **TLS**, podczas gdy `ws` wskazuje na **niezabezpieczone** połączenie.
|
||||||
|
|
||||||
Podczas nawiązywania połączenia wykonywane jest uzgadnianie między przeglądarką a serwerem za pośrednictwem HTTP. Proces uzgadniania polega na tym, że przeglądarka wysyła żądanie, a serwer odpowiada, jak pokazano w poniższych przykładach:
|
Podczas nawiązywania połączenia wykonywane jest uzgadnianie między przeglądarką a serwerem za pomocą HTTP. Proces uzgadniania polega na tym, że przeglądarka wysyła żądanie, a serwer odpowiada, co ilustrują następujące przykłady:
|
||||||
|
|
||||||
Przeglądarka wysyła żądanie uzgadniania:
|
Przeglądarka wysyła żądanie uzgadniania:
|
||||||
```javascript
|
```javascript
|
||||||
@ -26,7 +26,7 @@ Connection: keep-alive, Upgrade
|
|||||||
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
|
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
|
||||||
Upgrade: websocket
|
Upgrade: websocket
|
||||||
```
|
```
|
||||||
Odpowiedź serwera na handshake:
|
Odpowiedź handshake serwera:
|
||||||
```javascript
|
```javascript
|
||||||
HTTP/1.1 101 Switching Protocols
|
HTTP/1.1 101 Switching Protocols
|
||||||
Connection: Upgrade
|
Connection: Upgrade
|
||||||
@ -67,16 +67,21 @@ Możesz użyć **narzędzia** [**https://github.com/PalindromeLabs/STEWS**](http
|
|||||||
|
|
||||||
### Websocket Debug tools
|
### Websocket Debug tools
|
||||||
|
|
||||||
- **Burp Suite** obsługuje komunikację MitM w websockets w bardzo podobny sposób, jak robi to dla standardowej komunikacji HTTP.
|
- **Burp Suite** obsługuje komunikację MitM w websockets w bardzo podobny sposób, jak robi to dla zwykłej komunikacji HTTP.
|
||||||
- Rozszerzenie [**socketsleuth**](https://github.com/snyk/socketsleuth) **Burp Suite** pozwoli Ci lepiej zarządzać komunikacją Websocket w Burp, uzyskując **historię**, ustawiając **reguły przechwytywania**, używając reguł **match and replace**, korzystając z **Intruder** i **AutoRepeater.**
|
- Rozszerzenie [**socketsleuth**](https://github.com/snyk/socketsleuth) **Burp Suite** pozwoli Ci lepiej zarządzać komunikacją Websocket w Burp, uzyskując **historię**, ustawiając **reguły przechwytywania**, używając reguł **match and replace**, korzystając z **Intruder** i **AutoRepeater.**
|
||||||
- [**WSSiP**](https://github.com/nccgroup/wssip)**:** Skrót od "**WebSocket/Socket.io Proxy**", to narzędzie, napisane w Node.js, zapewnia interfejs użytkownika do **przechwytywania, przechwytywania, wysyłania niestandardowych** wiadomości i przeglądania wszystkich komunikacji WebSocket i Socket.IO między klientem a serwerem.
|
- [**WSSiP**](https://github.com/nccgroup/wssip)**:** Skrót od "**WebSocket/Socket.io Proxy**", to narzędzie, napisane w Node.js, zapewnia interfejs użytkownika do **przechwytywania, przechwytywania, wysyłania niestandardowych** wiadomości i przeglądania wszystkich komunikacji WebSocket i Socket.IO między klientem a serwerem.
|
||||||
- [**wsrepl**](https://github.com/doyensec/wsrepl) to **interaktywny websocket REPL** zaprojektowany specjalnie do testów penetracyjnych. Zapewnia interfejs do obserwowania **przychodzących wiadomości websocket i wysyłania nowych**, z łatwym w użyciu frameworkiem do **automatyzacji** tej komunikacji.
|
- [**wsrepl**](https://github.com/doyensec/wsrepl) to **interaktywny websocket REPL** zaprojektowany specjalnie do testów penetracyjnych. Zapewnia interfejs do obserwowania **przychodzących wiadomości websocket i wysyłania nowych**, z łatwym w użyciu frameworkiem do **automatyzacji** tej komunikacji.
|
||||||
- [**https://websocketking.com/**](https://websocketking.com/) to **strona do komunikacji** z innymi stronami za pomocą **websockets**.
|
- [**https://websocketking.com/**](https://websocketking.com/) to **strona do komunikacji** z innymi stronami za pomocą **websockets**.
|
||||||
- [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) wśród innych typów komunikacji/protokółów, zapewnia **stronę do komunikacji** z innymi stronami za pomocą **websockets.**
|
- [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) wśród innych typów komunikacji/protokółów, zapewnia **stronę do komunikacji** z innymi stronami za pomocą **websockets.**
|
||||||
|
|
||||||
|
## Decrypting Websocket
|
||||||
|
|
||||||
|
- [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 Lab
|
## Websocket Lab
|
||||||
|
|
||||||
W [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) masz kod do uruchomienia strony używającej websockets, a w [**tym poście**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) możesz znaleźć wyjaśnienie.
|
W [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) masz kod do uruchomienia strony za pomocą websockets, a w [**tym poście**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) znajdziesz wyjaśnienie.
|
||||||
|
|
||||||
## Cross-site WebSocket hijacking (CSWSH)
|
## Cross-site WebSocket hijacking (CSWSH)
|
||||||
|
|
||||||
@ -86,9 +91,9 @@ Napastnicy mogą to wykorzystać, hostując **złośliwą stronę internetową**
|
|||||||
|
|
||||||
### Simple Attack
|
### Simple Attack
|
||||||
|
|
||||||
Zauważ, że podczas **nawiązywania** połączenia **websocket** **cookie** jest **wysyłane** do serwera. **Serwer** może go używać do **powiązania** każdego **konkretnego** **użytkownika** z jego **sesją websocket** na podstawie wysłanego cookie.
|
Zauważ, że podczas **nawiązywania** połączenia **websocket** **ciasteczko** jest **wysyłane** do serwera. **Serwer** może go używać do **powiązania** każdego **konkretnego** **użytkownika** z jego **sesją websocket** na podstawie wysłanego ciasteczka.
|
||||||
|
|
||||||
Jeśli na przykład **serwer websocket** **wysyła z powrotem historię rozmowy** użytkownika, gdy wysyłana jest wiadomość z "**READY"**, to **prosty XSS** nawiązujący połączenie (**cookie** zostanie **wysłane** **automatycznie** w celu autoryzacji użytkownika ofiary) **wysyłając** "**READY**" będzie w stanie **odzyskać** historię **rozmowy**.
|
Jeśli na przykład **serwer websocket** **wysyła z powrotem historię rozmowy** użytkownika, gdy wysyłana jest wiadomość z "**READY"**, to **prosty XSS** nawiązujący połączenie (**ciasteczko** zostanie **wysłane** **automatycznie** w celu autoryzacji użytkownika ofiary) **wysyłając** "**READY**" będzie w stanie **pobierać** historię **rozmowy**.
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
websocket = new WebSocket('wss://your-websocket-URL')
|
websocket = new WebSocket('wss://your-websocket-URL')
|
||||||
@ -144,7 +149,7 @@ Ponieważ WebSockety są mechanizmem do **wysyłania danych na stronę serwera i
|
|||||||
|
|
||||||
## **Przemyt WebSocketów**
|
## **Przemyt WebSocketów**
|
||||||
|
|
||||||
Ta podatność może pozwolić na **obejście ograniczeń odwrotnych proxy**, sprawiając, że będą one wierzyć, że **komunikacja websocketowa została nawiązana** (nawet jeśli to nieprawda). Może to umożliwić atakującemu **dostęp do ukrytych punktów końcowych**. Aby uzyskać więcej informacji, sprawdź następującą stronę:
|
Ta podatność może pozwolić na **obejście ograniczeń odwrotnych proxy**, sprawiając, że uwierzą, że **komunikacja websocketowa została nawiązana** (nawet jeśli to nieprawda). Może to pozwolić atakującemu na **dostęp do ukrytych punktów końcowych**. Aby uzyskać więcej informacji, sprawdź następującą stronę:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
h2c-smuggling.md
|
h2c-smuggling.md
|
||||||
|
Loading…
x
Reference in New Issue
Block a user