漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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; }