PHITHON的公开漏洞360webscan检测脚本可绕过 2016-09-06
360webscan检测脚本可绕过
全面绕过~360webscan.php见cmseasy、phpyun
虽然我知道360肯定会忽略,要继承前人的事业~~
http://wooyun.org/bugs/wooyun-2010-049051
http://wooyun.org/bugs/wooyun-2010-049161
这个漏洞暴露出一个细节问题,可能会影响很多cms。这个靠大家发掘了。
借用cmseasy中的360webscan来说明。
其中有一个白名单函数:
1 | /** |
这个函数在后面的过滤中起着至关重要的作用,因为过滤的时候判断如果webscan_white返回false就不执行过滤。
也就是说,我们如果能让这个函数返回false,那么就能轻松绕过360webscan的过滤。
那我们来看这个函数,这个函数第一个字段是白名单内容,我们在webscan_cache.php中可以找到:
1 | //后台白名单,后台操作将不会拦截,添加"|"隔开白名单目录下面默认是网址带 admin /dede/ 放行 |
然后再看到下面:
1 | $url_path=$_SERVER['PHP_SELF']; |
当$_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拦截了:
那我们修改一下path_info,其中带有白名单字段“/admin/”:
果断页面变了,绕过了拦截。不过这个时候css和js也变了(因为基地址有问题),但并不影响sql语句和xss的执行,注入什么的还是能继续的。
我们再随便试一个不知什么版本的cmseasy,都没有拦截: