一、 事件背景
Joomla!是美国Open Source Matters团队开发的一套开源的内容管理系统(CMS)。它是网站的一个基础管理平台。几乎适合从个人网站到各种企业网站、分类信息系统、电商销售类型的各类网站,在国内也有诸多资源提供Joomla下载。
2月底,国外的安全研究人员发现Joomla!平台上二阶SQL注入漏洞(CVE-2018-6376)。通过该漏洞,可将低权限用户(Manager)提升为更高的的用户权限(Administrator或Super Administrator)。
相关链接如下:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6376
二、 漏洞复现
本地搭建一个版本为3.8.3的Joomla!测试环境,如下图所示:
创建了具有“Super Users”权限的用户“admin”,以及具有“Manager”权限的另一个用户“test”,如下图所示:
目标是将“Manager”权限的用户提升为“Super Administrator”权限,因此现在以用户“test”的身份登录。下图显示了用户“test”的仪表盘,并且可以看到“Super User”当前也处于登录状态:
从官方公开的漏洞通告中可以知道,受影响的实例是位于配置文件资料更新页中。下图显示了用户“test”的配置文件更新页面:
使用BurpSuite来拦截配置文件更新请求。如下所示,表单数据的POST请求发向了以下地址:
在受影响的参数'jform [params][admin_style]‘后面加上‘[0]‘,并注入以下PAYLOAD来获取目标数据库名称,如下图所示:
Payload: extractvalue(0x0a,concat(0x0a,(selectdatabase())))
成功提交此请求后,配置文件更新页将显示参考消息“已保存的项目”,如下图所示:
以上并没有显示任何异样,因为该页面并没有使用被注入的PAYLOAD构造SQL查询并执行。通过访问下面的URL,使注入的有效载荷构造SQL查询,并执行,如下图所示:
http://192.168.86.128/joomla/administrator/index.php
以下PAYLOAD将获取到超级管理员用户“admin”的session id,如下图所示:
Payload: extractvalue(0x0a,concat(0x0a,(selectsession_id from gh8t4_session where username='admin')))
成功获取session id后,就可以以管理员的身份登陆后台了。
三、 漏洞分析及危害
1) 漏洞分析
官方描述此次漏洞产生的原因是在Hathor的postinstall信息处,由于错误的类型转换导致了注入漏洞(hathor是joomla自带的两个后台模板之一)。
查看相关文件‘administrator/templates/hathor/postinstall/hathormessage.php’的代码片段。如下图所示,第一个红框代码主要是从‘admin_style’参数获取用户的输入值并传递给‘adminstyle’变量,第二个红框代码直接使用用户提供的输入来构建SQL查询。这里把它看成是一个数组,因此索引值为0的存储值将被用于构造查询。
如下图所示:在漏洞利用的时候,为了避免程序将整个PAYLOAD视为一个字符串,通过在受影响的参数'jform [params][admin_style]‘后面添加’[0]‘来改变参数名称,并将PAYLOAD注入到了’admin_style’的第0个索引中:
查看相应的补丁:
原来的第一位改为对取出信息做强制类型转换,然后拼接入SQL语句。
2) 漏洞危害
恶意攻击者可以利用此SQL注入漏洞将低权限用户(Manager)提升为更高的用户权限(Administrator或Super Administrator),攻击者还可以获取网站数据库大量敏感信息。
四、 数据分析
1) 世界分布
世界范围内使用Joomla!的网站数量约为9万台左右。其中,排名前五的国家分别为:美国、中国、德国、日本、澳大利亚。
下图为世界范围内使用Joomla!的网站分布情况:
图1、世界分布图
下图为世界范围内使用Joomla!的网站数量排名前十的省份或地区:
图2、世界排名前十
2) 国内分布
中国境内使用Joomla!的网站数量约为1.7万台左右。其中,排名前五的省份或地区分别为:台湾省、香港特别行政区、浙江省、北京市、上海市。
下图为中国范围内使用Joomla!的网站分布情况:
图3、国内分布图
下图为中国范围内使用Joomla!的网站数量排名前十的省份或地区:
图4、国内排名前十
下图为国内使用Joomla!的网站的国内运营商排名:
图5、国内运营商排名前十
五、 防范建议
1) 漏洞涉及版本
受影响Joomla!版本:<= 3.8.3 and >= 3.7.0
2) 修复建议
请用户务必升级Joomla!至3.8.5版本(截至本文发布时的最新版本),相关链接如下:
https://downloads.joomla.org/