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

ang010ela 漏洞 2018年3月6日发布
Favorite收藏

导语:研究人员最近又发现一个Joomla!核心的漏洞——二阶SQL注入,攻击者可以利用二阶SQL注入来进行权限提升,攻击者可以获取完全的管理权限。

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

研究人员最近又发现一个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注入漏洞。

sast_summary.png

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

sql_injection_summary.png

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

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

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

 图片.png

每当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。

error_based_sql_injection.png

总结

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

本文翻译自:https://blog.ripstech.com/2018/joomla-privilege-escalation-via-sql-injection/,如若转载,请注明原文地址: http://www.4hou.com/vulnerable/10375.html
点赞 15
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论