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

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

缺陷编号: WooYun-2014-55725

漏洞标题: Hdwiki Sql Injection#2

相关厂商: 互动在线(北京)科技有限公司

漏洞作者: ′雨。认证白帽子

提交时间: 2014-04-06 12:02

公开时间: 2014-07-05 12:03

漏洞类型: SQL注射漏洞

危害等级: 中

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-06: 细节已通知厂商并且等待厂商处理中
2014-04-09: 厂商已经确认,细节仅向厂商公开
2014-04-12: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-06-03: 细节向核心白帽子及相关领域专家公开
2014-06-13: 细节向普通白帽子公开
2014-06-23: 细节向实习白帽子公开
2014-07-05: 细节向公众公开

简要描述:

发现最近Hdwiki的洞 官方都只给2Rank? 分就不能高一点?
牛逼。
虽然这样我还是继续发。

详细说明:

在control/pms.php中

code 区域
function docheckrecipient(){
$sendto = $this->post['sendto'];
if (WIKI_CHARSET == 'GBK'){
$sendto = string::hiconv($sendto,'GBK','UTF-8',1);
}
$send = explode(',',$sendto);
if(count($send)>10){
$this->message($this->view->lang['fullsend'],'',2);
}
$checkreturn = $_ENV['pms']->check_recipient($sendto,0);
$message = ($checkreturn === true)? 'OK' : ($checkreturn.' '.$this->view->lang['loginTip3']);
$this->message($message,'',2);
}





code 区域
$sendto = $this->post['sendto'];
if (WIKI_CHARSET == 'GBK'){
$sendto = string::hiconv($sendto,'GBK','UTF-8',1);
}





虽然转义 但是这里



code 区域
function hiconv($str,$to='',$from='',$force=false) {
if (empty($str)) return $str;
if(!preg_match( '/[\x80-\xff]/', $str)) return $str; // is contain chinese char
if(empty($to)){
if ('utf-8' == strtolower(WIKI_CHARSET)){
return $str;
}
$to=WIKI_CHARSET;
}
if(empty($from)){
$from = ('gbk'==strtolower($to)) ? 'utf-8':'gbk';
}
$to=strtolower($to);
$from=strtolower($from);
//$isutf8=preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $str );
$re = strlen($str) > 6 ? '/([\xe0-\xef][\x80-\xbf]{2}){2}/' : '/[\xe0-\xef][\x80-\xbf]{2}/';
$isutf8 = preg_match($re, $str);

//$force = (substr($to, 0, 3) == 'utf') ? true : $force;

if(!$force && $isutf8 && $to=='utf-8' ) return $str;
if(!$force && !$isutf8 && $to=='gbk' ) return $str;

if (function_exists('iconv')){
$str = iconv($from, $to, $str);





只要force为true的话 就会iconv。



然后直接利用宽字节来注入。



code 区域
function check_recipient($sendto, $type){
$userinfos = array();
$send = array_unique(explode(',', $sendto));
sort($send);
$num = count($send);
$sendto = str_replace(",", "','", $sendto);


$query = $this->db->query("SELECT username,uid FROM ".DB_TABLEPRE."user WHERE username IN ('$sendto')");





这里由于逗号会被替换 就放弃逗号把。





漏洞证明:

h1.jpg



由于这里没回显 我就直接把结果输出一些把 至少能说明是可以注入的。

盲注。 就不用多说了。

修复方案:

求过滤。

求高分。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-04-09 11:05

厂商回复:

安排处理中~~多谢

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

登录后才能发表评论,请先 登录