## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CODEPUMPKING-LOG4SHELL-POC
# CVE-2021-44228 Log4Shell POC
## 概述
针对Apache Log4j 2.14.1中JNDI注入漏洞的远程代码执行概念验证。 Web黑客课程 - 第11周作业。
## 环境
角色| 软件| 版本
---|---|---
受害者服务器| Spring Boot + Log4j| 2.6.1 + 2.14.1
受害者JDK| OpenJDK| 1.8.0_181
LDAP服务器| marshalsec| 0.0.3
攻击者操作系统| Kali Linux| -
## 文件结构
root@kitploit:~
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
## 如何运行
### 启动易受攻击的服务器
root@kitploit:~
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 负载
2. Log4j 解析负载并自动触发 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 仅供教育目的。 未经明确许可,请勿用于任何系统。