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

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

缺陷编号: WooYun-2014-50576

漏洞标题: 360webscan检测脚本可绕过

相关厂商: 奇虎360

漏洞作者: phith0n认证白帽子

提交时间: 2014-02-10 14:36

公开时间: 2014-05-08 14:37

漏洞类型: 非授权访问/权限绕过

危害等级: 高

自评Rank: 20

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

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

Tags标签: 白盒审计

5人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-02-10: 细节已通知厂商并且等待厂商处理中
2014-02-10: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-04-06: 细节向核心白帽子及相关领域专家公开
2014-04-16: 细节向普通白帽子公开
2014-04-26: 细节向实习白帽子公开
2014-05-08: 细节向公众公开

简要描述:

全面绕过~360webscan.php见cmseasy、phpyun
虽然我知道360肯定会忽略,但我还是要继续@mramydnei 的事业~~
http://wooyun.org/bugs/wooyun-2010-049051
http://wooyun.org/bugs/wooyun-2010-049161

这个漏洞暴露出一个细节问题,可能会影响很多cms。这个靠大家发掘了。

详细说明:

借用cmseasy中的360webscan来说明。

其中有一个白名单函数:

code 区域
/**
* 拦截目录白名单
*/
function webscan_white($webscan_white_name,$webscan_white_url_t=array()) {
$url_path=$_SERVER['PHP_SELF'];
$url_var=$_SERVER['QUERY_STRING'];
if (preg_match("/".$webscan_white_name."/is",$url_path)==1) {
return false;
}
foreach ($webscan_white_url_t as $webscan_white_url) {
foreach ($webscan_white_url as $key => $value) {
if(!empty($url_var)&&!empty($value)){
if (stristr($url_path,$key)&&stristr($url_var,$value)) {
return false;
}
}
elseif (empty($url_var)&&empty($value)) {
if (stristr($url_path,$key)) {
return false;
}
}

}
}
return true;
}



这个函数在后面的过滤中起着至关重要的作用,因为过滤的时候判断如果webscan_white返回false就不执行过滤。

也就是说,我们如果能让这个函数返回false,那么就能轻松绕过360webscan的过滤。

那我们来看这个函数,这个函数第一个字段是白名单内容,我们在webscan_cache.php中可以找到:

code 区域
//后台白名单,后台操作将不会拦截,添加"|"隔开白名单目录下面默认是网址带 admin  /dede/ 放行
$webscan_white_directory='admin|\/dede\/|\/install\/';



然后再看到下面:

code 区域
$url_path=$_SERVER['PHP_SELF'];
$url_var=$_SERVER['QUERY_STRING'];
if (preg_match("/".$webscan_white_name."/is",$url_path)==1) {
return false;
}



当$_SERVER['PHP_SELF']中能正则匹配出'admin|\/dede\/|\/install\/'的时候,就返回false,就绕过了检测。



然后再给大家说明一下$_SERVER['PHP_SELF']是什么:

PHP_SELF指当前的页面地址,比如我们的网站:

http://**.**.**.**/hehe/index.php

那么PHP_SELF就是/hehe/index.php。

但有个小问题很多人没有注意到,当url是PATH_INFO的时候,比如

http://**.**.**.**/hehe/index.php/phithon

那么PHP_SELF就是/hehe/index.php/phithon

也就是说,其实PHP_SELF有一部分是我们可以控制的。



说到这里大家应该知道怎么绕过360webscan了吧?只要PHP_SELF中含有白名单字段即可。

这也可以发散到很多cms上,php_self也是可控变量,注意过滤。

漏洞证明:

官网的demo不知道为何不成功,但是我下载了最新版20140118,本地搭建。

比如我们提交一个含有敏感字符union select的查询,被360拦截了:

01.jpg



那我们修改一下path_info,其中带有白名单字段“/admin/”:

02.jpg



果断页面变了,绕过了拦截。不过这个时候css和js也变了(因为基地址有问题),但并不影响sql语句和xss的执行,注入什么的还是能继续的。

我们再随便试一个不知什么版本的cmseasy,都没有拦截:

03.jpg

修复方案:

如果考虑简便性与性能的话,可以选择不修复

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


漏洞回应

厂商回应:

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

忽略时间:2014-05-08 14:37

厂商回复:

感谢关注和反馈,该问题在新版中进行修复。考虑到性能和简单性,这个脚本只提供了基础的功能防护,目标是为了进行最基础的SQL注入和XSS防护。完整功能请使用360网站卫士:

漏洞Rank:6 (WooYun评价)

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2014-02-10 14:52 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)
    0

    我结合了前两个漏洞的厂商评论来看 哈哈哈哈 好好笑

  2. 2014-02-10 16:08 | gery ( 路人 | Rank:24 漏洞数:8 | 自由和共享的感觉真好,业余玩安全。)
    0

    企业嘛呵呵

  3. 2014-02-10 18:33 | ziwen ( 实习白帽子 | Rank:49 漏洞数:5 | 活着为了乐还是为了苦?)
    0

    玛瑞克

  4. 2014-02-10 21:10 | 超威蓝猫 ( 核心白帽子 | Rank:1133 漏洞数:122 | STEAM_0:0:55968383)
    0

    这个漏洞乌云直接公开了。 360公关能稍微有点水平?

  5. 2014-02-10 21:35 | 超威蓝猫 ( 核心白帽子 | Rank:1133 漏洞数:122 | STEAM_0:0:55968383)
    0

    说难听点,360这态度,屁都不如。

  6. 2014-02-11 12:14 | momo ( 实习白帽子 | Rank:91 漏洞数:24 | ★精华漏洞数:88888 | WooYun认证√)
    1

    360这个不要脸的企业,永远指使它的员工,叫它的员工不要承认自己的任何错误。

  7. 2014-05-08 14:42 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)
    0

    碉堡

  8. 2014-05-08 14:47 | 乐乐、 ( 普通白帽子 | Rank:868 漏洞数:189 )
    0

    @只发通用型 哈哈 360确实是逗!

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