首页
学习
活动
专区
工具
TVP
发布

CVE-2018-6376:Joomla!二阶SQL注入漏洞

Joomla!是一套全球知名的内容管理系统。去年,在500000行代码中发现一个LDAP注入漏洞。攻击者利用LDAP注入漏洞可以完全控制依赖LADP进行认证的版本号小于 v3.7.5的Joomla! 版本。

研究人员最近又发现一个Joomla!核心的漏洞,影响3.8.4之前的所有版本。RIPS发现一个二阶SQL注入,攻击者可以利用二阶SQL注入来进行权限提升,攻击者可以获取完全的管理权限。

注:RIPS是一款对PHP源码进行风险扫描的工具。

受影响版本

受影响的Joomla! 版本为3.7.0到3.8.3版本。

攻击者需要用Joomla!后台中manager帐号进行认证。该用户组在Joomla!中默认的权限是低于Administrator 和Super Users用户组的。

影响

攻击者利用该漏洞可以从数据库中读取任意的数据,这些数据随后可以用来扩展攻击者低权限。通过执行PHP代码,攻击者可以获取Joomla!的完全管理权限。

自动检测

RIPS经过深度代码分析,发现两个高危的SLQ注入漏洞。

在漏洞中,用户控制的输入用来构造没有任何处理的SQL查询。

RIPS引擎中的静态代码分析算法成功地检测到了用户输入中的危险部分。还发现Joomla!数据库抽象层的一个方法是安全相关的,该方法吧执行数据库查询的SQL代码联系在一起。攻击者可以注入SQL代码来修改数据库查询来窃取隐私数据。

技术分析:二阶逻辑SQL盲注入

SQL注入定位在文件administrator/templates/hathor/postinstall/hathormessage.php中。下面的代码总结了该漏洞:

每当dashboard加载时,组件会调用函数hathormessage_postinstall_condition() 来post安装消息。该函数中,变量$adminstyle的内容会与第10行中构造的SQL查询中的WHERE部分相联系。如果攻击者可以通知参数admin_style的内容,就可以注入任意SQL代码到14行中的查询中。

第4行接收到的参数admin_style含有用户用来配置后台模板的ID,用户可以在profile设定中改变该参数。通过拦截保存的请求中的用户参数并改变admin_style的值来进行快速验证,表明数据会直接保存到数据库中而不需要进行额外的检查或处理。攻击者就可以注入任意内容到该参数,并用于之后的SQL查询中。因为payload首先会保存到数据库,然后用于查询,所以这种SQL注入就叫做二阶漏洞。查询的结果是不会直接展示在web页上,这样攻击者需要用基于错误或者时间的注入技术来进行利用。

下图说明了SQL查询中XPath错误消息如何用于读取当前登录管理员的session ID。

总结

安全漏洞是无处不在的,研究人员发现一个影响Joomla! 3.8.4以前版本的SQL注入漏洞。该漏洞可以用RIPS静态代码分析器进行识别,本文证明了二阶SQL盲注的根源和RIPS如何在复杂的PHP项目中找出隐藏的安全问题。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180306A15XU100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券