网络安全:一次艰难的 WAF 绕过

news2024/11/17 3:30:23

0x00:前言

做之前没想过有这么难

0x01:后缀绕过

首先看一下 waf 咋工作的,当数据包匹配到 waf 规则后,数据包就会被丢弃掉,就像这样

waf 是拦截后缀的,首先 fuzz 一波换行

失败

多个等于号

失败

单双引号替换

失败去掉引号

失败

溢出 Content-Disposition 字段

失败,而且不清楚是因为服务器性能原因还是规则有这个,当此字段太长的时候(具体多长不清楚),正常上传图片数据包也会被丢弃。

【一>所有资源获取<一】1、200 多本网络安全系列电子书(该有的都有了)2、全套工具包(最全中文版,想用哪个用哪个)3、100 份 src 源码技术文档(项目学习不停,实践得真知)4、网络安全基础入门、Linux、web 安全、攻防方面的视频(2021 最新版)5、网络安全学习路线(告别不入流的学习)6、ctf 夺旗赛解析(题目解析实战操作)

多个 Content-Disposition 字段

失败畸形协议

失败 boundary 前加减空格

失败,而且操作这边服务器会不识别上传,导致正常文件传不上去

删除 Content-Type: image/jpeg

失败溢出文件名

失败,而且这里也有限制,太长也会导致正常上传失效。Accept-Encoding:Accept-Encoding: gzipAccept-Encoding: compressAccept-Encoding: deflateAccept-Encoding: brAccept-Encoding: identityAccept-Encoding: *均失败

分块传输

失败 似乎 waf 拦截的就是 Transfer-Encoding: chunked ,但是去掉 chunked 会请求异常

等等等后面又试了一堆,均失败柳暗花明后面看了一眼服务器 是 windows 的,尝试用 windows 文件命名规范来绕过,

众所周知,win 的文件名是不能包含以下字符的

但是上传的时候我们可以构造,尝试使用斜杠绕过

结果有点出乎意料,最后到服务器的居然是.jpg,正反斜杠都这样

换一个符号,尝试星号,被拦,都试了一遍后,发现只有冒号可以

访问一下看看是否存在 www.php

文件确实传上去了,可是问题又来了,没写入内容...

后来才知道,冒号会将文件内容置空,一时间又没了头绪

姑且后缀名绕过了吧。

0x02:内容绕过

 

只传个 0kb 和不传不是一样吗,所以还是要把数据写进去,

怎么写呢?起初我是不知道的,旁边的好兄弟说三个左尖括号可以写入文件

类似这样

但是 也被 waf 加入规则了

......

天无绝人之路,三个不行 我用四个

没想到四个也能写 笑了 都不知道为什么

但是问题又来了 文件名咋整,www.php 会被拦截,加个冒号又会将文件置空,似乎陷入了死循环,一顿瞎操作后,发现这样居然写进去了,虽然也不知道为什么,可能是什么奇奇怪怪的正则机制?

既然能写文件了,那我本来以为就简简单单了,没想到噩梦才是刚刚开始

首先我之前整的一堆花里胡哨的马一个都没过去,唯一一个能过去的,之前绕过的马还不能运行(这是个坑,后面会讲),虽然这个马在我本地是可以运行的,可能这就是玄学吧哈哈。

首先正常的变量他就过不去,然后<?php 标签和某些场景混合时也过不去,成对的括号它也拦截,总之就是变态

举个例子:

所以才有了上面那个奇怪的马

内容绕过也是在这个基础上去过去的,本来我准备直接传这个马梭哈,但是传是传上去了,执行不了,会一直等待,但是这个等待又不是被 waf 拦截了,后面才知道,这是因为 php 内容报错了,导致不能正常运行,就会一直卡在那里,

 

那为什么会报错呢,fuzz 了一波后才发现,这个服务器上必须闭合尖括号,要不然就会直接炸,明明是同样的 php 版本,也不知道为什么会这样,只传递第一个标签没问题,

少个闭合就炸:

但是末尾的两个标签也不能去掉,是用来混淆的,去掉直接 waf 都过不去

场面陷入了胶着,此时将一个完整的马传上去似乎不太现实了,一步一步来吧,先尝试能不能执行命令

之前讲过,规则是不允许成对括号出现的,所以连 phpinfo 都执行不了

 

真的执行不了吗?

$a =<<< aaassasssasssasssasssasssasssasssasssasssasssassssaa;

复制代码

这种赋值手法是 php 的一种特性,用于解决字符串中既有单引号又有双引号这种特殊情况,aa 名称没意义,起什么都可以,在某些 php 版本中,末尾的 aa 后不能加其他语句,否则会报错。

因为会报错,所以 waf 不会拦截,所以在 aa;后是可以添加 php 代码的

好巧不巧,这服务器可以执行

 

既然能执行 phpinfo,那 system()肯定也行

传完后又转起来了

这里又一个坑,因为 system 中可以用双引号也可以不用,用双引号的时候一般是类似 ls -l 这种有空格的情况,但是 whoami 这种的是不需要引号的,但是这里访问一直转明显是语法错误,那我加上就是了。

属实是天坑

命令执行没问题了,尝试写一句话,

果不其然被拦截了

尝试加点注释

没问题过去了,访问一下

又转起来了

本地试了一下,发现 eval 这句不能在 aa;后面,又是语法错误

既然如此,那我只能放大招了,那就是 fopen 大法,也就是通过 php 脚本文件向服务器写新文件,达到绕过流量层 waf 检测。

先写个 txt 试试水,所有字符能放开的最好直接用注释分开,

访问一下 www.php

没问题,说明确实执行了我们的代码。

那既然如此就好办多了,直接传个一句话

可惜,明文传输直接挂,流量还得过。

0x03:流量绕过

流量绕过就比较简单了,多次编码即可,这里上传了一个三次 base64 解密的马

但是蚁剑编码器出现了问题,可能是多次编码导致不知道哪里出了问题,直接上传冰蝎(这里需要把冰蝎分两段传,用 fopen 的 a 参数拼接脚本)over

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

入门Pytorch时的一些报错

Anaconda是一个很好的可以管理python环境的工具&#xff0c;推荐大家结合pycharm使用。 我入门时是参照up我的土堆的Pytorch教程来安装学习的&#xff0c;其中也遇到了一些问题。 1. torch.cuda.is_available结果显示False import torch torch.cuda.is_available 用anacon…

4月17号软件资讯更新合集.....

CrateDB 5.3.0 发布&#xff0c;分布式 SQL 数据库 CrateDB 是一个分布式的 SQL 数据库&#xff0c;使得实时存储和分析大量的机器数据变得简单。CrateDB 提供了通常与 NoSQL 数据库相关的可扩展性和灵活性&#xff0c;最小的 CrateDB 集群可以轻松地每秒摄取数万条记录。这些…

通过Python的PIL库给图片添加文本水印

文章目录 前言一、PIL是什么&#xff1f;二、安装PIL三、查看PIL版本四、使用PIL库给图片添加文本水印1.引入库2.打开图片文件3.新建一个Draw对象4.设置水印文字、字体、大小5.设置水印颜色5.1通过名称设置颜色5.2通过RGB值设置颜色5.3通过RGBA值设置颜色5.4通过十六进制设置颜…

Word控件Spire.Doc 【脚注】字体(3):将Doc转换为PDF时如何使用卸载的字体

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

HttpServletRequest的介绍和方法以及代码实战

目录 HttpServletRequest HttpServletRequest 介绍 HttpServletRequest 常用方法 代码实战 HTML部分 Java部分 web.xml配置 请求转发 为什么需要请求转发 请求转发说明 请求转发原理示意图 代码实战 HTML部分 CheckServlet部分 ManageServlet 部分 xml部分 请求…

【Linux】进程的概念

文章目录 &#x1f4d6; 前言1. 冯诺依曼体系结构1.1 内存存在的意义&#xff1a;1.2 程序加载到内存的意义&#xff1a;1.3 程序的预加载&#xff1a; 2. 认识进程2.1 如何理解管理&#xff1a;2.2 什么叫是进程&#xff1a;&#xff08;初步理解&#xff09; 3. 简单认识操作…

读SQL进阶教程笔记13_SQL中的分组和层级

1. 数据分组 1.1. SQL的语句中具有分组功能的是GROUP BY和PARTITION BY 1.1.1. 两者都有数学的理论基础 1.1.2. 都可以根据指定的列为表分组 1.1.3. 区别仅仅在于&#xff0c;GROUP BY在分组之后会把每个分组聚合成一行数据 1.1.4. GROUP BY的作用是将一个个元素划分成若干…

CentOS7误删自带python2或yum异常导致yum命令不可用的解决方法

yum命令不可用的解决方法 异常场景1原因验证解决方案让Python2与Python3共存 异常场景2原因解决方案卸载、删除残留文件下载系统版本对应的yum包 异常场景1 在执行yum命令时&#xff0c;系统无法找到 Python 解释器&#xff0c;因此无法运行 yum 命令&#xff0c;具体异常如下…

详解语义分割deeplabv3+模型的工业应用流程

来源&#xff1a;投稿 作者&#xff1a;某一个名字 编辑&#xff1a;学姐 导语 在工业视觉应用中&#xff0c;目标检测算法常用于特征的粗定位&#xff0c;而语义分割则在特征的精定位方面有着突出的表现。使用较多的语义分割模型主要有FCN、deeplab系列、unet等&#xff0c;根…

ASEMI代理ADI亚德诺AD8210YRZ-REEL7车规级芯片

编辑-Z AD8210YRZ-REEL7芯片参数&#xff1a; 型号&#xff1a;AD8210YRZ-REEL7 偏移电压&#xff08;RTI&#xff09;&#xff1a;1.0mV 超温&#xff08;RTI&#xff09;&#xff1a;1.8 mV 差分输入阻抗&#xff1a;2 kΩ 共模输入阻抗&#xff1a;5 MΩ 共模输入电压…

数据离奇丢失案件的侦破与思考

01 离奇的数据丢失案件 最近生产环境出了一起数据离奇丢失的案件&#xff0c;调查过程很曲折&#xff0c;几度进入死胡同。下面跟大家分享整个事件的来龙去脉。 1.1 数据丢失案件 8月初&#xff0c;用户批量导入了一批&#xff08;300&#xff09;委托人数据&#xff0c;导入…

完美解决丨SyntaxError: invalid syntax

样例 1.1. 不同编辑器 VSCode&#xff1a;点击查看PyCharm&#xff1a;点击查看 1.2. 不同版本 1.2.1. python2 与 python3 的差异 Python2 的 print 语句如下&#xff1a; python print Hello, World! Python3 的 print 语句如下&#xff1a; python print(Hello, World!) P…

超实用的 Linux 高级命令,程序员一定要懂

前言 在运维的坑里摸爬滚打好几年了&#xff0c;我还记得我刚开始的时候&#xff0c;我只会使用一些简单的命令&#xff0c;写脚本的时候&#xff0c;也是要多简单有多简单&#xff0c;所以有时候写出来的脚本又长又臭。 像一些高级点的命令&#xff0c;比如说 Xargs 命令、管…

前端登陆表单_内容非空验证_rules属性与validate方法

更多校验规则查看&#xff1a;ElementUI官网-form-attributes 表单内容 <!--3、通过rules属性传入约定的验证规则v-bind:model"dataForm"绑定data中的dataForm数据v-bind:rules"rules"绑定data中的rules属性&#xff0c;里面定义了要校验的属性及规则re…

网络安全之DVWA通关教程

网络安全之DVWA通关教程 一、DVWA简介二、DVWA安装2.1 安装PHPStudy2.2 安装DVWA 三、DVWA使用3.1 Brute Force&#xff08;暴力破解&#xff09;3.1.1 Low级别3.1.2 Medium级别3.1.3 High级别 3.2 Command Injection&#xff08;命令注入&#xff09;3.2.1 Low级别3.2.2 Middl…

三极管基本知识

1、三极管是常用的半导体器件&#xff0c;也称为双极型品体管、品体三极管&#xff0c;由P/N结组成&#xff0c;它分为NPN(简称P三极管)和PNP&#xff08;简称N三极管&#xff09;&#xff0c;P三极管用多一点。常用的有插件类和贴片类两大封装。具体封装类型有SOT-23-3,TO-92,…

QS排名十年对比:美国大学最稳,中国大学进步最快

QS世界大学排名发布距今已有20年历史&#xff0c;迄今为止&#xff0c;全球已有超过90个国家和地区共1500多所大学进入QS世界排名。QS排名评估中所使用的5项评估标准基本保持不变。 QS使用5个关键指标来进行排名&#xff0c;包括学术声誉、雇主声誉、篇均论文引用、H指数和国际…

【Node.JS】初入前端,学习node.js基本操作

文章目录 一、Node.js 创建服务端应用二、npm 使用介绍三、Node.js 回调函数四、Node.js 事件驱动程序五、Node.js 事件监听器六、特殊的error事件七、Node.js Buffer&#xff08;缓冲区&#xff09;八、输入输出流 Stream九、Node.js 模块系统十、 Node.js 路由十一、GET/POST…

Node 内置模块 【http模块】

文章目录 &#x1f31f;前言&#x1f31f;http模块&#x1f31f; 1.引入http模块&#x1f31f; 2.创建服务&#x1f31f; 3.添加头信息&#x1f31f; 4.搭建一个简单的服务器&#xff1a;&#x1f31f; 5.Request对象&#x1f31f; 6.Response对象&#x1f31f; 7.练习&#xf…

Mac 安装Java反编译工具JD-GUI

一、下载JD-GUI软件 1.首先到Github下载JD-GUI软件&#xff1a; github java-decompiler/jd-gui Public 选择jd-gui-osx-1.6.6.tar. 2.解压打开软件&#xff0c;但是提示错误&#xff1a; 3.确保本机已安装JDK. 4.如果确定已经安装了JDK海报这个这个错误&#xff0c;选中JD…