目录
前言:
绕过思路:
(一)变量覆盖
(二)加密混杂
未加密前:
接口加密
加密后:
WAF验证:
(三)异或生成
0x01 原理:
0x02 适用范围
(四)常用工具
1、冰蝎
前言:
当我们把有侵入性的代码写进去时,通过指纹信息,从而招到WAF的拦截,为了获取对方的控制权,通常会采取使用代码木马执行,使用shell工具连接,但是往往注入代码会被waf拦截,无法注入也就无法获取shell连接,就算绕过代码检测之后,执行的行为也可能被waf设备拦截,导致无法执行shell操作,下面从代码的注入绕过,与代码注入后执行操作绕过总方法,下面总结几种最新的绕过姿势。
绕过思路:
一些应用防护设备会对上传的文件进行静态或者动态的查杀,静态主要是基于安全软件的特征库去匹配文件中的关键词,危险函数,变量等;动态主要是对变量的追踪,执行过程中的一些危险操作的监控。如果要避免被查杀就要考虑上传过程以及通信过程均不能被发现。上传考虑绕过,通信考虑加密。
我们将getshell分为2个大块:
- 木马先突破拦截上传到服务器;
- 木马要能够被解析执行。
其实两点都相辅相成,只是做一个大概的区分。
针对第一点,网上有很多教程多尝试。这里记录几个绕过:
1.数据溢出绕过:即在数据包“filename”之前填充大量的垃圾数据从而绕过waf。
2.改变符号:filename后面参数前后引号去掉试试,或者换成单引号,有意想不到的效果。
3.换行执行:filename后面参数一个字母一行。
针对第二点,需结合第一点的绕过方式看怎么能够执行,或结合文件包含,或配合解析漏洞。
(一)变量覆盖
我们就以<?php assert($_POST['xiaowei']); ?>为例,禁止使用简单的变量传递,大多数waf具有变量追踪,必需要引入变量覆盖传递参数。
<?php
$a=$_GET('x');
$$a=$_GET('y');
$b($_POST('xiaowei'));
?>
? x=b&y=assert//?x=b&y=assert
//$a = b
//$$a ->$b 变量引用
//$b= assert
//$b($_POST['z']);--->assert($_POST['xiaowei'])这样我们就成功的进行绕过,有的时候会在$_POST前面进行加密处理。比如说Base64_decode,如果我们拿蚁剑连接的话,就需要对应的解码设置。
(二)加密混杂
基于关键字的匹配过滤规则,上传一个附带对应的解密方法,然后上传经过对应加密的执行语句
GitHub - djunny/enphp: a Open Source PHP Code Confusion + Encryption Project
中国蚁剑自带加密功能,在线也有加密工具会员注册|php源码加密|www.PhpJiaMi.com
未加密前:
接口加密
加密后:
WAF验证:
(三)异或生成
0x01 原理:
定义:两个值相同时,返回false,否则返回true
XOR有一个特点:如果对一个值连续做两次 XOR,会返回这个值本身。
0x02 适用范围
最适合用于简易加解密运算
原理是:数A和数B进行异或运算生成数C,如果将C和B进行异或运算则C又会还原为A
异或运算加密/解密 - 一个工具箱 - 好用的在线工具都在这里!
有的时候要用到后门免杀的脚本,在github上可以找到,不过建议自己造轮子。
(四)常用工具
1、冰蝎
可以联通msf,支持双向加密,即发送到服务器的时候已经进行加密,返回到客户端也进行加密