Sploitus

Exploit for log4shell-poc

kitploit · 2026-09-05

Exploit Code

MARKDOWN72 lines
## 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 仅供教育目的。 未经明确许可,请勿用于任何系统。