欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Joomla! v3.7 SQL注入高危漏洞技术分析(CVE-2017-8917)

来源:本站整理 作者:佚名 时间:2017-05-19 TAG: 我要投稿

com_fields组件出现漏洞,com_fields组件是在3.7版本添加的,如果你使用此版本,将受到影响,并应尽快更新。这个组件可以公开访问,意味着任何能访问你站点的用户都可以发起攻击。

漏洞细节

从上图的代码可以看出,它使用JPATH_COMPONENT_ADMINISTRATOR常量值设置$config['base_path']变量,该值代表管理员组件目录的本地路径,当访问的view是fields,layout是modal的时候,程序会从JPATH_ADMINISTRATOR中加载com_fields,这就意味着普通用户可以通过这样的请求来使用管理员的com_fields,构造URL如下所示:

/index.php?option=com_fields&view=fields&layout=modal

访问此URL可以根据各种参数进行排序的站点上可用的所有自定义字段的列表。

这是唯一可以访问的管理员views字段, 将从管理员models获取数据(我们前面讨论的$config['base_path'])。在这种情况下,我们发现的漏洞位于.MarchModelFields模型(model)的./administrator/components/com_fields/models/fields.php中。

经查找,出问题方法是getListQuery。

如果不熟悉Joomla!处理SQL查询,$query->order()是一个方法,其输入将被连接到一个查询的ORDER BY语句,假如我们未经检测的用户带到这里,看看会发生什么样的事情。

用户输入传入到list.fullordering,因为FieldsModelFields模型继承JModelList类,它同样也包含上面的代码段。你可能会注意到它对内容做了一些验证,然后相应地设置list.direction和list.ordering,但是list.fullordering呢?

在switch语句之后,这个指令用我们可以控制的值来设置我们正在寻找的状态,不管它是否生成了一个有效的list.direction或者list.ordering状态。

所以为了利用这个漏洞,攻击者必须做的是为URL添加适当的参数,以便注入嵌套的SQL查询。

结论

这是一个严重的漏洞,请大家尽快更新!

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载