JNDI RMI 远程访问(LOG4j2漏洞底层原理)
JDK 版本 8u112
客户端(模拟被攻击的网站)
服务端(注册 RMI 服务,给被攻击网站提供 RMI 服务)
服务端 IP 192.168.3.175
恶意类(客户端发送请求给服务端,服务端再请求恶意类予以返回)
需要先将恶意类编译成 class 文件再存放到网站上,再通过命令开启服务
恶意类存放网站 IP 192.168.152.128(在 kali 上使用 python -m http.server 8888 命令搭建服务器)
1、启动恶意类网站
2、Run 启动服务端
3、Run 启动客户端
弹出成功,开始分析利用链
4.1、打上断点开始debug,跟进 lookup 方法
4.2、直接跟进 lookup 方法
熟悉的味道,熟悉的配方(这里开始就可以参考上篇文章 log4j2 的利用链分析了,从文章 3.30 开始进入解析)
4.3、跟进 lookup 方法
4.4、跟进 decodeObject 方法
4.5、跟进 getObjectInstance 方法
4.6、跟进 get Object Factory From Reference 方法(该方法 从引用获取对象工厂)
4.7、漏洞触发点
第一个 loadClass 先本地加载
如果加载不到,则进入第二个 loadClass 进行远程加载,
最后通过 构造方法 创建对象
这里因为恶意类写在 static 代码块中,所以类加载时即可触发