Ermir is an Evil/Rogue RMI Registry, it exploits (https://www.kitploit.com/search/label/Exploits) unsecure deserialization (https://www.kitploit.com/search/label/Deserialization) on any Java code calling standard RMI methods on it (list()/lookup()/bind()/rebind()/unbind()).
Requirements Ruby v3 or newer. Installation Install Ermir from rubygems.org: $ gem install ermir
or clone the repo and build the gem: $ git clone https://github.com/hakivvi/ermir.git
$ rake install
Usage Ermir is a cli gem, it comes with 2 cli files ermir and gadgetmarshal, ermir is the actual gem and the latter is just a pretty interface to GadgetMarshaller.java (https://github.com/hakivvi/ermir/blob/main/helpers/gadgetmarshaller/GadgetMarshaller.java) file which rewrites the gadgets (https://www.kitploit.com/search/label/Gadgets) of Ysoserial (https://github.com/frohoff/ysoserial) to match MarshalInputStream requirements, the output should be then piped into ermir or a file, in case of custom gadgets use MarshalOutputStream instead of ObjectOutputStream to write your serialized object to the output stream. ermir usage: 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 (https://www.kitploit.com/search/label/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" dir="auto">➜ ~ 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 usage: ➜ ~ gadgetmarshal
Usage: gadgetmarshal /path/to/ysoserial.jar Gadget1 cmd (optional)/path/to/output/file How does it work? java.rmi.registry.Registry offers 5 methods: list(), lookup(), bind(), rebind(), unbind(): public Remote lookup(String name): lookup() searches for a bound object in the registry by its name, the registry returns a Remote object which references the remote object that was looked up, the returned object is read using MarshalInputStream.readObject() which is just another layer on top of ObjectInputStream, basically it excpects after each class/proxy descriptor (TC_CLASSDESC/TC_PROXYCLASSDESC) an URL that will be used to load this class or proxy class. this is the same wild bug that was fixed in jdk7u21 (https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/enhancements-7.html). (Ermir does not specify this URL as only old Java version are vulnerable, instead it just write null (https://github.com/hakivvi/ermir/blob/240880237eb3a565daf1f5d79be19ac1d21cb4c8/helpers/gadgetmarshaller/GadgetMarshaller.java#L54)). as Ysoserial (https://github.com/frohoff/ysoserial) gadgets are being serialized using ObjectOutputStream, Ermir uses gadgetmarshal -a wrapper around GadgetMarshaller.java (https://github.com/hakivvi/ermir/blob/main/helpers/gadgetmarshaller/GadgetMarshaller.java)- to serialize the specified gagdet to match MarshalInputStream requirements.
___________________________
@hacking_Attack
@Hacking_Video
Requirements Ruby v3 or newer. Installation Install Ermir from rubygems.org: $ gem install ermir
or clone the repo and build the gem: $ git clone https://github.com/hakivvi/ermir.git
$ rake install
Usage Ermir is a cli gem, it comes with 2 cli files ermir and gadgetmarshal, ermir is the actual gem and the latter is just a pretty interface to GadgetMarshaller.java (https://github.com/hakivvi/ermir/blob/main/helpers/gadgetmarshaller/GadgetMarshaller.java) file which rewrites the gadgets (https://www.kitploit.com/search/label/Gadgets) of Ysoserial (https://github.com/frohoff/ysoserial) to match MarshalInputStream requirements, the output should be then piped into ermir or a file, in case of custom gadgets use MarshalOutputStream instead of ObjectOutputStream to write your serialized object to the output stream. ermir usage: 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 (https://www.kitploit.com/search/label/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" dir="auto">➜ ~ 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 usage: ➜ ~ gadgetmarshal
Usage: gadgetmarshal /path/to/ysoserial.jar Gadget1 cmd (optional)/path/to/output/file How does it work? java.rmi.registry.Registry offers 5 methods: list(), lookup(), bind(), rebind(), unbind(): public Remote lookup(String name): lookup() searches for a bound object in the registry by its name, the registry returns a Remote object which references the remote object that was looked up, the returned object is read using MarshalInputStream.readObject() which is just another layer on top of ObjectInputStream, basically it excpects after each class/proxy descriptor (TC_CLASSDESC/TC_PROXYCLASSDESC) an URL that will be used to load this class or proxy class. this is the same wild bug that was fixed in jdk7u21 (https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/enhancements-7.html). (Ermir does not specify this URL as only old Java version are vulnerable, instead it just write null (https://github.com/hakivvi/ermir/blob/240880237eb3a565daf1f5d79be19ac1d21cb4c8/helpers/gadgetmarshaller/GadgetMarshaller.java#L54)). as Ysoserial (https://github.com/frohoff/ysoserial) gadgets are being serialized using ObjectOutputStream, Ermir uses gadgetmarshal -a wrapper around GadgetMarshaller.java (https://github.com/hakivvi/ermir/blob/main/helpers/gadgetmarshaller/GadgetMarshaller.java)- to serialize the specified gagdet to match MarshalInputStream requirements.
___________________________
@hacking_Attack
@Hacking_Video
KitPloit - PenTest & Hacking Tools
Leading source of security tools, hacking tools, cybersecurity and network security. Learn about new tools and updates in one place.
public String[] list(): list() asks the registry for all the bound objects names, while String type cannot be subsitued with a malicious gadget as it is not like any ordinary object and it is not read using readObject() but rather readUTF(), however as list() returns String[] which is an actual object and it is read using readObject(), Ermir sends the gadget instead of this String[] type.
___________________________
@hacking_Attack
@Hacking_Video
___________________________
@hacking_Attack
@Hacking_Video
public void bind(java.lang.String $param_String_1, java.rmi.Remote $param_Remote_2): bind() binds an object to a name on the registry, in bind() case the return type is void and there is nothing being returned, however if the registry specifies in the RMI return data packet that this return is an execptional return, the client/server client will call readObject() despite the return type is void, this is how the regitry sends exceptions to its client (usually java.lang.ClassNotFoundException), once again Ermir will deliver the serialized gadget instead of a legitimate Exception object.
___________________________
@hacking_Attack
@Hacking_Video
___________________________
@hacking_Attack
@Hacking_Video
public void rebind(java.lang.String $param_String_1, java.rmi.Remote $param_Remote_2): rebind() replaces the binding of the passed name with the supplied remote reference, also returns void, Ermir returns an exception just like bind(). public void unbind(java.lang.String $param_String_1): unbind() unbinds a remote object by name in the RMI registry, this one also returns void. PoC
___________________________
@hacking_Attack
@Hacking_Video
___________________________
@hacking_Attack
@Hacking_Video
Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/hakivvi/ermir. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct (https://github.com/hakivvi/ermir/blob/main/CODE_OF_CONDUCT.md). License The gem is available as open source under the terms of the MIT License (https://opensource.org/licenses/MIT). Code of Conduct Everyone interacting in the Ermir project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct (https://github.com/hakivvi/ermir/blob/main/CODE_OF_CONDUCT.md).
Download Ermir (https://github.com/hakivvi/ermir)
___________________________
@hacking_Attack
@Hacking_Video
Download Ermir (https://github.com/hakivvi/ermir)
___________________________
@hacking_Attack
@Hacking_Video
GitHub
GitHub - hakivvi/ermir: an Evil Java RMI Registry.
an Evil Java RMI Registry. Contribute to hakivvi/ermir development by creating an account on GitHub.
Hacking Articles Tips Tricks Videos Tutorials
Photo
Hacking on Medium
TryHackme | ToolsRus — Write-up
https://cdn-images-1.medium.com/max/1000/0*v5jOkrDpu3F3lLdN.png
Today I will walk you through completing the TryHackMe room ToolsRus. First time I have done a write up and it’s mainly to reinforce my…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
TryHackme | ToolsRus — Write-up
https://cdn-images-1.medium.com/max/1000/0*v5jOkrDpu3F3lLdN.png
Today I will walk you through completing the TryHackMe room ToolsRus. First time I have done a write up and it’s mainly to reinforce my…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Medium
TryHackme | ToolsRus — Write-up
Today I will walk you through completing the TryHackMe room ToolsRus. First time I have done a write up and it’s mainly to reinforce my…
Hacking on Medium
IPHONES ARE Seriously Open to IOS 16.1, IPADS As well
Mac carried out the hotly anticipated iOS 16.1 and iPadOS 16.1 updates for qualified iPhones and iPads. iPadOS 16.1 was the primary…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
IPHONES ARE Seriously Open to IOS 16.1, IPADS As well
Mac carried out the hotly anticipated iOS 16.1 and iPadOS 16.1 updates for qualified iPhones and iPads. iPadOS 16.1 was the primary…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Medium
IPHONES ARE Seriously Open to IOS 16.1, IPADS As well
Mac carried out the hotly anticipated iOS 16.1 and iPadOS 16.1 updates for qualified iPhones and iPads. iPadOS 16.1 was the primary…
Hacking on Medium
Basic Acronym in Networking
1. TCP — Transfer Control Protocol
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Basic Acronym in Networking
1. TCP — Transfer Control Protocol
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Medium
Basic Acronym in Networking
1. TCP — Transfer Control Protocol
Hacking on Medium
WhatsApp discharges highlight showing profile photographs in bunch talks to certain iOS beta…
WhatsApp is dealing with a few energizing updates to give a superior encounter to its clients. The texting application is delivering…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
WhatsApp discharges highlight showing profile photographs in bunch talks to certain iOS beta…
WhatsApp is dealing with a few energizing updates to give a superior encounter to its clients. The texting application is delivering…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Medium
WhatsApp discharges highlight showing profile photographs in bunch talks to certain iOS beta clients: Report
WhatsApp is dealing with a few energizing updates to give a superior encounter to its clients. The texting application is delivering…
Hacking Articles Tips Tricks Videos Tutorials
Photo
Hacking on Medium
Blogs — A Blog On Writing Blogs
https://cdn-images-1.medium.com/max/2468/1*_pIYWJQJPNJ_leCzcUGPPw.png
Introduction
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Blogs — A Blog On Writing Blogs
https://cdn-images-1.medium.com/max/2468/1*_pIYWJQJPNJ_leCzcUGPPw.png
Introduction
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Medium
Blogs — A Blog On Writing Blogs
Introduction
Hacking on Medium
WhatsApp dealing with capacity to permit clients to alter sent messages.
The component is accessible just to a few beta clients who introduce the most recent update of WhatsApp beta for iOS from the Test Flight…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
WhatsApp dealing with capacity to permit clients to alter sent messages.
The component is accessible just to a few beta clients who introduce the most recent update of WhatsApp beta for iOS from the Test Flight…
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Medium
WhatsApp dealing with capacity to permit clients to alter sent messages.
The component is accessible just to a few beta clients who introduce the most recent update of WhatsApp beta for iOS from the Test Flight…
Hacking on Medium
CTF Journal 14 — Try Hack Me — Upload Vulnerability(3/?)
2022/10/29
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
CTF Journal 14 — Try Hack Me — Upload Vulnerability(3/?)
2022/10/29
Continue reading on Medium »
___________________________
@hacking_Attack
@Hacking_Video
Medium
CTF Journal 14 — Try Hack Me — Upload Vulnerability(3/?)
2022/10/29