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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-44228-playground — 基于 Docker 的实验室,用于在 Java 应用中验证 CVE-2021-44228(Log4Shell),测试缓解措施,并通过 LDAP 和 HTTP 载荷模拟 RCE。 | Kitploit
工具/GitHubGitHub/b-abderrahmane/cve-2021-44228-playground
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubb-abderrahmane/cve-2021-44228-playground

CVE-2021-44228-playground

基于 Docker 的实验室,用于在 Java 应用中验证 CVE-2021-44228(Log4Shell),测试缓解措施,并通过 LDAP 和 HTTP 载荷模拟 RCE。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
2236天前尚未审核
分享

LOG4SHELL-CVE-2021-44228-Validator

Basic test

Extended test

关于

此工具允许您验证一个简单的 Java Web 应用程序是否对 CVE-2021-44228 存在漏洞,基于用户提供的 Java 和 Log4J 版本。 您还可以(可选地)应用几种预定义的缓解措施之一。 由 log4shell_validator.py 启动的模拟实验室使用 docker-compose 来模拟利用 log4j 漏洞并在易受攻击的机器上获得 RCE。

工作方式

首先,需要构建一些 Docker 镜像。./build_images.sh 脚本会处理这些。

攻击模拟按以下方式进行:

  • 首先,一个简单的 Java Web 应用程序在容器中于端口 8080 上启动。当此应用程序收到对 /2021-44228-via-message 的 GET 调用时,它始终记录 User-Agent 头字段。此应用程序的代码位于 ./poc_template。
  • 使用 marshalsec 在单独的容器中于端口 1389 上启动一个假 LDAP 服务器。(此容器会将接收到的 LDAP 请求转发到 Nginx 服务器)
  • 在端口 8888 上启动一个 Nginx Web 服务器,此容器托管我们想要在易受攻击的应用程序上运行的已编译 .class 文件。
  • 启动一个简单的 curl 容器,它运行 ./exploit.sh 脚本,该脚本向易受攻击的应用程序发送负载。

说明

  • 确保本地已安装 python、docker、docker-compose 和 maven。
  • 通过运行以下命令构建 marshalsec jar 文件:cd marshalsec/ ;mvn clean package -DskipTests ;cd -
  • 运行 ./build-images.sh
  • 运行 python log4shell_validator.py --java-version 8 --log4j-version 2.12.1

使用示例

  • Python 包装器帮助文本:
root@kitploit:~
~/workspace/CVE-2021-44228-playground$ python log4shell_validator.py --help
usage: log4shell_validator.py [-h] [--java-version JAVA_VERSION] --log4j-version LOG4J_VERSION [--no-cleanup] [--disable-trust-url] [--remove-jndi-lookup-class] [--disable-message-lookup] [--debug]
                              [--exploit-via-thread-context]

log4j-vulnerability-tester

optional arguments:
  -h, --help            show this help message and exit
  --java-version JAVA_VERSION
                        version of java to be used
  --log4j-version LOG4J_VERSION
                        version of log4j to be used
  --no-cleanup          Don't delete used containers.
  --disable-trust-url   Disable the LDAP trustURLCodebase setting on the victim app
  --remove-jndi-lookup-class
                        Remove the JNDI Lookup class from the log4j jar file
  --disable-message-lookup
                        Disable the JNDI message lookup in the victim app's JVM
  --debug               Display all container's logs
  --exploit-via-thread-context
                        By sending the payload to an HTTP handler which makes use of Custom logging with ThreadContext, attempt to bypass the no-message-lookup mitigation

可用功能:

此验证器已使用 Java7/8 的几种组合以及不同版本的 Log4J2 进行了测试,更多示例请参见 github actions 选项卡中的扩展测试管道。

目前,已实现以下缓解措施:

  • 通过将属性 com.sun.jndi.ldap.object.trustURLCodebase 设置为 False 来禁用 LDAP 的 trustURLCodebase。
  • 从 log4j jar 文件中移除 JNDILookup.class 文件。
  • 通过向 JVM 提供以下标志来禁用消息查找:-Dlog4j2.formatMsgNoLookups=True

此外,添加了一个新标志,用于测试一种可以绕过禁用消息查找的利用向量:--exploit-via-thread-context

免责声明

本软件纯粹为研究和开发有效缓解技术而创建,除非得到明确授权,否则不得用于攻击系统。项目维护者对软件的滥用不承担任何责任。请负责任地使用。

下载工具