WebSocket Attacks
Šta su WebSockets
WebSocket konekcije se uspostavljaju putem početnog HTTP handshake-a i dizajnirane su da budu dugotrajne, omogućavajući dvosmernu komunikaciju u bilo koje vreme bez potrebe za transakcionim sistemom. Ovo čini WebSockets posebno pogodnim za aplikacije koje zahtevaju nisku latenciju ili komunikaciju iniciranu od strane servera, kao što su struje finansijskih podataka uživo.
Uspostavljanje WebSocket konekcija
Detaljno objašnjenje o uspostavljanju WebSocket konekcija može se pronaći ovde. Ukratko, WebSocket konekcije se obično iniciraju putem JavaScript-a na strani klijenta, kao što je prikazano ispod:
wss
protokol označava WebSocket konekciju koja je obezbeđena sa TLS, dok ws
označava neobezbeđenu konekciju.
Tokom uspostavljanja konekcije, izvršava se handshake između pregledača i servera preko HTTP-a. Proces handshake-a uključuje slanje zahteva od strane pregledača i odgovor servera, kako je prikazano u sledećim primerima:
Pregledač šalje zahtev za handshake:
Odgovor servera na handshake:
Veza ostaje otvorena za razmenu poruka u oba smera nakon uspostavljanja.
Ključne tačke WebSocket Handshake-a:
Zaglavlja
Connection
iUpgrade
signaliziraju inicijaciju WebSocket handshake-a.Zaglavlje
Sec-WebSocket-Version
ukazuje na željenu verziju WebSocket protokola, obično13
.Base64 enkodirana nasumična vrednost se šalje u zaglavlju
Sec-WebSocket-Key
, obezbeđujući da svaki handshake bude jedinstven, što pomaže u sprečavanju problema sa keširajućim proksijima. Ova vrednost nije za autentifikaciju, već da potvrdi da odgovor nije generisan od strane pogrešno konfigurisanog servera ili keša.Zaglavlje
Sec-WebSocket-Accept
u odgovoru servera je heš vrednostSec-WebSocket-Key
, potvrđujući serverovu nameru da otvori WebSocket vezu.
Ove funkcionalnosti obezbeđuju da je proces handshake-a siguran i pouzdan, otvarajući put za efikasnu komunikaciju u realnom vremenu.
Linux konzola
Možete koristiti websocat
da uspostavite sirovu vezu sa WebSocket-om.
Ili da kreirate websocat server:
MitM napadi na WebSocket veze
Ako primetite da su klijenti povezani na HTTP WebSocket iz vaše trenutne lokalne mreže, možete pokušati ARP Spoofing napad kako biste izveli MitM napad između klijenta i servera. Kada klijent pokuša da se poveže, možete koristiti:
Enumeracija Websocket-a
Možete koristiti alat https://github.com/PalindromeLabs/STEWS da automatski otkrijete, identifikujete i pretražujete poznate ranjivosti u websocket-ima.
Alati za debagovanje Websocket-a
Burp Suite podržava MitM komunikaciju websocket-a na veoma sličan način kao što to radi za redovnu HTTP komunikaciju.
socketsleuth Burp Suite ekstenzija će vam omogućiti bolje upravljanje Websocket komunikacijom u Burp-u tako što ćete dobiti istoriju, postaviti pravila presretanja, koristiti pravila za poklapanje i zamenu, koristiti Intruder i AutoRepeater.
WSSiP: Skraćenica za "WebSocket/Socket.io Proxy", ovaj alat, napisan u Node.js, pruža korisnički interfejs za snimanje, presretanje, slanje prilagođenih poruka i pregled svih WebSocket i Socket.IO komunikacija između klijenta i servera.
wsrepl je interaktivni websocket REPL dizajniran posebno za testiranje prodiranja. Pruža interfejs za posmatranje dolaznih websocket poruka i slanje novih, sa jednostavnim okvirom za automatizaciju ove komunikacije.
https://websocketking.com/ je veb za komunikaciju sa drugim veb sajtovima koristeći websocket-e.
https://hoppscotch.io/realtime/websocket pored ostalih vrsta komunikacija/protokola, pruža veb za komunikaciju sa drugim veb sajtovima koristeći websocket-e.
Websocket Lab
U Burp-Suite-Extender-Montoya-Course imate kod za pokretanje veba koristeći websocket-e, a u ovom postu možete pronaći objašnjenje.
Cross-site WebSocket hijacking (CSWSH)
Cross-site WebSocket hijacking, takođe poznat kao cross-origin WebSocket hijacking, identifikovan je kao specifičan slučaj Cross-Site Request Forgery (CSRF) koji utiče na WebSocket handshake. Ova ranjivost se javlja kada WebSocket handshake autentifikuje samo putem HTTP kolačića bez CSRF tokena ili sličnih sigurnosnih mera.
Napadači mogu iskoristiti ovo tako što će hostovati zlonamernu veb stranicu koja inicira cross-site WebSocket konekciju sa ranjivom aplikacijom. Kao rezultat toga, ova konekcija se tretira kao deo sesije žrtve sa aplikacijom, iskorišćavajući nedostatak CSRF zaštite u mehanizmu upravljanja sesijom.
Jednostavan napad
Imajte na umu da prilikom uspostavljanja websocket konekcije, kolačić se šalje serveru. Server ga može koristiti da poveže svakog specifičnog korisnika sa njegovom websocket sesijom na osnovu poslatog kolačića.
Zatim, ako na primer websocket server vrati istoriju razgovora korisnika ako se pošalje poruka sa "READY", onda jednostavan XSS koji uspostavlja konekciju (kolačić će biti automatski poslat da autorizuje žrtvu) slanjem "READY" će biti u mogućnosti da dobije istoriju razgovora.
Cross Origin + Kolačić sa drugim poddomenom
U ovom blog postu https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/ napadač je uspeo da izvrši proizvoljni JavaScript u poddomenu domena gde se odvijala komunikacija putem web socket-a. Zbog toga što je bio poddomen, kolačić je bio poslat, a zbog toga što Websocket nije pravilno proveravao poreklo, bilo je moguće komunicirati sa njim i ukrasti tokene iz njega.
Krađa podataka od korisnika
Kopirajte veb aplikaciju koju želite da se predstavljate (npr. .html fajlove) i unutar skripte gde se odvija komunikacija putem web socket-a dodajte ovaj kod:
Sada preuzmite datoteku wsHook.js
sa https://github.com/skepticfx/wshook i sačuvajte je unutar fascikle sa web fajlovima.
Izlažući web aplikaciju i povezujući korisnika na nju, moći ćete da ukradete poslate i primljene poruke putem web soketa:
Trke uslova
Trke uslova u WebSockets-u su takođe stvar, proverite ovde informacije da biste saznali više.
Ostale ranjivosti
Pošto su WebSockets mehanizam za slanje podataka na serversku i klijentsku stranu, u zavisnosti od toga kako server i klijent obrađuju informacije, WebSockets mogu se koristiti za iskorišćavanje drugih ranjivosti kao što su XSS, SQLi ili bilo koja druga uobičajena web ranjivost korišćenjem unosa korisnika putem WebSockets-a.
WebSocket Smuggling
Ova ranjivost bi vam mogla omogućiti da zaobiđete ograničenja obrnutih proxy-ja tako što ćete ih naterati da veruju da je uspostavljena WebSocket komunikacija (čak i ako to nije tačno). To bi omogućilo napadaču da pristupi skrivenim krajnjim tačkama. Za više informacija pogledajte sledeću stranicu:
pageUpgrade Header SmugglingReference
Last updated