如果你想使用下面的 windows/linux 下载方式,请事先审阅这些脚本。从互联网加载代码并执行,正是让我们陷入 Log4Shell 的原因——对吧?;-)
log4j_checker_beta.sh 脚本用于快速检查你的服务器是否可能受到 CVE-2021-44228(log4j 漏洞)的影响。
它不能 100% 证明你没有漏洞,但可以提示你是否有可能存在漏洞。
wget https://raw.githubusercontent.com/rubo77/log4j_checker_beta/main/log4j_checker_beta.sh -q -O - |bash
如果你只想看到警告信息,请使用
wget https://raw.githubusercontent.com/rubo77/log4j_checker_beta/main/log4j_checker_beta.sh -q -O - | bash | grep '\[WARNING\]'
运行前请确保你的 locate 数据库已更新,使用命令:
sudo updatedb
该脚本可以测试 JAR/WAR/EAR 归档第一层中的 .class 文件,检查它们是否与已知的 log4j 易受攻击类文件的 sha256 哈希值匹配。
你需要提供一个明文文本文件的下载地址,其中包含 HEX 格式的 sha256 哈希值,每行一个,从第一个 之后的内容都会被忽略。
该 URL 可以放置在变量 download_file 中,否则此功能将无法运行。
Lunasec.io 发布的关于易受攻击的二进制 Java .class 文件哈希值的信息:
https://github.com/lunasec-io/lunasec/blob/master/tools/log4shell/constants/vulnerablehashes.go
另请参阅他们的博客:https://www.lunasec.io/docs/blog/log4j-zero-day-mitigation-guide/
我们在脚本中内置了一个 SHA256_HASHES_URL,指向本仓库中的 hashes-pre-cve.txt 文件。但你也可以将自己的 URL 作为脚本的第一个参数传入 shell,或者使用本地文件,例如将文件存放为 hashes-pre-cve_local.txt,然后执行:
./log4j_checker_beta.sh hashes-pre-cve_local.txt
需要安装命令 locate 和 unzip。其中 unzip 用于检查 jar 文件。
要在 Debian 和 Ubuntu 系统上安装:
sudo apt install unzip locate
sudo updatedb
你可以使用以下代码片段
IEX (New-Object Net.Webclient).downloadstring("https://raw.githubusercontent.com/anlx-sw/log4j_checker_beta/main/get-vulnerablejars.ps1")
直接在 Windows 上检查可能存在漏洞的 jar 文件。或者你也可以下载这个脚本,并将输出指向可写的文件共享。 这个方法在 Windows Server 2012 上的 Powershell 2.0 中对我来说依然有效。
为了保持脚本简短易读并兼容 Powershell 2.0 及更早版本的 Windows,我们没有刻意添加错误处理或其他附加功能。该脚本仅检查 jar 文件,并搜索字符串 "JndiLookup.class",该字符串表示存在易受攻击的库。请使用你喜欢的工具以管理员权限运行它(或者直接手动使用)。
另外,如果你无法使用 Powershell,可以使用以下命令提示符片段,扫描当前驱动器中包含 "JndiLookup.class" 的 jar 文件。
以管理员权限运行此行后,请检查文件 c:\log4j-vuln.txt 中的易受攻击文件。
cd \ && for /r %f in (*.jar) do (find /i /c "JndiLookup.class" "%f" 1>nul && echo "%f" >> "c:\log4j-vuln.txt")