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

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

缺陷编号:wooyun-2014-062394

漏洞标题:YouYax论坛SQL注入漏洞

相关厂商:youyax.com

漏洞作者: 路人甲

提交时间:2014-05-30 11:51

修复时间:2014-05-30 12:34

公开时间:2014-05-30 12:34

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-30: 细节已通知厂商并且等待厂商处理中
2014-05-30: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

代码审计之SQL注入,针对这个严谨的厂商,有注入绝不能忍啊,必须是高啊。而且其他都做了addsalsh ,这个是漏的

详细说明:

问题出在register.php文件中
先说fuzz时候是怎么发现的
注册用户的时候发现在第二次注册会给出提醒
alert('注册失败,该IP地址已经使用超过了1次†');
于是想着用XFF能不能绕过,果断添加X-Forwarded-For字段,就绕过了
然后在X-Forwarded-For这里,修改ip地址为1.1.1.1' and 1=1等等,
测试均成功,由此判断这里肯定是个注入,只不过是个盲注,在外面测试不太方便就没跑库
于是去看源码
关键代码
if($mix['is_prevent_reg']){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//直接从客户端获取ip
$myIp = $_SERVER['HTTP_CLIENT_IP'];
else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//从xff字段里直接获取
$myIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
else
$myIp = $_SERVER['REMOTE_ADDR'];
$sql = "select * from " . $config['db_prefix'] . "user where ip_addr='" . $myIp . "'";
//这里直接拼接到sql语句中,造成注入,后面看到是没有回显的,是个盲注
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num >= $mix['prevent_reg_num']){
echo "<script>alert('注册失败,此IP地址已经使用超过 ".$mix['prevent_reg_num']." 次了');</script>";
echo "<script>window.parent.location.href='" . url_site . "';</script>";
exit;
}
}

漏洞证明:

问题出在register.php文件中
先说fuzz时候是怎么发现的
注册用户的时候发现在第二次注册会给出提醒
alert('注册失败,该IP地址已经使用超过了1次†');
于是想着用XFF能不能绕过,果断添加X-Forwarded-For字段,就绕过了
然后在X-Forwarded-For这里,修改ip地址为1.1.1.1' and 1=1等等,
测试均成功,由此判断这里肯定是个注入,只不过是个盲注,在外面测试不太方便就没跑库
于是去看源码
关键代码
if($mix['is_prevent_reg']){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//直接从客户端获取ip
$myIp = $_SERVER['HTTP_CLIENT_IP'];
else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//从xff字段里直接获取
$myIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
else
$myIp = $_SERVER['REMOTE_ADDR'];
$sql = "select * from " . $config['db_prefix'] . "user where ip_addr='" . $myIp . "'";
//这里直接拼接到sql语句中,造成注入,后面看到是没有回显的,是个盲注
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num >= $mix['prevent_reg_num']){
echo "<script>alert('注册失败,此IP地址已经使用超过 ".$mix['prevent_reg_num']." 次了');</script>";
echo "<script>window.parent.location.href='" . url_site . "';</script>";
exit;
}
}

修复方案:

SQL注入修复

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


漏洞回应

厂商回应:

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

忽略时间:2014-05-30 12:34

厂商回复:

2天前有其他白帽子就指出来了,很早就修复了

最新状态:

2014-05-30:最新版已经有验证代码if(!filter_var($myIp, FILTER_VALIDATE_IP)){ echo "<script>alert('此IP地址是无效的!');</script>"; echo "<script>window.parent.location.href='" . url_site . "';</script>"; exit; }