
这个 Python3 脚本试图寻找易受 CVE-2021-44228 攻击的服务器,该漏洞也被称为 Log4Shell,是 Log4j2 Java 日志库中发现的一个非常严重的漏洞。
它不依赖外部 DNS 日志服务器来验证和确认易受攻击的目标:启动时,会创建一个在所有接口和端口 55555(可通过 .env 文件或环境变量更改)上监听的线程,该线程将等待来自易受攻击机器的回调连接,并通过 Python 队列通知主线程。请记住,你可能需要添加防火墙规则(和/或端口转发规则)以允许入站连接到监听的 IP:端口对。
为了增加触发漏洞的机会,该工具将一个 URL 作为参数(或一组 URL),并查找提供的 URL 中包含的任何表单。然后,它会尝试使用找到的每个表单的每个参数(GET 和 POST 请求)来利用该漏洞。这是默认行为,但可以使用 --skip-forms 选项禁用它(在这种情况下,仅执行 1 个请求,且 payload 将被放置在某些请求头字段中)。
此外,以下预定义请求头用于测试目标是否易受攻击:
可以通过命令行选项添加自定义请求头。
完整用法说明请参见下面的章节。
python3 log4j_checker.py -h
usage: log4j_checker.py [-h] [--url URL] [--headers HEADERS [HEADERS ...]] [--urls URLS] [--skip-forms]
optional arguments:
-h, --help show this help message and exit
--url URL Single url you want to test (valid url is http(s)://host:[port]/[path])
--headers HEADERS [HEADERS ...]
Custom headers you want to try (space separated)
--urls URLS A file containing 1 url per line
--skip-forms Skip forms check (only perform 1 request)
该工具旨在用于测试你自己的系统。
重要说明:即使结果为阴性,该工具也不能确保你的服务器不易受攻击。这是因为你的应用程序可能会在别处记录恶意 payload,并且不可能覆盖所有情况。因此,检查你是否易受攻击的最佳方法是遍历整个文件系统查找易受攻击的包(即 log4j-core*.jar 和 log4j-api*.jar)。