Joomla 3.4.7 修复的反序列化与SQL注入
反序列化漏洞修复分析
前一阵子 Joomla 的对象注入很火,而官方 3.4.6 的修复仅仅是严格过滤了 X_FORWARDED_FOR 和注释了 USER_AGENT 存入 SESSION 那一句,见:https://github.com/joomla/joomla-cms/commit/995db72ff4eaa544e38b4da3630b7a1ac0146264#diff-aba80b5850bf0435954b29dece250cbfL1021,这样只是指哪补哪,治标不治本。看来官方上次的修复只是临时解决方案,这次的更新(3.4.7)算是彻底解决了此问题。
上次的对象注入,需要满足三个条件:
1. 自己实现session的处理方式,重新实现了 session 存储的read()和write()方法,但是并没有对 session 的值进行安全处理。
2. Mysql非strict mode下,使用utf8mb4字符 /xF0/x9D/x8C/x86 来截断。
3. PHP <= 5.6.13 session中反序列化解析的BUG。
(详情请看P牛文章:http://drops.wooyun.org/papers/11330 )
Joomla 官方也只能解决第一个,也就是改进session的处理方式。这次更新,在 libraries/cms/version/version.php 中,将SESSION存储在内部的Registry类对象中,弃用了以前使用 $_SESSION[$namespace][$name] 的方式:
| 以下是代码片段:
|
华盟君