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

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

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

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

工具目录

分类

查看所有分类
Loading categories
log4j-finder — 扫描磁盘上以及 Java 归档文件中的易受攻击的 Log4j2 版本(Log4Shell CVE-2021-44228、CVE-2021-45046、CVE-2021-45105) | Kitploit
工具/GitHubGitHub/fox-it/log4j-finder
静态分析漏洞扫描器漏洞分析代码分析供应链安全事件响应
GitHubfox-it/log4j-finder

log4j-finder

扫描磁盘上以及 Java 归档文件中的易受攻击的 Log4j2 版本(Log4Shell CVE-2021-44228、CVE-2021-45046、CVE-2021-45105)

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

log4j-finder

一个Python3脚本,用于扫描文件系统以查找易受_Log4Shell_(CVE-2021-44228、CVE-2021-45046和CVE-2021-45105)影响的Log4j2。它会递归扫描磁盘和(嵌套的)Java归档文件(JAR)内部。

log4j-finder 结果

工作原理

log4j-finder 使用特定文件(目前仅限 JndiManager.class)的 已知有害 和 已知安全 MD5 哈希列表,识别文件系统中的 log4j2 库,这些文件存在于 log4j2-core-* 包中;这是受 log4shell 影响的主要包。它会在 Java 归档文件和文件系统中搜索这些文件。然后根据该文件的 MD5 哈希识别 log4j2 版本。

为了优化扫描速度,它搜索文件系统并仅处理以下文件名:

  • 文件名中包含 Java ARchive 文件扩展名的所有文件(也包含在这些归档文件内嵌套的):
    • *.jar, *.war, *.ear
  • 我们拥有已知有害和安全哈希值的文件名(也位于上述归档文件内部及嵌套的):
    • JndiManager.class

如果文件匹配上述扩展名之一,它将检查这些归档文件内部(全部在内存中,不会解压),以搜索脚本拥有已知哈希值的文件名。它还会查找嵌套归档文件内部,例如 WAR 文件中的 JAR 文件。

该脚本不会扫描其他归档文件扩展名,如 7z、RAR、TAR、BZ2 等。例如,如果 JAR 文件位于 7z 文件内,脚本将无法找到它。理由在于 Java 只能加载 Java ARchive 格式,因此我们只扫描这些格式。

未知的 MD5 哈希值会显示为 UNKNOWN;如果非 log4j2 的 Java 包使用了本脚本搜索的文件名,可能会发生这种情况。如果识别出的文件路径不包含对 org/apache/logging/log4j 的引用,则很可能不是 log4j2。但仍建议手动验证。

下载与运行

您可以通过以下方式之一安装 log4j-finder:

使用发布版二进制文件

您可以为您的操作系统下载正确的二进制文件:

  • Windows 最新版(已签名):log4j-finder-signed.exe
    • 也提供未签名的二进制文件,但由于它是 PyInstaller 可执行文件,可能会触发您的防病毒软件。您也可以自行生成可执行文件,具体操作请参阅“生成 log4j-finder 可执行文件”。
  • Linux x86_64 最新版:log4j-finder

如果您使用 Linux,还可以通过以下方式之一下载最新版本并运行:

root@kitploit:~
curl -L https://github.com/fox-it/log4j-finder/releases/latest/download/log4j-finder -o log4j-finder
chmod +x log4j-finder
sudo ./log4j-finder
root@kitploit:~
wget https://github.com/fox-it/log4j-finder/releases/latest/download/log4j-finder -O log4j-finder
chmod +x log4j-finder
sudo ./log4j-finder

使用 Python 3

对于已安装 Python 3.6+ 的发行版,以下方法也适用:

root@kitploit:~
curl -L https://github.com/fox-it/log4j-finder/raw/main/log4j-finder.py -o log4j-finder.py
sudo python3 log4j-finder.py
root@kitploit:~
wget https://github.com/fox-it/log4j-finder/raw/main/log4j-finder.py
sudo python3 log4j-finder.py
root@kitploit:~
git clone https://github.com/fox-it/log4j-finder
cd log4j-finder
sudo python3 log4j-finder.py

生成 log4j-finder 可执行文件

自动生成的可执行文件

仓库中有一个 GitHub Action,它会在每次提交时使用 PyInstaller 自动生成 log4j-finder.py 脚本的 Windows 和 Linux 二进制文件。这些工作流运行的构建产物会附加到 Releases 页面。

我们意识到某些防病毒厂商不认可 Windows 二进制文件,在这种情况下,我们建议您按照以下步骤自行生成可执行文件(请注意,我们现在也提供已签名的二进制文件)。

生成 Windows 可执行文件

  1. 如果您尚未安装 Python 3.6 或更高版本,请先从 https://www.python.org/downloads/ 下载

    • 如果您希望二进制文件在 Windows 7 上运行,请选择 Python 3.8.10:
      • 下载 Python 3.8.10 Windows installer (32 bit)
      • 下载 Python 3.8.10 Windows installer (64-bit)
    • 确保在安装过程中选择:Add Python 3.x to PATH,这会使后续步骤更简单。
  2. 打开命令提示符并使用 pip 安装 pyinstaller 包:

    root@kitploit:~
    pip install pyinstaller
    
    # 在输出中您会看到 pyinstaller 的安装位置,例如:
    # C:\Users\User\AppData\Roaming\Python\Python310\Scripts
    #
    # 使用 --version 验证
    C:\Users\User\AppData\Roaming\Python\Python310\Scripts\pyinstaller.exe --version
    4.7
    
  3. (可选)安装 colorama 包以增加颜色支持:

    root@kitploit:~
    pip install colorama
    
  4. 下载最新版本的 log4j-finder.py 脚本,然后运行 PyInstaller:

    root@kitploit:~
    pyinstaller --onefile --hidden-import colorama log4j-finder.py
    

Windows 可执行文件随后位于 dist 目录:dist\log4j-finder.exe

生成 Linux 可执行文件

以 Debian 11 为例:

root@kitploit:~
# 使用 pip3 安装 PyInstaller
sudo apt update
sudo apt install python3-pip git
pip3 install --user pyinstaller

# Git 克隆并使用 PyInstaller 构建
git clone https://github.com/fox-it/log4j-finder
cd log4j-finder
~/.local/bin/pyinstaller --onefile log4j-finder.spec

# 验证二进制文件是否可用
./dist/log4j-finder --help

使用方法

扫描路径的用法示例(默认为 /):

root@kitploit:~
$ python3 log4j-finder.py /path/to/scan

或直接扫描 JAR 文件:

root@kitploit:~
$ python3 log4j-finder.py /path/to/jarfile.jar

或多个目录和/或文件:

root@kitploit:~
$ python3 log4j-finder.py /path/to/dir1 /path/to/dir2 /path/to/jarfile.jar

排除文件或目录:

root@kitploit:~
$ python3 log4j-finder.py / --exclude "/*/.dontgohere" --exclude "/home/user/*.war"

请注意,在 Windows 上,如果不提供额外参数,它将仅扫描根 c:\ 驱动器。我们建议在命令行中指定需要扫描的驱动器,例如(不存在的驱动器将被跳过):

root@kitploit:~
log4j-finder.exe c:\ d:\ e:\ f:\

无法访问的文件或目录(权限拒绝错误)不会显示。

如果您希望查看更多输出,可以使用 -v 标志获取详细输出,或使用 -vv 获取调试模式(仅建议用于调试目的)。

应用程序参数:

root@kitploit:~
positional arguments:
  PATH                  Directory or file(s) to scan (recursively) (default:
                        ['/'])

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         verbose output (-v is info, -vv is debug) (default: 0)
  -n, --no-color        disable color output (default: False)
  -q, --quiet           be more quiet, disables banner and summary (default:
                        False)
  -b, --no-banner       disable banner (default: False)
  -V, --version         show program's version number and exit
  -e PATTERN, --exclude PATTERN
                        exclude files/directories by pattern (can be used
                        multiple times) (default: None)

文件会被递归扫描,包括磁盘上和(嵌套的)Java 归档文件中。

下载工具