前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >360webscan防注入脚本全面绕过

360webscan防注入脚本全面绕过

作者头像
phith0n
发布2020-10-15 21:53:26
2.1K0
发布2020-10-15 21:53:26
举报

360webscan防注入脚本全面绕过

Phithon

2014 二月 10 15:46

阅读:21031

网络安全

360webscan, WAF绕过

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

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

    使用360webscan的一大cms就是cmseasy,我们就借用cmseasy中的360webscan来说明。     其中有一个白名单函数:

代码语言:javascript
复制
/**
 *  拦截目录白名单
 */
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中可以找到:

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

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

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

代码语言:javascript
复制
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指当前的页面绝对地址,比如我们的网站:     https://www.leavesongs.com/hehe/index.php     那么PHP_SELF就是/hehe/index.php。     但有个小问题很多人没有注意到,当url是PATH_INFO的时候,比如     https://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拦截了:

01.jpg
01.jpg

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

02.jpg
02.jpg

    果断页面变了,绕过了拦截。不过这个时候css和js也变了(因为基地址有问题),但并不影响sql语句和xss的执行,注入什么的还是能继续的。     我们再随便试一个不知什么版本的cmseasy,都没有拦截:

03.jpg
03.jpg
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 360webscan防注入脚本全面绕过
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档