WebSocket Attacks
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
WebSocket veze se uspostavljaju kroz inicijalni HTTP handshake i dizajnirane su da budu dugoročne, omogućavajući dvosmerno slanje poruka u bilo kojem trenutku bez potrebe za transakcionim sistemom. Ovo čini WebSocket-e posebno korisnim za aplikacije koje zahtevaju nisku latenciju ili komunikaciju iniciranu sa servera, kao što su strimovi uživo finansijskih podataka.
Detaljno objašnjenje o uspostavljanju WebSocket veza može se pronaći ovde. Ukratko, WebSocket veze se obično iniciraju putem JavaScript-a na klijentskoj strani kao što je prikazano u nastavku:
wss
протокол означава WebSocket везу заштићену TLS, док ws
указује на необезбеђену везу.
Током успостављања везе, изводи се руковање између браузера и сервера преко HTTP. Процес руковања укључује слање захтева од стране браузера и одговор сервера, као што је илустровано у следећим примерима:
Браузер шаље захтев за руковање:
Odgovor serverovog rukovanja:
Konekcija ostaje otvorena za razmenu poruka u oba pravca nakon uspostavljanja.
Ključne tačke WebSocket rukovanja:
Connection
i Upgrade
zaglavlja signaliziraju inicijaciju WebSocket rukovanja.
Sec-WebSocket-Version
zaglavlje označava željenu verziju WebSocket protokola, obično 13
.
Base64-enkodirana nasumična vrednost se šalje u Sec-WebSocket-Key
zaglavlju, osiguravajući da je svako rukovanje jedinstveno, što pomaže u sprečavanju problema sa keširanjem proksija. Ova vrednost nije za autentifikaciju, već da potvrdi da odgovor nije generisan od strane pogrešno konfigurisane server ili keša.
Sec-WebSocket-Accept
zaglavlje u odgovoru servera je heš od Sec-WebSocket-Key
, verifikujući nameru servera da otvori WebSocket konekciju.
Ove karakteristike osiguravaju da je proces rukovanja siguran i pouzdan, otvarajući put za efikasnu komunikaciju u realnom vremenu.
Možete koristiti websocat
za uspostavljanje sirove konekcije sa websocket-om.
Ili da kreirate websocat server:
Ako otkrijete da su klijenti povezani na HTTP websocket iz vaše trenutne lokalne mreže, možete pokušati sa ARP Spoofing Attack da izvršite MitM napad između klijenta i servera. Kada klijent pokuša da se poveže, možete koristiti:
Možete koristiti alat https://github.com/PalindromeLabs/STEWS da automatski otkrijete, identifikujete i pretražujete poznate ranjivosti u websockets.
Burp Suite podržava MitM websockets komunikaciju na vrlo sličan način kao što to radi za regularnu HTTP komunikaciju.
socketsleuth Burp Suite ekstenzija će vam omogućiti bolje upravljanje Websocket komunikacijama u Burp-u dobijanjem istorije, postavljanjem pravila za presretanje, korišćenjem pravila za usklađivanje i zamenu, korišćenjem Intruder i AutoRepeater.
WSSiP: Skraćeno od "WebSocket/Socket.io Proxy", ovaj alat, napisan u Node.js, pruža korisnički interfejs za hvatanje, 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 penetraciono testiranje. Pruža interfejs za posmatranje dolaznih websocket poruka i slanje novih, sa jednostavnim okvirom za automatizaciju ove komunikacije.
https://websocketking.com/ je web za komunikaciju sa drugim webovima koristeći websockets.
https://hoppscotch.io/realtime/websocket između ostalih tipova komunikacija/protokola, pruža web za komunikaciju sa drugim webovima koristeći websockets.
U Burp-Suite-Extender-Montoya-Course imate kod za pokretanje web-a koristeći websockets, a u ovom postu možete pronaći objašnjenje.
Cross-site WebSocket otmica, takođe poznata kao cross-origin WebSocket otmica, identifikovana je kao specifičan slučaj Cross-Site Request Forgery (CSRF) koji utiče na WebSocket rukovanja. Ova ranjivost se javlja kada WebSocket rukovanja autentifikuju isključivo putem HTTP kolačića bez CSRF tokena ili sličnih bezbednosnih mera.
Napadači mogu iskoristiti ovo tako što će hostovati zloćudnu web stranicu koja inicira cross-site WebSocket vezu sa ranjivom aplikacijom. Kao rezultat, ova veza se tretira kao deo sesije žrtve sa aplikacijom, koristeći nedostatak CSRF zaštite u mehanizmu upravljanja sesijama.
Imajte na umu da kada uspostavljate websocket vezu, 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", tada će jednostavan XSS koji uspostavlja vezu (kolačić će biti poslat automatski da autorizuje korisnika žrtvu) slanjem "READY" moći da dobije istoriju razgovora.
U ovom blog postu https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/ napadač je uspeo da izvrši proizvoljni Javascript u poddomeni domena gde je komunikacija putem web socket-a bila u toku. Pošto je to bila poddomena, cookie je bio poslat, a pošto Websocket nije pravilno proveravao Origin, bilo je moguće komunicirati s njom i ukrasti tokene iz nje.
Kopirajte web aplikaciju koju želite da imitirate (npr. .html fajlove) i unutar skripte gde se odvija websocket komunikacija dodajte ovaj kod:
Sada preuzmite wsHook.js
datoteku sa https://github.com/skepticfx/wshook i sačuvajte je unutar fascikle sa web datotekama.
Izlaganjem web aplikacije i omogućavanjem korisniku da se poveže na nju, moći ćete da ukradete poslate i primljene poruke putem websocket-a:
Race Conditions u WebSocket-ima su takođe stvar, proverite ove informacije da biste saznali više.
Pošto su Web Sockets mehanizam za slanje podataka na serversku i klijentsku stranu, u zavisnosti od toga kako server i klijent obrađuju informacije, Web Sockets se mogu koristiti za iskorišćavanje nekoliko drugih ranjivosti kao što su XSS, SQLi ili bilo koja druga uobičajena web ranjivost koristeći unos korisnika iz websocket-a.
Ova ranjivost bi mogla omogućiti da zaobiđete ograničenja obrnute proxy usluge tako što će ih naterati da veruju da je websocket komunikacija uspostavljena (čak i ako to nije tačno). Ovo bi moglo omogućiti napadaču da pristupi skrivenim krajnjim tačkama. Za više informacija proverite sledeću stranicu:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)