突然发现自己走的路原来前人很多都走过

故事背景

同事L找我绕一个网站SQLi的WAF,我死活没绕过去;于是我找到了同学maplege,她有段时间专注于WAF的绕过。

她告诉我路径里有admin关键字就好了。

事成之后我打算过来分析一下。

正文

[附] 360 webscan源码

https://github.com/baiqj/host_manager/tree/master/other%20/360safe

先看一下效果:

路径中添加admin关键字之后

分析一下源码:

先看这个webscan_cache.php文件,类似配置文件

然后再来看webscan.php文件。

最后面的防护逻辑:

当判断条件是True时,则会根据开启的GET/POST/COOKIE/REFERRE设置来进行相应的拦截。

第一个条件:判断$webscan_switch开关是否开启,默认开启。只能尝试让第二个条件为False了。

第二个条件先来看一下这个后面的参数是webscan_cache.php文件里面配置的参数值

看一下webscan_white函数:

当在$url_path变量中匹配到$webscan_white_name时,便返回False

preg_match("/admin|\/dede\//is",$url_path)

即$url_path中存在admin或者/dede/字符串时,则跳过拦截

看一下$_SERVER['PHP_SELF']变量

也就是说可以直接在文件名后面添加任意字符

于是便有了上面的Payload,但是由于路径的原因导致了一些css文件执行失败,但是并不影响我们继续测试,所以不必在意。

后来

分析完之后,在网上搜寻这个waf的专业名字时,发现了P神的文章。

https://www.leavesongs.com/penetration/360webscan-bypass.html

原来P神早在14年便分析过了。。

相关阅读:

PHP_SELF引出的XSS挖掘新姿势

http://www.teagle.top/index.php/archives/97/