立山 发表于 2023-4-4 14:03:59

JNDI RMI 远程访问(LOG4j2漏洞底层原理)

JDK 版本 8u112
客户端(模拟被攻击的网站)
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230321234053112-1513178117.png
服务端(注册 RMI 服务,给被攻击网站提供 RMI 服务)
服务端 IP 192.168.3.175
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230321232408906-1318716340.png
恶意类(客户端发送请求给服务端,服务端再请求恶意类予以返回)
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230321232452229-677909284.png
 
需要先将恶意类编译成 class 文件再存放到网站上,再通过命令开启服务
恶意类存放网站 IP 192.168.152.128(在 kali 上使用 python -m http.server 8888 命令搭建服务器)
1、启动恶意类网站
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230321233128927-355523094.png
 
2、Run 启动服务端
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230321233238691-265054934.png
 
 3、Run 启动客户端
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230321234733497-620316546.png
 
 弹出成功,开始分析利用链
4.1、打上断点开始debug,跟进 lookup 方法
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230321235001553-1036977949.png
 
 4.2、直接跟进 lookup 方法
熟悉的味道,熟悉的配方(这里开始就可以参考上篇文章 log4j2 的利用链分析了,从文章 3.30 开始进入解析)
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230322000251972-1369808624.png
 4.3、跟进 lookup 方法
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230322000432582-1828636479.png
 
4.4、跟进 decodeObject 方法
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230322000548748-658767868.png
 
 4.5、跟进 getObjectInstance 方法
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230322000652895-388240752.png
 
 4.6、跟进 get Object Factory From Reference 方法(该方法 从引用获取对象工厂)
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230322000827416-1463633944.png
 
 4.7、漏洞触发点
第一个 loadClass 先本地加载
如果加载不到,则进入第二个 loadClass 进行远程加载,
最后通过 构造方法 创建对象
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230322001334278-924253577.png
 
 这里因为恶意类写在 static 代码块中,所以类加载时即可触发
https://img2023.cnblogs.com/blog/1728854/202303/1728854-20230322001702962-434392667.png
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: JNDI RMI 远程访问(LOG4j2漏洞底层原理)