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

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

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

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

工具目录

分类

查看所有分类
Loading categories
log4j-detector — 文件系统扫描器,通过分析编译后的Java类(包括嵌套归档文件)检测存在漏洞的Log4J版本(CVE-2021-44228、CVE-2021-45046)。支持Linux、Windows和Mac系统。 | Kitploit
工具/GitHubGitHub/mergebase/log4j-detector
静态分析漏洞扫描器漏洞分析供应链安全
GitHubmergebase/log4j-detector

log4j-detector

文件系统扫描器,通过分析编译后的Java类(包括嵌套归档文件)检测存在漏洞的Log4J版本(CVE-2021-44228、CVE-2021-45046)。支持Linux、Windows和Mac系统。

查看仓库
64096124年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

mergebase 徽标

Log4j-检测器

扫描器,用于检测易受攻击的 Log4J 版本,帮助团队评估其对 CVE-2021-44228(严重)、CVE-2021-45046、CVE-2021-45105 和 CVE-2021-44832 的暴露程度。可通过仔细检查整个文件系统(包括所有已安装的应用程序)来搜索 Log4J 实例。它能够找到隐藏多层深处的 Log4J 实例。适用于 Linux、Windows 和 Mac,以及 Java 能运行的任何地方!

目录

  • 简介
  • 使用示例
  • 更多使用示例
  • 理解结果
  • 用法
  • 从源码构建
  • 测试
  • 许可证
  • 常见问题解答
    • 它是如何工作的?
    • 此扫描仪仅报告对 log4j-core 库的命中。那么 log4j-api 呢?
    • 为什么要报告 2.10.0、2.15.0 和 2.16.0?
    • "file1.war!/path/to/file2.zip!/path/to/file3.jar!/path/to/log4j.jar" 这样的结果是什么意思?
    • 那 Log4J 1.2.x 呢?
    • 我如何确定这不是一个伪装成 Log4J 检测器的木马?
  • MergeBase 是做什么的?

简介

当前将 log4j-core 版本 2.3.2、2.12.4 和 2.17.1 报告为 _SAFE_,版本 2.3.1、2.12.2、2.12.3、2.15.0、2.16.0 和 2.17.0 报告为 _OKAY_,所有其他版本报告为 _VULNERABLE_(不过它确实将 2.0-beta9 之前的版本报告为 _POTENTIALLY_SAFE_)。它将较旧的 log4j-1.x 版本报告为 _OLD_。

可以正确检测可执行的 spring-boot jar/war 内的 log4j、混合到 uber jar 中的依赖项、shaded jar,甚至只是未压缩地放在文件系统上的 exploded jar 文件(即 *.class)。

我们目前维护着一个用于测试的 log4j-samples 集合。

使用示例:

root@kitploit:~
java -jar log4j-detector-2021.12.29.jar ./samples 

-- github.com/mergebase/log4j-detector v2021.12.29 (by mergebase.com) analyzing paths (could take a while).
-- Note: specify the '--verbose' flag to have every file examined printed to STDERR.
false-hits/log4j-core-2.12.2.jar contains Log4J-2.x   == 2.12.2 _OKAY_
false-hits/log4j-core-2.12.3.jar contains Log4J-2.x   == 2.12.3 _OKAY_
false-hits/log4j-core-2.12.4.jar contains Log4J-2.x   == 2.12.4 _SAFE_
false-hits/log4j-core-2.15.0.jar contains Log4J-2.x   == 2.15.0 _OKAY_
false-hits/log4j-core-2.16.0.jar contains Log4J-2.x   == 2.16.0 _OKAY_
false-hits/log4j-core-2.17.0.jar contains Log4J-2.x   == 2.17.0 _OKAY_
false-hits/log4j-core-2.17.1.jar contains Log4J-2.x   >= 2.17.1 _SAFE_
false-hits/log4j-core-2.3.1.jar contains Log4J-2.x   == 2.3.1 _OKAY_
false-hits/log4j-core-2.3.2.jar contains Log4J-2.x   == 2.3.2 _SAFE_
true-hits/log4j-core-2.0-beta9.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.10.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.10.0.zip contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.1.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.2.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.1.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.0.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.1.jar contains Log4J-2.x   >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.2.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.3.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.1.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.9.1.jar contains Log4J-2.x   >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
old-hits/log4j-1.1.3.jar contains Log4J-1.x   <= 1.2.17 _OLD_
old-hits/log4j-1.2.17.jar contains Log4J-1.x   <= 1.2.17 _OLD_
old-hits/log4j-core-2.0-beta2.jar contains Log4J-2.x   <= 2.0-beta8 _POTENTIALLY_SAFE_ (Did you remove JndiLookup.class?)

理解结果

_VULNERABLE_ -> 您需要升级或删除此文件。

_OKAY_ -> 我们针对 Log4J 版本 2.3.1、2.12.2、2.12.3、2.15.0、2.16.0 和 2.17.0 报告此状态。我们建议升级到 2.17.1。

_SAFE_ -> 我们目前仅针对 Log4J 版本 2.3.2、2.12.4 和 2.17.1(及更高版本)报告此状态。

_OLD_ -> 您不受 CVE-2021-44228 的影响,但应计划升级,因为 Log4J 1.2.x 已停止维护 7 年,并且存在多个已知漏洞。

_POTENTIALLY_SAFE_ -> 不存在 "JndiLookup.class" 文件,可能是因为您的 Log4J 版本非常旧(2.0-beta9 之前),或者是因为有人已删除了此文件。如果是这种情况,请确保删除 "JndiLookup.class" 的是您团队或公司的成员,因为已知攻击者会自行删除此文件,以防止其他竞争攻击者访问已受感染的系统。

用法

root@kitploit:~
java -jar log4j-detector-2021.12.29.jar 

Usage: java -jar log4j-detector-2021.12.29.jar [--verbose] [--json] [--stdin] [--exclude=X] [paths to scan...]

  --json       - Output STDOUT results in JSON.  (Errors/warning still emitted to STDERR)
  --stdin      - Read STDIN for paths to explore (one path per line)
  --exclude=X  - Where X is a JSON list containing full paths to exclude. Must be valid JSON.

                 Example: --exclude='["/dev", "/media", "Z:\TEMP"]'

Exit codes:  0 = No vulnerable Log4J versions found.
             1 = At least one legacy Log4J 1.x version found.
             2 = At least one vulnerable Log4J version found.

About - MergeBase log4j detector (version 2021.12.29)
Docs  - https://github.com/mergebase/log4j-detector 
(C) Copyright 2021 Mergebase Software Inc. Licensed to you via GPLv3.

从源码构建:

root@kitploit:~
git clone https://github.com/mergebase/log4j-detector.git
cd log4j-detector/
mvn install
java -jar target/log4j-detector-latest.jar

测试:

我们在以下位置维护 log4j 样本集合:https://github.com/mergebase/log4j-samples

许可证

GPL 3.0 版本

常见问题解答

它是如何工作的?

Java 编译器将字符串字面量直接存储到已编译的 *.class 文件中。如果 log4j-detector 在您的文件系统上检测到名为 "JndiManager.class" 的文件,它会检查该文件是否包含字符串:"Invalid JNDI URI - {}"。事实证明,该特定字符串字面量仅存在于打了补丁的 Log4J 版本(2.15.0)中。任何不包含该字符串的 Log4J 版本都存在漏洞。

这种通过检查 *.class 文件中字符串字面量的技术进一步扩展到准确检测安全版本 2.3.2、2.12.4 和 2.17.1。

此扫描仪仅报告对 log4j-core 库的命中。那么 log4j-api 呢?

许多扫描仪(包括 GitHub 自己的 Dependabot)当前都将 "log4j-core" 和 "log4j-api" 库报告为易受攻击的。这些扫描仪是错误的。目前没有任何现有版本的 "log4j-api" 库可以被这些漏洞中的任何一个利用。

在 MergeBase,我们以扫描准确性为荣。您已经忙于修补和防御系统。我们不想让您将时间浪费在误报上。这就是我们不报告任何针对 log4j-api 命中的原因。

为什么要报告 2.3.1、2.10.0、2.12.2、2.12.3、2.15.0、2.16.0 和 2.17.0?

版本 2.10.0 很重要,因为这是第一个可以通过 Log4J 配置禁用 Log4J 易受攻击的“消息查找功能”的版本。

版本 2.12.2 很重要,因为它是应于 CVE-2021-44228 不易受攻击的 Java 7 兼容 Log4J 版本。

版本 2.15.0 和 2.16.0 很重要,因为这是 Log4J 默认开箱即用的配置不易受 CVE-2021-44228 攻击的第一个版本。

而版本 2.3.2、2.12.4 和 2.17.1 很重要,因为它们不易受近期发现的 CVE(例如 CVE-2021-45046 和 CVE-2021-45105)的攻击。尽管这些漏洞严重程度远不及前者,但我们预计每个人都会想要修补到 2.3.2、2.12.4 或 2.17.1 之一。

"file1.war!/path/to/file2.zip!/path/to/file3.jar!/path/to/log4j.jar" 这样的结果是什么意思?

"!" 表示 log4j-detector 进入了 zip 归档文件(例如 .zip、.ear、.war、.aar、*.jar)。由于 zip 文件可以包含 zip 文件,单个结果中可能包含多个 "!" 指示符。

注意:log4j-detector 仅递归进入 zip 归档文件。它不会进入 tar、gz 或 bz2 等格式。主要原因是 Java 系统通常配置为执行 jar 内的 jar,但从未配置为执行其他文件格式(据我所知!)。因此,在 *.tar.gz 内部的 log4j 副本对于正在运行的 Java 系统来说可能无法访问,因此不值得报告为漏洞。

第二个注意:对于 zip 中的 zip,我们的扫描器会在尝试扫描之前将内部 zip 完全加载到内存中(使用 ByteArrayInputStream)。如果您的系统上有非常大的内部 zip 文件(例如 1 GB 或更大),您可能需要给 Java 提供额外的内存。

那 Log4J 1.2.x 呢?

只有 Log4J 2.x 的版本(从 2.0-beta9 到 2.14.1)容易受到 CVE-2021-44228 的攻击。

我如何确定这不是一个伪装成 Log4J 检测器的木马?

好问题!因为我们在 Github 中包含了完整的源代码(所有 2500 行 Java 代码),以及构建步骤,而且此工具没有依赖项,所以您不需要太长时间就能仔细研究代码,直到满意为止。如果您不信任 Maven,可以直接进入 "src/main/java/com/mergebase/log4j" 目录并输入 "javac *.java"。这样也可以!

我们还使用 MergeBase 代码签名密钥对放在仓库根目录(./log4j-detector-2021.12.29.jar)中的预编译 jar 进行了签名。请运行 "jarsigner -verbose -verify log4j-detector-2021.12.29.jar" 以确认这一点。

MergeBase 是做什么的?

MergeBase

MergeBase 是一家 SCA(软件组合分析)公司,总部位于加拿大温哥华。我们与 Snyk、Sonatype、Blackduck 等公司类似,帮助公司检测并管理其软件中易受攻击的开源库。欢迎了解我们!我们拥有出色的准确性、强大的语言支持,而且价格也不贵:mergebase.com/pricing。

如果您能试用我们 SCA 产品的 2 周免费试用版,我们将非常高兴!如果您给我们的 CEO([email protected])发送一封主题为 "log4j-detector" 的电子邮件,我们会将您的免费试用期延长至 4 周。

下载工具