Service:
rmiregistry
Protocol:
TCPPort:
1099Used for:
Java object serialization and remote method executionWhy It’s Open
Used by Java applications for distributed object communication. Often seen in legacy enterprise applications and middleware.
Common Risks
- Remote Code Execution: Deserialization vulnerabilities are rampant.
- Unauthenticated Access: Open RMI can allow dangerous introspection or control.
- Insecure Class Loading: Attackers can trick the JVM into loading remote classes.
Want to save time on reporting?
Let PentestPad generate, track, and export your reports - automatically.

Enumeration & Testing
Nmap check
nmap -p 1099 -sVnmap -p 1099 --script rmi-dumpregistry
rmi-client 1099What to Look For
| Checkpoint | What it means |
|---|---|
| Anonymous registry | May allow data leakage or control |
| Legacy Java versions | High risk of RCE |
Known Exploits
- CVE-2017-12149 In JBoss Application Server as shipped with Red Hat Enterprise Application Platform 5.2, the doFilter method in the ReadOnlyAccessFilter of the HTTP Invoker does not restrict classes for which it performs deserialization, allowing an attacker to execute arbitrary code via crafted serialized data. 🔗 NVD Entry
Mitigation
- Avoid exposing RMI externally.
- Use a security manager and codebase restrictions.
- Update JVM and libraries to prevent deserialization bugs.
Real-World Example
RMI vulnerabilities were exploited in several high-profile Java deserialization RCE attacks - including in Jenkins, WebLogic, and custom apps.
TL;DR
- Service: Java RMI (Remote Method Invocation)
- Default Port: 1099
- Risks: Deserialization vulnerabilities leading to RCE
- Mitigation: Update Java applications, restrict RMI access