怎么绕过PHP的防护,绕过某CDN的防注入简单技巧(绕过360webscan)

昨天几个朋友聊到了某个cms里用的360webscan脚本,问我怎么绕过。其实之前一直没有研究过正则的绕过,当然这次也不是正则的绕过,但最终目的是达到了,全面绕过了360webscan对于注入与xss的防护。

使用360webscan的一大cms就是cmseasy,我们就借用cmseasy中的360webscan来说明。

其中有一个白名单函数:

/**

* 拦截目录白名单

*/

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中可以找到:

//后台白名单,后台操作将不会拦截,添加"|"隔开白名单目录下面默认是网址带 admin /dede/ 放行

$webscan_white_directory='admin|/dede/|/install/';

返回来看我们的这个函数:

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;

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

注:$_SERVER[‘PHP_SELF’]指的是PHP_SELF指当前的页面绝对地址

假设我们的网站:

http://www.91ri.org/ hehe/index.php

那么PHP_SELF就是/hehe/index.php 但有个小问题很多人没有注意到,当url是PATH_INFO的时候,比如

http://www.91ri.org/ hehe/index.php/phithon

那么PHP_SELF就是/hehe/index.php/phithon 也就是说,其实PHP_SELF有一部分是我们可以控制的。

说到这里大家应该知道怎么绕过360webscan了吧?只要PHP_SELF中含有白名单字段即可。这也可以发散到很多cms上,php_self也是可控变量,注意过滤。

来测试一下看看,在本地搭建一个cmseasy,最新版20140118,提交一个含有敏感字符union select的查询,被360拦截了:

201402112026148755.jpg

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

201402112026176656.jpg

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

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

201402112026196844.jpg

转自:http://www.hackdig.com/?02/hack-8310.htm

/*********************************

* by phithon

* http://www.leavesongs.com

* 原创非首发

*********************************/

前几天发的,给法客基友分享一下。不喜勿喷,应该有很多同学早就知道了,据我所知。热烈庆祝我获得XX套一枚。。

昨天几个朋友聊到了某个cms里用的360webscan脚本,问我怎么绕过。其实之前一直没有研究过正则的绕过,当然这次也不是正则的绕过,但最终目的是达到了,全面绕过了360webscan对于注入与xss的防护。

当然流氓360忽略了,于是我也就公开了呗。反正厂商都不重视安全,我们也没必要重视了。

使用360webscan的一大cms就是cmseasy,我们就借用cmseasy中的360webscan来说明。

其中有一个白名单函数:

/**

*  拦截目录白名单

*/

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中可以找到:

//后台白名单,后台操作将不会拦截,添加"|"隔开白名单目录下面默认是网址带 admin  /dede/ 放行

$webscan_white_directory='admin|\/dede\/|\/install\/';

返回来看我们的这个函数:

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;

}

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

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

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

http://www.leavesongs.com/hehe/index.php

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

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

http://www.leavesongs.com/hehe/index.php/phithon

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

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

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

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

来测试一下看看,在本地搭建一个cmseasy,最新版20140118,提交一个含有敏感字符union select的查询,被360拦截了:

1106582vi270kvvc00l080.jpg

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

1107032itoat7ikw7fw7wb.jpg

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

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

110706qxp6ev8qzwp8ubxy.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值