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 कनेक्शन एक प्रारंभिक HTTP हैंडशेक के माध्यम से स्थापित होते हैं और इन्हें दीर्घकालिक होने के लिए डिज़ाइन किया गया है, जो किसी भी समय द्विदिशीय संदेश भेजने की अनुमति देता है बिना लेन-देन प्रणाली की आवश्यकता के। यह WebSockets को उन अनुप्रयोगों के लिए विशेष रूप से फायदेमंद बनाता है जिन्हें कम विलंबता या सर्वर-प्रारंभित संचार की आवश्यकता होती है, जैसे कि लाइव वित्तीय डेटा स्ट्रीम।
WebSocket कनेक्शन स्थापित करने पर विस्तृत विवरण यहां पहुंचा जा सकता है। संक्षेप में, WebSocket कनेक्शन आमतौर पर क्लाइंट-साइड जावास्क्रिप्ट के माध्यम से आरंभ किए जाते हैं जैसा कि नीचे दिखाया गया है:
wss
प्रोटोकॉल एक WebSocket कनेक्शन को TLS के साथ सुरक्षित करता है, जबकि ws
एक असुरक्षित कनेक्शन को दर्शाता है।
कनेक्शन स्थापित करते समय, HTTP के माध्यम से ब्राउज़र और सर्वर के बीच एक हैंडशेक किया जाता है। हैंडशेक प्रक्रिया में ब्राउज़र एक अनुरोध भेजता है और सर्वर प्रतिक्रिया करता है, जैसा कि निम्नलिखित उदाहरणों में दर्शाया गया है:
ब्राउज़र एक हैंडशेक अनुरोध भेजता है:
Server's handshake response: सर्वर का हैंडशेक प्रतिक्रिया:
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.
या एक websocat सर्वर बनाने के लिए:
यदि आप पाते हैं कि क्लाइंट आपके वर्तमान स्थानीय नेटवर्क से HTTP websocket से जुड़े हुए हैं, तो आप ARP Spoofing Attack का प्रयास कर सकते हैं ताकि क्लाइंट और सर्वर के बीच MitM हमला किया जा सके। एक बार जब क्लाइंट आपसे कनेक्ट करने की कोशिश कर रहा हो, तो आप इसका उपयोग कर सकते हैं:
आप टूल https://github.com/PalindromeLabs/STEWS का उपयोग करके स्वचालित रूप से websockets में ज्ञात vulnerabilities को खोजने, फिंगरप्रिंट करने और खोजने के लिए कर सकते हैं।
Burp Suite MitM websockets संचार का समर्थन करता है जिस तरह से यह नियमित HTTP संचार के लिए करता है।
socketsleuth Burp Suite एक्सटेंशन आपको Burp में Websocket संचार को बेहतर ढंग से प्रबंधित करने की अनुमति देगा, इतिहास प्राप्त करके, interception rules सेट करके, match and replace नियमों का उपयोग करके, Intruder और AutoRepeater का उपयोग करके।
WSSiP: "WebSocket/Socket.io Proxy" के लिए संक्षिप्त, यह टूल, जो Node.js में लिखा गया है, कैप्चर, इंटरसेप्ट, कस्टम संदेश भेजने और क्लाइंट और सर्वर के बीच सभी WebSocket और Socket.IO संचार को देखने के लिए एक उपयोगकर्ता इंटरफ़ेस प्रदान करता है।
wsrepl एक इंटरएक्टिव websocket REPL है जिसे विशेष रूप से पेनट्रेशन टेस्टिंग के लिए डिज़ाइन किया गया है। यह आने वाले websocket संदेशों को देखने और नए संदेश भेजने के लिए एक इंटरफ़ेस प्रदान करता है, जिसमें इस संचार को स्वचालित करने के लिए एक उपयोग में आसान ढांचा है।
https://websocketking.com/ यह अन्य वेब के साथ संवाद करने के लिए एक वेब है जो websockets का उपयोग करता है।
https://hoppscotch.io/realtime/websocket अन्य प्रकार के संचार/प्रोटोकॉल के बीच, यह अन्य वेब के साथ संवाद करने के लिए एक वेब है जो websockets का उपयोग करता है।
Burp-Suite-Extender-Montoya-Course में आपके पास websockets का उपयोग करके एक वेब लॉन्च करने के लिए कोड है और इस पोस्ट में आप एक व्याख्या पा सकते हैं।
Cross-site WebSocket hijacking, जिसे cross-origin WebSocket hijacking के रूप में भी जाना जाता है, को Cross-Site Request Forgery (CSRF) का एक विशिष्ट मामला माना जाता है जो WebSocket हैंडशेक को प्रभावित करता है। यह vulnerability तब उत्पन्न होती है जब WebSocket हैंडशेक केवल HTTP cookies के माध्यम से प्रमाणित होते हैं बिना CSRF tokens या समान सुरक्षा उपायों के।
हमलावर इसको एक दुष्ट वेब पृष्ठ होस्ट करके शोषण कर सकते हैं जो एक कमजोर एप्लिकेशन के लिए क्रॉस-साइट WebSocket कनेक्शन शुरू करता है। परिणामस्वरूप, इस कनेक्शन को एप्लिकेशन के साथ पीड़ित के सत्र का हिस्सा माना जाता है, जो सत्र प्रबंधन तंत्र में CSRF सुरक्षा की कमी का लाभ उठाता है।
ध्यान दें कि जब websocket कनेक्शन स्थापित किया जाता है तो cookie सर्वर को भेजी जाती है। सर्वर इसे विशिष्ट उपयोगकर्ता को उसके websocket सत्र से संबंधित करने के लिए उपयोग कर सकता है जो भेजी गई कुकी पर आधारित है।
फिर, यदि उदाहरण के लिए websocket सर्वर एक उपयोगकर्ता की बातचीत का इतिहास वापस भेजता है यदि एक msg "READY" भेजा जाता है, तो एक सरल XSS कनेक्शन स्थापित करते हुए ( cookie स्वचालित रूप से पीड़ित उपयोगकर्ता को अधिकृत करने के लिए भेजी जाएगी) "READY" भेजने से बातचीत का इतिहास प्राप्त किया जा सकेगा।
इस ब्लॉग पोस्ट में https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/ हमलावर ने एक उपडोमेन में मनमाना Javascript निष्पादित करने में सफल रहा जहां वेब सॉकेट संचार हो रहा था। चूंकि यह उपडोमेन था, कुकी भेजी जा रही थी, और चूंकि वेबसॉकेट ने ओरिजिन की सही जांच नहीं की, इसके साथ संवाद करना और इससे टोकन चुराना संभव था।
आप जिस वेब एप्लिकेशन की नकल करना चाहते हैं उसे कॉपी करें (उदाहरण के लिए .html फ़ाइलें) और उस स्क्रिप्ट के अंदर जहां वेब सॉकेट संचार हो रहा है, यह कोड जोड़ें:
अब wsHook.js
फ़ाइल को https://github.com/skepticfx/wshook से डाउनलोड करें और इसे वेब फ़ाइलों के साथ फ़ोल्डर के अंदर सहेजें।
वेब एप्लिकेशन को उजागर करके और एक उपयोगकर्ता को इससे कनेक्ट करने पर, आप websocket के माध्यम से भेजे गए और प्राप्त संदेशों को चुराने में सक्षम होंगे:
WebSockets में Race Conditions भी होते हैं, इस जानकारी को देखें और अधिक जानें.
चूंकि Web Sockets एक तंत्र हैं डेटा को सर्वर साइड और क्लाइंट साइड पर भेजने के लिए, यह इस पर निर्भर करता है कि सर्वर और क्लाइंट जानकारी को कैसे संभालते हैं, Web Sockets का उपयोग कई अन्य कमजोरियों जैसे XSS, SQLi या किसी अन्य सामान्य वेब vuln को एक websocket से उपयोगकर्ता के इनपुट का उपयोग करके शोषण करने के लिए किया जा सकता है।
यह कमजोरी आपको रिवर्स प्रॉक्सी प्रतिबंधों को बायपास करने की अनुमति दे सकती है, जिससे उन्हें विश्वास हो कि websocket संचार स्थापित किया गया था (भले ही यह सच न हो)। यह एक हमलावर को छिपे हुए एंडपॉइंट्स तक पहुंचने की अनुमति दे सकता है। अधिक जानकारी के लिए निम्नलिखित पृष्ठ देखें:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)