cve漏洞复现 php,Joomla注入漏洞(CVE-2018-6605)复现分析

复现环境

PHP 7.0.10

Joomla 3.8.6

此插件需要填入百度地图的AK。

0fcda4367f11d485deaad2187058683d.gif

漏洞复现

由于出现的注入点都相同,着重分析此URL:http://localhost/joomla/index.php?option=com_zhbaidumap&no_html=1&format=raw&task=getPlacemarkDetails 在对问题URL进行POST请求的参数id处存在漏洞。

先观察一下此问题URL对应的功能。

0fcda4367f11d485deaad2187058683d.gif

未能找到功能点。根据CVE复现,抓包分析。

可以试着根据请求的URL找到拼接的SQL语句。定位到URL对应的代码文件在

joomla\components\com_zhbaidumap\assets\js\objectmanager-min.js文件中出现。

0fcda4367f11d485deaad2187058683d.gif

未发现相关漏洞代码,转去跟踪getPlacemarkDetails函数。出现在joomla\components\com_zhbaidumap\controller.php中。

0fcda4367f11d485deaad2187058683d.gif

从上面的代码我们可以看到$addWhereClause .= ' and h.id = '. $id;  $id未做强制类型,之后变量$addWhereClause直接与SQL语句进行拼接,导致了SQL注入。

找到了出现漏洞的代码,想分析一下此处对问题URL进行POST请求参数的作用。从返回包入手,如下图所示:

0fcda4367f11d485deaad2187058683d.gif

通过定位actionbylick字段找到了此处代码。

0fcda4367f11d485deaad2187058683d.gif

此处的loadObject函数会将从数据库中取到的第一行作为php对象。

0fcda4367f11d485deaad2187058683d.gif

由此可知,此处URL会携带参数对数据库中的内容进行查询,如果从数据库查询到值,则返回一个php对象,查询到的数据被插入到actionbyclick字段的参数处。

利用验证

0fcda4367f11d485deaad2187058683d.gif

0x02 漏洞修复

升级到最新版本。

建议在代码中对数字类型的参数先进行数字类型变换,然后再代入到SQL查询语句中,这样任何注入行为都不能成功。

对于PHP语言编写的网站,大都是和mysql数据库结合的,可以通过如下几种方法结合起来防范SQL注入漏洞:

1.在GET提交的数据中进行过滤select 、update、delete、insert等其他语句。

2.在POST提交的数据中,使用函数addslashes()

3.对于MySQL用户,可以使用函数mysql_real_escape_string( )

4. 使用支持参数化查询语句和占位符的数据库操作类(如PEAR::DB, PDO等)

0x03 参考地址

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6605

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值