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, 域名枚举, 攻击演示, 漏洞复现, 编程工具, 网络安全, 远程代码执行, 隐私保护, 高危漏洞