Codepumpking/log4shell-poc
GitHub: Codepumpking/log4shell-poc
Log4Shell 漏洞(CVE-2021-44228)的完整概念验证项目,包含易受攻击的 Spring Boot 服务器和 JNDI 注入攻击演示。
Stars: 0 | Forks: 0
# CVE-2021-44228 Log4Shell POC
## 概述
Apache Log4j 2.14.1 中通过 JNDI 注入漏洞实现远程代码执行(RCE)的概念验证。
Web Hacking 课程 - 第 11 周作业。
## 环境
| 角色 | 软件 | 版本 |
|----------------|---------------------|----------------|
| 受害者服务器 | Spring Boot + Log4j | 2.6.1 + 2.14.1 |
| 受害者 JDK | OpenJDK | 1.8.0_181 |
| LDAP 服务器 | marshalsec | 0.0.3 |
| 攻击者操作系统 | Kali Linux | - |
## 文件结构
```
log4shell-poc/
├── vulnerable-server/ # Vulnerable Spring Boot server
│ ├── pom.xml
│ └── src/main/java/com/example/vulnerable/
│ ├── App.java
│ └── MainController.java
├── exploit/
│ └── Exploit.java # Malicious class source
└── attacker/
└── commands.md # Attack commands reference
```
## 如何运行
### 启动易受攻击的服务器
```
cd vulnerable-server
mvn clean package -DskipTests
/opt/jdk1.8.0_181/bin/java -jar target/log4shell-vuln-0.0.1-SNAPSHOT.jar
```
### 执行攻击
有关分步攻击命令,请参阅 attacker/commands.md。
## 攻击流程
1. 使用 curl 通过 X-Api-Version HTTP 标头发送 JNDI payload
2. Log4j 解析该 payload 并自动触发 JNDI 查找
3. marshalsec LDAP 服务器响应 Exploit.class URL
4. 受害者 JVM 从 HTTP 服务器下载并加载 Exploit.class
5. 静态代码块自动执行,将反向 shell 连接到 nc 监听器
6. RCE 达成 —— 在受害者服务器上执行任意命令
## 关键技术细节
- **漏洞点**:`logger.info()` 将用户输入直接传递给 Log4j,未进行过滤
- **根本原因**:Log4j 2.x 会解析日志消息中的 `${...}` 表达式
- **JDK 要求**:需要 JDK 8u181 或更低版本(默认 `trustURLCodebase=true`)
- **补丁**:Log4j 2.15.0+ 默认禁用 JNDI 查找
## 免责声明
本 POC 仅供教育目的。
严禁在未经明确许可的情况下对系统使用。
标签:Apache Log4j, Checkov, CISA项目, CVE-2021-44228, GHAS, Java安全, JDK 8, JNDI注入, JS文件枚举, LDAP注入, Log4j漏洞, Log4Shell, Marshalsec, POC, RCE, Spring Boot, 反序列化, 反弹Shell, 域名枚举, 攻击演示, 漏洞复现, 编程工具, 网络安全, 远程代码执行, 隐私保护, 高危漏洞