WebSocket Attacks
Ni nini WebSockets
Uhusiano wa WebSocket unawekwa kupitia salamu ya awali ya HTTP na umebuniwa kuwa wenye muda mrefu, kuruhusu mawasiliano ya pande zote wakati wowote bila hitaji la mfumo wa shughuli. Hii inafanya WebSockets kuwa muhimu sana kwa maombi yanayohitaji latensi ndogo au mawasiliano yaliyoanzishwa na seva, kama vile mito ya data ya kifedha ya moja kwa moja.
Kuweka Uhusiano wa WebSocket
Maelezo mazuri juu ya kuweka uhusiano wa WebSocket yanaweza kupatikana hapa. Kwa muhtasari, uhusiano wa WebSocket kawaida huanzishwa kupitia JavaScript ya upande wa mteja kama inavyoonyeshwa hapa chini:
Itifaki ya wss
inaashiria uhusiano wa WebSocket uliolindwa na TLS, wakati ws
inaonyesha uhusiano usiolindwa.
Wakati wa kuanzisha uhusiano, mchakato 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 handshake ya seva:
Unganishaji unaendelea kwa kubadilishana ujumbe kwa pande zote mbili mara baada ya kuanzishwa.
Muhimu wa Msingi wa Handshake ya WebSocket:
Vichwa vya
Connection
naUpgrade
vinatuma ishara ya kuanzisha handshake ya WebSocket.Kichwa cha
Sec-WebSocket-Version
kinabainisha toleo la itifaki ya WebSocket inayotaka, kawaida ni13
.Thamani ya kipekee iliyosimbwa kwa Base64 hutumwa katika kichwa cha
Sec-WebSocket-Key
, ikidhibitisha kuwa kila handshake ni ya kipekee, ambayo husaidia kuzuia matatizo na wakala wa kuhifadhi. Thamani hii sio kwa ajili ya uwakilishi bali kuthibitisha kuwa jibu halijazalishwa na seva au hifadhi iliyopangwa vibaya.Kichwa cha
Sec-WebSocket-Accept
katika jibu la seva ni hash yaSec-WebSocket-Key
, ikithibitisha nia ya seva ya kufungua uhusiano wa WebSocket.
Vipengele hivi vinahakikisha kuwa mchakato wa handshake ni salama na wa kuaminika, ukifungua njia ya mawasiliano ya wakati halisi yenye ufanisi.
Konsoli ya Linux
Unaweza kutumia websocat
kuweka uhusiano wa moja kwa moja na websocket.
Au kuunda seva ya websocat:
Kudukua Mawasiliano ya Websocket kwa Kati (MitM)
Ikiwa utagundua kuwa wateja wameunganishwa kwenye websocket ya HTTP kutoka kwenye mtandao wako wa ndani wa sasa, unaweza kujaribu Shambulio la ARP Spoofing ili kutekeleza shambulio la MitM kati ya mteja na seva. Marafiki mteja anapojaribu kuunganisha, unaweza kutumia:
Uchambuzi wa Websockets
Unaweza kutumia zana https://github.com/PalindromeLabs/STEWS kugundua, kufuatilia na kutafuta makosa yanayojulikana katika websockets kiotomatiki.
Zana za Uchunguzi wa Websocket
Burp Suite inasaidia mawasiliano ya MitM ya websockets kwa njia sawa na vile inavyofanya kwa mawasiliano ya kawaida ya HTTP.
Kifaa cha socketsleuth cha Burp Suite kitakuruhusu kusimamia mawasiliano ya Websocket vizuri katika Burp kwa kupata historia, kuweka kanuni za kuingilia, kutumia kanuni za kufanana na kubadilisha, kutumia Intruder na AutoRepeater.
WSSiP: Kifupi cha "WebSocket/Socket.io Proxy", zana hii, iliyoandikwa kwa Node.js, inatoa kiolesura cha mtumiaji kwa kukamata, kuingilia, kutuma ujumbe wa kawaida na kuona mawasiliano yote ya WebSocket na Socket.IO kati ya mteja na seva.
wsrepl ni REPL ya websocket ya kuingiliana iliyoundwa mahsusi kwa ajili ya upenyezaji wa mtihani. Inatoa kiolesura cha kuangalia ujumbe wa websocket unaoingia na kutuma ujumbe mpya, na mfumo rahisi wa kutumia kwa kuautomatisha mawasiliano haya.
https://websocketking.com/ ni wavuti ya kuwasiliana na wavuti nyingine kwa kutumia websockets.
https://hoppscotch.io/realtime/websocket pamoja na aina nyingine za mawasiliano/itifaki, inatoa wavuti ya kuwasiliana na wavuti nyingine kwa kutumia websockets.
Maabara ya Websocket
Katika Burp-Suite-Extender-Montoya-Course una nambari ya kuzindua wavuti kwa kutumia websockets na katika chapisho hili unaweza kupata maelezo.
Udukuzi wa Websocket wa Msalaba (CSWSH)
Udukuzi wa Websocket wa Msalaba, pia inajulikana kama udukuzi wa Websocket wa asili ya msalaba, unatambuliwa kama kesi maalum ya Cross-Site Request Forgery (CSRF) inayoathiri mikono ya Websocket. Makosa haya yanatokea wakati mikono ya Websocket inathibitisha tu kupitia vidakuzi vya HTTP bila vitambulisho vya CSRF au hatua za usalama kama hizo.
Wahalifu wanaweza kutumia hii kwa kuandaa ukurasa mbaya ambao unazindua uhusiano wa Websocket wa asili ya msalaba kwa maombi yaliyo hatarini. Kwa hiyo, uhusiano huu unachukuliwa kama sehemu ya kikao cha mwathirika na maombi, ukidukua ukosefu wa ulinzi wa CSRF katika mfumo wa kushughulikia kikao.
Shambulio Rahisi
Tambua kwamba wakati wa kuweka uhusiano wa websocket, kidakuzi hutumwa kwa seva. Seva inaweza kutumia kidakuzi hicho kwa kuhusisha kila mtumiaji maalum na kikao chake cha websocket kulingana na kidakuzi kilichotumwa.
Kwa hiyo, ikiwa kwa mfano seva ya websocket inarudisha historia ya mazungumzo ya mtumiaji ikiwa ujumbe wenye "READY" unatumwa, basi XSS rahisi inayoweka uhusiano (kidakuzi kitatumwa kiotomatiki kuidhinisha mtumiaji mwathirika) kutuma "READY" itaweza kupata historia ya mazungumzo:
Msalaba wa Asili + Kidakuzi na kikoa tofauti
Katika chapisho hili la blogu https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/, mshambuliaji alifanikiwa kutekeleza Javascript ya kiholela katika kikoa kidogo cha kikoa ambapo mawasiliano ya soketi ya wavuti yalikuwa yanatokea. Kwa kuwa ilikuwa ni kikoa kidogo, kidakuzi kilikuwa kinatumiwa na kwa sababu Websocket haikuchunguza Asili kwa usahihi, ilikuwa inawezekana kuwasiliana nayo na kuiba alama kutoka kwake.
Kuiba data kutoka kwa mtumiaji
Nakili programu-jalizi ya wavuti unayotaka kuiga (faili za .html kwa mfano) na ndani ya skripti ambapo mawasiliano ya soketi ya wavuti yanatokea, ongeza msimbo huu:
Sasa pakua faili ya wsHook.js
kutoka https://github.com/skepticfx/wshook na ihifadhi ndani ya folda na faili za wavuti.
Kwa kufichua programu ya wavuti na kumfanya mtumiaji kuunganisha nayo, utaweza kuiba ujumbe uliotumwa na kupokelewa kupitia websocket:
Mashindano ya Hali
Mashindano ya Hali katika WebSockets ni jambo lingine, angalia habari hii ili kujifunza zaidi.
Udhaifu Mwingine
Kwa kuwa Web Sockets ni mfumo wa kupeleka data kwa upande wa seva na upande wa mteja, kulingana na jinsi seva na mteja wanavyoshughulikia habari, Web Sockets inaweza kutumika kudhoofisha udhaifu mwingine kama XSS, SQLi au udhaifu mwingine wa kawaida wa wavuti kwa kutumia kuingiza kwa mtumiaji kutoka kwenye websocket.
Udhaifu wa WebSocket Smuggling
Udhaifu huu unaweza kukuruhusu kukiuka vizuizi vya wakala wa kurudisha kwa kuwafanya waamini kwamba mawasiliano ya websocket yameanzishwa (hata kama sio kweli). Hii inaweza kuruhusu mshambuliaji kupata vituo vilivyofichwa. Kwa habari zaidi angalia ukurasa ufuatao:
pageUpgrade Header SmugglingMarejeo
Last updated