php7.1后webshell免杀的去路
严格的D盾
D盾说,我是个严格的人,看到eval我就报木马,“看着像“=”就是“木马,宁可错杀一千,绝不放过一个。好了,多说无益,一起看看严格的D盾是如何错杀的。
我随手写一个php文件:代码如下:<?php
function encode($para0){
return $para0;
}
$b = encode("aaaa");
$a = "ccc";
eval($a);
?>
很明显没有传参呀,GET和POST都没有,压根儿就不是木马的,但是D盾竟然给我直接报了已知后门,我哭辽,如下:
大家最初的绕过应该大多都是基于”assert"的拆分和隐藏绕过的,但是在php7.1后assert变成了一种语言结构,我们已经不能像从前一样任性的拆分和隐藏了,那么我们这些渗透测试er该何去何从呢?,能否找到新的技巧呢?当然,技巧千千万,找一些少见的函数,少见的特殊字符都是不错的选择。但是我们能否借助在php7.1之前的隐藏和拆分”assert“的思路呢?答案是肯定的,我们可以尝试隐藏和拆分传入eval中的参数来直面eval函数绕过。
隐藏POST和GET
在php7.1之后,如果我们转换思路,不再纠结于隐藏assert,eval等命令执行函数(因为assert变成了一种语言结构,也无法隐藏了,无需隐藏