Pentesting JDWP - Java Debug Wire Protocol

Support HackTricks

कमजोरी मूल्यांकन और पेनिट्रेशन टेस्टिंग के लिए तुरंत उपलब्ध सेटअप। 20+ उपकरणों और सुविधाओं के साथ कहीं से भी एक पूर्ण पेंटेस्ट चलाएँ जो पुनः खोज से रिपोर्टिंग तक जाते हैं। हम पेंटेस्टर्स का स्थान नहीं लेते - हम कस्टम उपकरण, पहचान और शोषण मॉड्यूल विकसित करते हैं ताकि उन्हें गहराई से खुदाई करने, शेल पॉप करने और मज़े करने के लिए कुछ समय वापस मिल सके।

Exploiting

JDWP शोषण प्रोटोकॉल की प्रमाणीकरण और एन्क्रिप्शन की कमी पर निर्भर करता है। यह सामान्यतः पोर्ट 8000 पर पाया जाता है, लेकिन अन्य पोर्ट भी संभव हैं। प्रारंभिक कनेक्शन लक्ष्य पोर्ट पर "JDWP-Handshake" भेजकर बनाया जाता है। यदि एक JDWP सेवा सक्रिय है, तो यह उसी स्ट्रिंग के साथ प्रतिक्रिया करती है, इसकी उपस्थिति की पुष्टि करती है। यह हैंडशेक नेटवर्क पर JDWP सेवाओं की पहचान के लिए एक फिंगरप्रिंटिंग विधि के रूप में कार्य करता है।

प्रक्रिया पहचान के संदर्भ में, Java प्रक्रियाओं में "jdwk" स्ट्रिंग की खोज एक सक्रिय JDWP सत्र को इंगित कर सकती है।

उपयोग करने के लिए सबसे अच्छा उपकरण jdwp-shellifier है। आप इसे विभिन्न पैरामीटर के साथ उपयोग कर सकते हैं:

./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept

I found that the use of --break-on 'java.lang.String.indexOf' make the exploit more stable. And if you have the change to upload a backdoor to the host and execute it instead of executing a command, the exploit will be even more stable.

More details

यह https://ioactive.com/hacking-java-debug-wire-protocol-or-how/ का सारांश है। आगे की जानकारी के लिए इसे देखें।

  1. JDWP Overview:

  • यह एक पैकेट-आधारित नेटवर्क बाइनरी प्रोटोकॉल है, जो मुख्य रूप से समकालिक है।

  • इसमें प्रमाणीकरण और एन्क्रिप्शन की कमी है, जिससे यह शत्रुतापूर्ण नेटवर्क के सामने कमजोर हो जाता है।

  1. JDWP Handshake:

  • संचार शुरू करने के लिए एक सरल हैंडशेक प्रक्रिया का उपयोग किया जाता है। एक 14-चर ASCII स्ट्रिंग “JDWP-Handshake” डिबगर (क्लाइंट) और डिबगी (सर्वर) के बीच आदान-प्रदान की जाती है।

  1. JDWP Communication:

  • संदेशों की एक सरल संरचना होती है जिसमें Length, Id, Flag, और CommandSet जैसे फ़ील्ड होते हैं।

  • CommandSet मान 0x40 से 0x80 के बीच होते हैं, जो विभिन्न क्रियाओं और घटनाओं का प्रतिनिधित्व करते हैं।

  1. Exploitation:

  • JDWP मनमाने वर्गों और बाइटकोड को लोड और लागू करने की अनुमति देता है, जो सुरक्षा जोखिम पैदा करता है।

  • लेख में पांच चरणों में एक शोषण प्रक्रिया का विवरण दिया गया है, जिसमें Java Runtime संदर्भों को लाना, ब्रेकपॉइंट सेट करना, और विधियों को लागू करना शामिल है।

  1. Real-Life Exploitation:

  • संभावित फ़ायरवॉल सुरक्षा के बावजूद, JDWP सेवाएँ वास्तविक दुनिया के परिदृश्यों में खोजी और शोषित की जा सकती हैं, जैसा कि ShodanHQ और GitHub जैसे प्लेटफार्मों पर खोजों द्वारा प्रदर्शित किया गया है।

  • शोषण स्क्रिप्ट को विभिन्न JDK संस्करणों के खिलाफ परीक्षण किया गया था और यह प्लेटफ़ॉर्म-स्वतंत्र है, जो विश्वसनीय रिमोट कोड निष्पादन (RCE) प्रदान करता है।

  1. Security Implications:

  • इंटरनेट पर खुले JDWP सेवाओं की उपस्थिति नियमित सुरक्षा समीक्षाओं की आवश्यकता को रेखांकित करती है, उत्पादन में डिबग कार्यक्षमताओं को बंद करना, और उचित फ़ायरवॉल कॉन्फ़िगरेशन।

References:

Instantly available setup for vulnerability assessment & penetration testing. Run a full pentest from anywhere with 20+ tools & features that go from recon to reporting. We don't replace pentesters - we develop custom tools, detection & exploitation modules to give them back some time to dig deeper, pop shells, and have fun.

Support HackTricks

Last updated