WAF绕过-权限控制之代码混淆造轮子

WAF绕过-权限控制之代码混淆造轮子
Yatming的博客WAF绕过-权限控制之代码混淆造轮子
1 | 平常的一句话; |
我这里是assert是可以绕过的,可能是版本太低的问题,但是高版本又是一堆问题
变量覆盖
变量覆盖:简单来说就是覆盖原始变量
1 |
|
php $$ 两个 $是什么意思?
1 | 两个 $$ 是 可变变量,就是一个变量的变量名可以动态的设置和使用 |
但是如果这个是在阿里云+宝塔+安全狗的环境下的话,就不行,虽然安全狗检测不出来,但是宝塔可以,因为这个传参的时候是有这个风险值phpinfo的
可以采用一个加解密,使用base64,将这个做为一句话内容
1 |
|
传参的时候就用这个base64的加密值
成功执行
加密混淆
1 | <?php assert($_POST['chopper']);?> |
将这个写到
1 | F:\phpstudy\phpStudy_64\phpstudy_pro\Extensions\php\php5.4.45nts\php.exe code_test.php |
执行上面的语句,这里的路径按照自己的路径来
它会将加密之后的结果放到下面这个目录里面
在encoded的目录下查看test.php
已经被加密了
安全狗没有拦截
直接默认设置,输入验证码导出就行
安全狗没有拦截
可以执行
异或生成
只需要运行对应脚本语言中的py文件就OK了,运行之后是下面这个结果,你每次运行的结果都不一样,下面这个就是免杀代码
1 |
|
安全狗没有拦截
脚本原理:利用的是反序列化+异或
使用就是直接连接就行:
这里是不用base64加密传输的
如果是要采用base64加密的话,就需要有一个id,这里没有id这个值的话,随便给一个
之前是测试代码有没有被成功执行,现在要测试后门是不是可以被工具连接
像蚁剑和菜刀都只可以用原型代码去连接,就如上面这种,网上也有蚁剑插件版的:https://github.com/yzddmr6/as_webshell_venom
如果你是用base64的方式去传输,那么蚁剑最开始也没有加密解密,那么当然就识别不了
蚁剑这款工具自带编码器和解码器
1 | 菜刀,蚁剑,冰蝎优缺点 |
什么是双向加密传输?
简单来说就是发送数据的时候,加密了,对方返回的代码也加密了,这样做的意义?一些WAF产品会检测你返回之后的结果的敏感程度,从而进行拦截,那么如果是双向加密的话,返回的结果对方无法获取到信息,从而绕过
菜刀
测试连接之后,传输的数据结果
可以看到这个结果和,菜刀的界面是一样的,那么这种就叫做单向加密传输,也就是发包的时候是加密的
双重加密:
两边都是加密值
注意事项:上传的后门的文件名,不要是敏感词
虽然我可以上传后门,但是我想要访问文件管理的时候,就被拦截,原因是WAF识别了冰蝎的指纹
冰蝎魔改:
1 | https://www.freebuf.com/articles/web/263738.html |
那么上面用的工具都有各种问题,就可以尝试自己写代码【个人理解就是 “ 代码执行 “ 】,去实现文件查看
涉及资源
1 | 蚁剑;https://github.com/AntSwordProject/antSword/releases |