Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
ermir — Rogue RMI Registry असुरक्षित जावा डिसीरियलाइज़ेशन का शोषण करने वाला, list/lookup/bind विधियों के माध्यम से। Ysoserial गैजेट उत्पन्न करता है और वितरित करता है ताकि कमजोर क्लाइंट पर रिमोट कोड निष्पादन को ट्रिगर किया जा सके। | Kitploit
उपकरण/GitHubGitHub/hakivvi/ermir
पेलोड जनरेशनभेद्यता विश्लेषणशोषणपेनिट्रेशन टेस्टिंग
GitHubhakivvi/ermir

ermir

Rogue RMI Registry असुरक्षित जावा डिसीरियलाइज़ेशन का शोषण करने वाला, list/lookup/bind विधियों के माध्यम से। Ysoserial गैजेट उत्पन्न करता है और वितरित करता है ताकि कमजोर क्लाइंट पर रिमोट कोड निष्पादन को ट्रिगर किया जा सके।

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

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें

Ermir

Ermir एक Evil/Rogue RMI रजिस्ट्री है, यह किसी भी Java कोड पर जो इस पर मानक RMI विधियों (list()/lookup()/bind()/rebind()/unbind()) का कॉल करता है, असुरक्षित डिसीरियलाइज़ेशन का शोषण करता है।

आवश्यकताएँ

  • Ruby v3 या उससे नया।

स्थापना

Ermir को rubygems.org से स्थापित करें:

root@kitploit:~
$ gem install ermir

या रिपॉजिटरी क्लोन करें और जेम बनाएँ:

root@kitploit:~
$ git clone https://github.com/hakivvi/ermir.git
$ rake install

उपयोग

Ermir एक cli जेम है, यह 2 cli फ़ाइलों ermir और gadgetmarshal के साथ आता है, ermir वास्तविक जेम है और बाद वाला GadgetMarshaller.java फ़ाइल के लिए एक आकर्षक इंटरफ़ेस है, जो Ysoserial के गैजेट्स को MarshalInputStream आवश्यकताओं से मेल खाने के लिए पुनर्लेखन करता है, आउटपुट को फिर ermir या एक फ़ाइल में पाइप किया जाना चाहिए, कस्टम गैजेट्स के मामले में अपने क्रमबद्ध ऑब्जेक्ट को आउटपुट स्ट्रीम में लिखने के लिए ObjectOutputStream के बजाय MarshalOutputStream का उपयोग करें।

ermir उपयोग:

root@kitploit:~
➜  ~ ermir
Ermir by @hakivvi * https://github.com/hakivvi/ermir.
Info:
    Ermir is a Rogue/Evil RMI Registry which exploits unsecure Java deserialization on any Java code calling standard RMI methods on it.
Usage: ermir [options]
    -l, --listen   bind the RMI Registry to this ip and port (default: 0.0.0.0:1099).
    -f, --file     path to file containing the gadget to be deserialized.
    -p, --pipe     read the serialized gadget from the standard input stream.
    -v, --version  print Ermir version.
    -h, --help     print options help.
Example:
    $ gadgetmarshal /path/to/ysoserial.jar Groovy1 calc.exe | ermir --listen 127.0.0.1:1099 --pipe

gadgetmarshal उपयोग:

root@kitploit:~
➜  ~ gadgetmarshal
Usage: gadgetmarshal /path/to/ysoserial.jar Gadget1 cmd (optional)/path/to/output/file

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

java.rmi.registry.Registry 5 विधियाँ प्रदान करता है: list(), lookup(), bind(), rebind(), unbind():

  • public Remote lookup(String name): lookup() रजिस्ट्री में एक बाउंड ऑब्जेक्ट को उसके नाम से खोजता है, रजिस्ट्री एक Remote ऑब्जेक्ट लौटाती है जो खोजे गए रिमोट ऑब्जेक्ट को संदर्भित करता है, लौटाया गया ऑब्जेक्ट MarshalInputStream.readObject() का उपयोग करके पढ़ा जाता है जो ObjectInputStream के ऊपर एक और परत है, मूल रूप से यह प्रत्येक क्लास/प्रॉक्सी डिस्क्रिप्टर (TC_CLASSDESC/TC_PROXYCLASSDESC) के बाद एक URL की अपेक्षा करता है जिसका उपयोग इस क्लास या प्रॉक्सी क्लास को लोड करने के लिए किया जाएगा। यह वही जंगली बग है जिसे jdk7u21 में ठीक किया गया था। (Ermir इस URL को निर्दिष्ट नहीं करता क्योंकि केवल पुराने Java संस्करण ही कमजोर हैं, इसके बजाय यह केवल null लिखता है)। चूंकि Ysoserial गैजेट्स को ObjectOutputStream का उपयोग करके क्रमबद्ध किया जा रहा है, Ermir निर्दिष्ट गैजेट को MarshalInputStream आवश्यकताओं से मेल खाने के लिए क्रमबद्ध करने हेतु gadgetmarshal - के चारों ओर एक रैपर- का उपयोग करता है।

PoC

ermir

योगदान

बग रिपोर्ट और पुल अनुरोध GitHub पर https://github.com/hakivvi/ermir पर स्वागत है। यह परियोजना सहयोग के लिए एक सुरक्षित, स्वागत योग्य स्थान होने का इरादा रखती है, और योगदानकर्ताओं से आचार संहिता का पालन करने की अपेक्षा की जाती है।

लाइसेंस

यह जेम MIT License की शर्तों के तहत ओपन सोर्स के रूप में उपलब्ध है।

आचार संहिता

Ermir प्रोजेक्ट के कोडबेस, मुद्दा ट्रैकर्स, चैट रूम और मेलिंग सूचियों में बातचीत करने वाले सभी लोगों से आचार संहिता का पालन करने की अपेक्षा की जाती है।

टूल डाउनलोड करें
GadgetMarshaller.java
image
  • public String[] list(): list() रजिस्ट्री से सभी बाउंड ऑब्जेक्ट्स के नाम पूछता है, जबकि String प्रकार को एक दुर्भावनापूर्ण गैजेट से प्रतिस्थापित नहीं किया जा सकता क्योंकि यह किसी सामान्य ऑब्जेक्ट की तरह नहीं है और इसे readObject() के बजाय readUTF() का उपयोग करके पढ़ा जाता है, हालांकि चूंकि list() String[] लौटाता है जो एक वास्तविक ऑब्जेक्ट है और इसे readObject() का उपयोग करके पढ़ा जाता है, Ermir इस String[] प्रकार के बजाय गैजेट भेजता है। image

  • public void bind(java.lang.String $param_String_1, java.rmi.Remote $param_Remote_2): bind() किसी ऑब्जेक्ट को रजिस्ट्री पर एक नाम से बांधता है, bind() के मामले में रिटर्न प्रकार void है और कुछ भी वापस नहीं किया जा रहा है, हालांकि यदि रजिस्ट्री RMI रिटर्न डेटा पैकेट में निर्दिष्ट करती है कि यह रिटर्न एक अपवादात्मक रिटर्न है, तो क्लाइंट/सर्वर क्लाइंट रिटर्न प्रकार void होने के बावजूद readObject() को कॉल करेगा, इस प्रकार रजिस्ट्री अपने क्लाइंट को अपवाद (आमतौर पर java.lang.ClassNotFoundException) भेजती है, एक बार फिर Ermir एक वैध Exception ऑब्जेक्ट के बजाय क्रमबद्ध गैजेट देगा। image

  • public void rebind(java.lang.String $param_String_1, java.rmi.Remote $param_Remote_2): rebind() पास किए गए नाम की बाइंडिंग को आपूर्ति किए गए रिमोट रेफरेंस से बदल देता है, यह भी void लौटाता है, Ermir bind() की तरह एक अपवाद लौटाता है।

  • public void unbind(java.lang.String $param_String_1): unbind() RMI रजिस्ट्री में नाम से एक रिमोट ऑब्जेक्ट को अनबाइंड करता है, यह भी void लौटाता है।