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 connections zinaundwa kupitia mkutano wa awali wa HTTP na zimeundwa kuwa za muda mrefu, zikiruhusu ujumbe wa pande mbili wakati wowote bila haja ya mfumo wa muamala. Hii inafanya WebSockets kuwa na faida hasa kwa programu zinazohitaji muda mfupi wa kuchelewesha au mawasiliano yanayoanzishwa na seva, kama vile mitiririko ya data za kifedha za moja kwa moja.
Maelezo ya kina juu ya kuanzisha WebSocket connections yanaweza kupatikana hapa. Kwa muhtasari, WebSocket connections kwa kawaida huanzishwa kupitia JavaScript upande wa mteja kama inavyoonyeshwa hapa chini:
The wss
protocol inamaanisha muunganisho wa WebSocket ulio salama na TLS, wakati ws
inaashiria muunganisho wa bila usalama.
Wakati wa kuanzisha muunganisho, mkono wa handshake unafanywa kati ya kivinjari na seva kupitia HTTP. Mchakato wa handshake unahusisha kivinjari kutuma ombi na seva kujibu, kama inavyoonyeshwa katika mifano ifuatayo:
Kivinjari kinatuma ombi la handshake:
Majibu ya mkono wa seva:
The connection remains open for message exchange in both directions once established.
Key Points of the WebSocket Handshake:
The Connection
and Upgrade
headers signal the initiation of a WebSocket handshake.
The Sec-WebSocket-Version
header indicates the desired WebSocket protocol version, usually 13
.
A Base64-encoded random value is sent in the Sec-WebSocket-Key
header, ensuring each handshake is unique, which helps to prevent issues with caching proxies. This value is not for authentication but to confirm that the response is not generated by a misconfigured server or cache.
The Sec-WebSocket-Accept
header in the server's response is a hash of the Sec-WebSocket-Key
, verifying the server's intention to open a WebSocket connection.
These features ensure the handshake process is secure and reliable, paving the way for efficient real-time communication.
You can use websocat
to establish a raw connection with a websocket.
Au kuunda seva ya websocat:
Ikiwa unapata kwamba wateja wameunganishwa na HTTP websocket kutoka kwenye mtandao wako wa ndani, unaweza kujaribu ARP Spoofing Attack ili kufanya shambulio la MitM kati ya mteja na seva. Mara tu mteja anapojaribu kuungana, unaweza kutumia:
Unaweza kutumia tool https://github.com/PalindromeLabs/STEWS kuvumbua, fingerprint na kutafuta vulnerabilities zinazojulikana katika websockets kiotomatiki.
Burp Suite inasaidia mawasiliano ya MitM websockets kwa njia inayofanana sana na inavyofanya kwa mawasiliano ya kawaida ya HTTP.
socketsleuth Burp Suite extension itakuruhusu kudhibiti mawasiliano ya Websocket kwa njia bora zaidi katika Burp kwa kupata history, kuweka interception rules, kutumia match and replace rules, kutumia Intruder na AutoRepeater.
WSSiP: Fupi kwa "WebSocket/Socket.io Proxy", chombo hiki, kilichoandikwa kwa Node.js, kinatoa kiolesura cha mtumiaji ili kukamata, kuingilia, kutuma ujumbe wa kawaida na kuona mawasiliano yote ya WebSocket na Socket.IO kati ya mteja na seva.
wsrepl ni interactive websocket REPL iliyoundwa mahsusi kwa ajili ya pentesting. Inatoa kiolesura cha kuangalia ujumbe wa websocket unaoingia na kutuma mpya, kwa mfumo rahisi wa kutumia kwa kujiendesha mawasiliano haya.
https://websocketking.com/ ni web ya kuwasiliana na tovuti nyingine kwa kutumia websockets.
https://hoppscotch.io/realtime/websocket kati ya aina nyingine za mawasiliano/protocols, inatoa web ya kuwasiliana na tovuti nyingine kwa kutumia websockets.
Katika Burp-Suite-Extender-Montoya-Course una msimbo wa kuzindua tovuti kwa kutumia websockets na katika this post unaweza kupata maelezo.
Cross-site WebSocket hijacking, pia inajulikana kama cross-origin WebSocket hijacking, inatambulika kama kesi maalum ya Cross-Site Request Forgery (CSRF) inayohusisha WebSocket handshakes. Vulnerability hii inatokea wakati WebSocket handshakes zinathibitishwa pekee kupitia HTTP cookies bila CSRF tokens au hatua nyingine za usalama.
Wavamizi wanaweza kutumia hii kwa kuandaa ukurasa wa wavuti mbaya unaoanzisha muunganisho wa cross-site WebSocket kwa programu iliyo hatarini. Kwa hivyo, muunganisho huu unachukuliwa kama sehemu ya kikao cha mwathirika na programu, ikitumia ukosefu wa ulinzi wa CSRF katika mfumo wa usimamizi wa kikao.
Kumbuka kwamba wakati wa kuanzisha muunganisho wa websocket cookie inatumwa kwa seva. Seva inaweza kuwa inaitumia kuhusisha kila mtumiaji maalum na websocket session yake kulingana na cookie iliyotumwa.
Kisha, ikiwa kwa mfano seva ya websocket inatuma nyuma historia ya mazungumzo ya mtumiaji ikiwa ujumbe na "READY" umetumwa, basi XSS rahisi inayounda muunganisho (cookie itatumwa kiotomatiki kuidhinisha mtumiaji mwathirika) ikiwasilisha "READY" itakuwa na uwezo wa kurejesha historia ya mazungumzo.
Katika chapisho hili la blogu https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/ mshambuliaji alifanikiwa kutekeleza Javascript isiyo na mipaka katika subdomain ya kikoa ambapo mawasiliano ya web socket yalikuwa yanafanyika. Kwa sababu ilikuwa subdomain, cookie ilikuwa inatumwa, na kwa sababu Websocket haikukagua Origin ipasavyo, ilikuwa inawezekana kuwasiliana nayo na kuiba tokens kutoka kwake.
Nakili programu ya wavuti unayotaka kujifanya (faili za .html kwa mfano) na ndani ya script ambapo mawasiliano ya websocket yanafanyika ongeza hii code:
Sasa pakua faili la wsHook.js
kutoka https://github.com/skepticfx/wshook na uhifadhi ndani ya folda yenye faili za wavuti.
Kufichua programu ya wavuti na kumfanya mtumiaji aungane nayo utaweza kuiba ujumbe uliotumwa na kupokelewa kupitia websocket:
Mashindano ya Mbio katika WebSockets pia ni jambo, angalia habari hii kujifunza zaidi.
Kama Web Sockets ni mekanizma ya kutuma data kwa upande wa seva na upande wa mteja, kulingana na jinsi seva na mteja wanavyoshughulikia habari, Web Sockets zinaweza kutumika kutekeleza udhaifu mwingine kama XSS, SQLi au udhaifu mwingine wa kawaida wa wavuti kwa kutumia input ya mtumiaji kutoka kwa websocket.
Udhaifu huu unaweza kukuruhusu kupita vizuizi vya proxies za nyuma kwa kuwafanya waamini kwamba mawasiliano ya websocket yameanzishwa (hata kama si kweli). Hii inaweza kumruhusu mshambuliaji kufikia mwisho uliofichwa. Kwa maelezo zaidi angalia ukurasa ufuatao:
Upgrade Header SmugglingJifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)