PHPMPS开源分类信息系统Help.php页面$keywords变量过滤不严导致SQL注入漏洞
添加时间:
2010-06-07
系统编号:
WAVDB-01646
影响版本:
PHPMPS 2.0 GBK
程序介绍:
解决方案:
厂商补丁:
PHPMPS
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.phpmps.com/
信息来源:
<*来源:安全工会
链接:http://www.worksnet.net/archives/4695/
*>
2010-06-07
系统编号:
WAVDB-01646
影响版本:
PHPMPS 2.0 GBK
程序介绍:
Phpmps 是基于PHP + MYSQL的开源分类信息发布系统
漏洞分析:
Help.php 文件,取得keywords的值,只用trim函数,去除了首位空,直接带入sql查询
//取得文章列表
- $keyword = !emptyempty($_REQUEST['keywords']) ? trim($_REQUEST['keywords']) : '';
- $typeid = !emptyempty($_REQUEST['typeid']) ? intval($_REQUEST['typeid']) : 0;
- if(!emptyempty($keyword))
- {
- $arr = array();
- $keywords = 'AND (';
- $keywords .= "(title LIKE '%$keyword%' OR keywords LIKE '%$keyword%' )";
- $keywords .= ')';
- }
- $typeid = $typeid ? " AND typeid = '$typeid' " : '';
- $page = !emptyempty($_REQUEST['page']) && intval($_REQUEST['page']) > 0 ? intval($_REQUEST['page']) : 1;
- $size = !emptyempty($_CFG['pagesize']) && intval($_CFG['pagesize']) > 0 ? intval($_CFG['page_size']) : 20;
- $sql = "SELECT COUNT(*) FROM {$table}help WHERE 1 ". $keywords . $typeid;
- $count = $db->getOne($sql);
看一下,include下的common.php 文件,在第28行
//转义处理客户端提交的数据
- if(!get_magic_quotes_gpc())
- {
- $_POST = stripslashes_deep($_POST);
- $_GET = stripslashes_deep($_GET);
- $_COOKIE = stripslashes_deep($_COOKIE);
- }
如果GPC 被关闭了,则使用自定义函数,stripslashes_deep 对提交的字符,进行处理,stripslashes_deep 在include目录下的global.fun.php文件。
- function stripslashes_deep($value)
- {
- return is_array($value) ? array_map('stripslashes_deep', $value) : (isset($value) ? stripslashes($value) : null);
- }
默认GPC是ON,也就是打开的,stripslashes_deep函数也不会被执行,需要进行闭合处理
解决方案:
厂商补丁:
PHPMPS
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.phpmps.com/
信息来源:
<*来源:安全工会
链接:http://www.worksnet.net/archives/4695/
*>