Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
log4j-log4shell-playground — 一个用于探究 Log4Shell (CVE-2021-44228) 漏洞缓解措施的试验场 | Kitploit
工具/GitHubGitHub/rgl/log4j-log4shell-playground
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubrgl/log4j-log4shell-playground

log4j-log4shell-playground

一个用于探究 Log4Shell (CVE-2021-44228) 漏洞缓解措施的试验场

查看仓库
164年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

关于

一个用于探究严重 log4j(又名 Log4Shell)(CVE-2021-44228)漏洞缓解措施的实验场。

这个特殊问题出在 JndiLookup 功能以及 log4j 解释日志调用所有参数的能力上。

我原本期望它只解释格式化消息(日志调用的第一个参数),例如 log.info("Hello {}", "${jndi:ldap://127.0.0.1:8081}") 中的 Hello {},但它却解释了所有参数。

这些缓解措施会阻止 log4j 触发 jndi 查找,但仍允许其他查找,例如 ${java:version}。

注意:自 log4j 2.16.0(LOG4J2-3211;差异)起,格式化消息不再被解释。

当目标应用程序记录任何用户提供的数据(例如来自这些常见 HTTP 标头)时,可以在远程触发此漏洞:

  • Accept
  • Cookie
  • Location
  • Origin
  • Referer
  • User-Agent
  • X-Api-Version
  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Requested-With

动手尝试(Ubuntu 20.04)

构建:

sudo apt-get install -y openjdk-11-jdk-headless
wget https://archive.apache.org/dist/logging/log4j/2.10.0/apache-log4j-2.10.0-bin.tar.gz
wget https://archive.apache.org/dist/logging/log4j/2.16.0/apache-log4j-2.16.0-bin.tar.gz
tar xf apache-log4j-2.10.0-bin.tar.gz
tar xf apache-log4j-2.16.0-bin.tar.gz
javac -Werror -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar Server.java

尝试存在漏洞的 log4j 版本:

java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

尝试从 classpath 中移除 JndiLookup 类的缓解措施:

cp apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar log4j-core-2.10.0-without-jndi-lookup.jar
zip -q -d log4j-core-2.10.0-without-jndi-lookup.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:log4j-core-2.10.0-without-jndi-lookup.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

尝试环境变量缓解措施:

注意 自 2021-12-15(约 log4j 2.16.0 / CVE-2021-45046 发布之日)起,此方法不再推荐使用。

LOG4J_FORMAT_MSG_NO_LOOKUPS=true \
    java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

尝试不存在漏洞的 log4j 版本:

java \
    -cp apache-log4j-2.16.0-bin/log4j-api-2.16.0.jar:apache-log4j-2.16.0-bin/log4j-core-2.16.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

尝试使用 grype 查看它是否能检测到该漏洞:

wget https://github.com/anchore/grype/releases/download/v0.27.2/grype_0.27.2_linux_amd64.tar.gz
tar xf grype_0.27.2_linux_amd64.tar.gz grype
./grype dir:.

尝试使用 trivy 查看它是否能检测到该漏洞:

wget https://github.com/aquasecurity/trivy/releases/download/v0.21.2/trivy_0.21.2_Linux-64bit.tar.gz
tar xf trivy_0.21.2_Linux-64bit.tar.gz trivy
./trivy fs --security-checks vuln .

参考资料

  • https://www.lunasec.io/docs/blog/log4j-zero-day-mitigation-guide/
  • https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/
  • https://logging.apache.org/log4j/2.x/security.html
  • https://logging.apache.org/log4j/2.x/manual/lookups.html#JndiLookup
下载工具