Joomla 3.4.3版本 SQL注入漏洞分析

0x00 漏洞分析

漏洞触发的代码位于:/administrator/components/com_contenthistory/models/history.php,getListQuery()函数内:

通过SQL及报错信息,可以知道我们的注入payload被插入到了红色框部分内。跟进getState()函数,位于libraries/legacy/model/legacy.php文件内,代码如下:

从函数参数和官方注释,可以知道,getState()函数功能是获取一个model的属性及属性对应的值,getState()函数在model的属性未设置时,会执行$this->populateState()来对model的一些属性进行赋值操作。

我们跟进populateState()函数看下做了什么操作,代码位于:/administrator/components/com_contenthistory/models/history.php 内:

该函数从用户输入中取出item_id,type_id,type_alias,等几个变量,对当前model的属性进行赋值,可控变量均强制为integer类型,无法利用。顺着最后一行代码:parent::populateState(‘h.save_date’, ‘DESC’),继续跟到父类中看父类populateState()函数的定义,代码位于:libraries/legacy/model/list.php,482行附近:

getUserStateFromRequest()函数用于将GET/POST中得list[]变量取回到$list中,并在第三个参数中指定该变量类型为array(),继续跟进:

代码对取到的list[]数组进行了遍历,并做相应的过滤、拆分,可以看到list[select]没有处理逻辑,会进入default的case,后续$this->setState(‘list.’ . $name, $value)代码执行后,导致请求中list[select]变量没有任何变量被直接赋值给Model属性,继续回头看文章最开始的注入位置,此时我们可以控制$this->getState(‘list.select’)的返回值,构造SQL注入。

确认了输入可控的位置,构造有效的payload,还需要解决几个小问题。构造POC:

index.php?option=com_contenthistory&view=history&item_id=1&type_id=1&list[select]=(exp(~(select * from(select md5(1))x)))

会发现出现错误提示 Unknown column ‘Array’:

需要增加list[ordering]=将原SQL中的order by字段值清空。
最终可执行POC:

/index.php?option=com_contenthistory&view=history&item_id=1&list[ordering]=&type_id=1&list[select]=(exp(~(select * from(select md5(1))x)))

执行会返回:

此带回显POC成功执行需要一个前提条件,就是传入的item_id 可以在Joomla_ucm_history表中查询到,否则会返回“500 – Layout default not found.”的提示。根据原文描述,可以暴力猜解item_id或使用time_based payload,不再赘述。

0x01 漏洞影响

joomla3.2-3.4.4版本

0x02 修复方案

目前Joomla官方已经跟新3.4.5版本,用户可登陆后台进行更新。
或下载官方升级包升级,下载地址:
https://github.com/joomla/joomla-cms/releases

0x03 参考链接

https://www.trustwave.com/Resources/SpiderLabs-Blog/Joomla-SQL-Injection-Vulnerability-Exploit-Results-in-Full-Administrative-Access/

作者:云盾攻防对抗团队 - 千霄

发表日期:2015年10月23日

时间: 2024-08-02 11:48:56

Joomla 3.4.3版本 SQL注入漏洞分析的相关文章

开发者论坛一周精粹(第九期):Joomla!3.7.0 Core SQL注入漏洞

第九期(2017年5月15日-2017年5月21日 ) 2017年5月17日,国外研究人员发现开源CMS软件Joomla!3.7.0 Core 版本里面发现一个SQL注入漏洞攻击,该漏洞风险较高,可能存在数据泄露的风险. [漏洞公告]Joomla!3.7.0 Core SQL注入漏洞 作者:正禾 码栈惊喜赋能618大促 释放工作量轻松备战! 作者:码栈小二 终极告白--com域名批量注册39元/首年! 作者:万小域 是时候亮出你的wang牌了!wang注册/续费/转入限时优惠! 作者:万小域 五

Wordpress4.2.3提权与SQL注入漏洞分析

这是这几天一直关注的漏洞了,wordpress上个礼拜发布的4.2.4版本,其中提到修补了可能存在的SQL漏洞和多个XSS. Check point也很快发出了分析,我也来分析与复现一下最新的这个漏洞.   0x01 GP混用造成的越权漏洞 首先,说明一下背景.wordpress中用户权限分为订阅者.投稿者.作者.编辑和管理员. 权限最低的是订阅者,订阅者只有订阅文章的权限,wordpress开启注册后默认注册的用户就是订阅者.国内很多知名网站,如Freebuf,用户注册后身份即为“订阅者”.

Java安全之SQL注入漏洞分析

漏洞简介 SQL 注入漏洞在以下情况下出现: 1. 数据从一个不可信赖的数据源进入程序. 2. 数据用于动态地构造一个 SQL 查询.    代码如下 复制代码 String userName = ctx.getAuthenticatedUserName(); String itemName = request.getParameter("itemName"); String query = "SELECT * FROM items WHERE owner+  = '&quo

Oracle Advanced Support系统SQL注入漏洞挖掘经验分享

Oracle Advanced Support系统SQL注入漏洞分析 一年多前我在客户的一个外部环境中执行渗透测试,任何外部环境渗透测试的重要步骤之一就是挖掘出可访问的WEB服务.nmap和EveWitness的结合会令这步骤变得更快,因为我们可以进行端口扫描 并且把这些结果以屏幕截图的形式导入到 EyeWitness中.当梳理完 EyeWitness提供的屏幕截图页面后,我发现了一个Oracle 高级支持服务. 虽然我之前从没听过Oracle Advanced Support,但是当我很快的g

绿盟科技网络安全威胁周报2017.20 关注Joomla!3.7.0 SQL注入漏洞CVE-2017-8917

绿盟科技发布了本周安全通告,周报编号NSFOCUS-17-20,绿盟科技漏洞库本周新增36条,其中高危3条.本次周报建议大家关注 Joomla!3.7.0 SQL注入漏洞 .目前厂商已经发布了升级补丁以修复这个安全问题,请到用户及时到厂商主页下载升级补丁,修复此漏洞. 焦点漏洞 Joomla!3.7.0 SQL注入漏洞 NSFOCUS ID 36720 CVE ID CVE-2017-8917 受影响版本 Joomla! CMS versions 3.7.0 漏洞点评 Joomla是一套世界流行

对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析_php实例

ThinkPHP官网上曾有一段公告指出,在ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入"的方法解释(参考http://doc.thinkphp.cn/manual/sql_injection.html) 使用查询条件预处理可以防止SQL注入,没错,当使用如下代码时可以起到效果: $Model->where("id=%d and usern

PHP-Nuke 存在绕过SQL注入保护及多个SQL注入漏洞

受影响系统: PHP-Nuke PHP-Nuke <= 8.0.0.3.3b 描述: PHP-Nuke是一个广为流行的网站创建和管理工具,它可以使用很多数据库软件作为后端,比如MySQL.PostgreSQL.mSQL.Interbase.Sybase等. PHP-Nuke实现上存在多个SQL注入漏洞,远程攻击者可能利用这些漏洞非授权操作数据库. 攻击者可以通过不同的过滤器绕过对SQL注入的保护.此外Web_Links.News和Download模块中还存在多个SQL注入漏洞. 厂商补丁: PH

php防止sql注入漏洞代码和分析

 这篇文章主要介绍了php防止sql注入漏洞代码和分析,最近提供了几种常见攻击的正则表达式,大家参考使用吧 注入漏洞代码和分析 代码如下: <?php  function customError($errno, $errstr, $errfile, $errline)  {      echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />";   

Joomla 对象注入漏洞分析报告

本文讲的是 Joomla 对象注入漏洞分析报告,近日,Joomla再曝高危0day漏洞,可进行远程命令执行,阿里云云盾昨日已上线相应的拦截规则抵御该漏洞.同时,对云托管客户已经做了电话通知和自动漏洞修复.统计数据显示,截至16日凌晨,已有数百个恶意IP尝试使用该漏洞对阿里云网站发起攻击,云盾已成功拦截上万次攻击请求,其中攻击请求数排名第一的黑客在一小时内尝试入侵超过1000个 Joomla 网站. 根据此次漏洞情况,Joomla 官方已紧急放出了3.4.6版本.joomla用户除了尽快升级至最新