24 WEB漏洞-文件上传之WAF绕过及安全修复

news2025/1/14 18:09:38

目录

    • WAF绕过
    • 上传参数名解析:明确哪些东西能修改?
    • 常见绕过方法:
    • `符号变异-防匹配(' " ;)`
    • 数据截断-防匹配(%00 ; 换行)
    • 重复数据-防匹配(参数多次)
    • 搜索引擎搜索fuzz web字典
    • 文件上传安全修复方案

WAF绕过

safedog
BT(宝塔)
XXX云盾
宝塔过滤的比安全狗厉害一些,在真实情况下现在很多网站都是用宝塔

上传参数名解析:明确哪些东西能修改?

Content-Disposition: 表单数据,一般可更改
name:表单参数值,不能更改,改完之后,数据包是有问题的,跟前端的表单值会对不上,这样后端会无法判断你上传的地方,如果要更改,那前端得跟着一起更改
Filename:文件名,可以更改,但是更改的意义不大
Content-Type:文件MIME,视情况更改,如果对方是mime判断的话,修改之后可以达到绕过,那如果对方不是的话,那更改的意义就不是很大了

防护软件通过数据包文件里面的代码(用我们记事本打开看到的文件代码)里面是否存在后门判断出我们上传的数据包有问题,从而进行拦截的
代码的变异是我们后面要学习的,我们这篇文章现在不讲它
检测有参数值的,后面有数据的,其中文件名是比较关键的,如果后缀写成.php的,那绝对会被检测到。它拦截你就是检测到你php的关键字
我们常规的绕过思路,就是让他检测不到php,要么就是换一个脚本类型,然后这个脚本类型能够执行出php,两个方法都行,因为我们最终目的是让这个文件执行出脚本的后缀。
采用ph p去绕过,是可以成功的,但是不会被后台当成一个脚本去执行,这样子也是不行的
我们可以使用php. 、php 去绕过,最后发现被安全狗给拦截了。

常见绕过方法:

数据溢出-防匹配(xxx…)
把数据搞大,数据量过多的话,程序会按照程序的写法去里面找,但是数据太多了,程序也会有崩溃,或者匹配了多少条之后,他就找不下去了
有时候文件名过长的话,会把服务器搞崩;在form-data;那里添加大量的垃圾数据,末尾结束记得加个;,进行绕过最后绕过防护,上传脚本。
在这里插入图片描述
这是垃圾数据的一个典型情况,末尾是要加;,是有差异的。因为你加了;,默认name是一个表单,注意一下;不要在filename里面插,没有任何意义

符号变异-防匹配(' " ;)

;代表的是一对一的关系,结束了。没有带双引号的是程序自带的东西,带双引号里面的就是不固定的,一般在程序里面,将单引号括起来的话,基本上在程序开发里面单引号和双引号都可以。分号代表一个语句的结束,数据包截止的后面是没有分号的,如果加一个分号,那就代表后面还有
就是很多东西,他都存在一个函数替换,这个单引号和双引号,他能够实现的效果是一样的,我们为什么不把单引号变成双引号呢,防护软件可能检测的是双引号里面的东西,单引号的东西不检测呢,测试了一下,发现还是拦截了
我们可以去掉一个单引号或者双引号,相当与没有一个闭合,他会认为这个数据就是:.php,程序开发里面大家都知道,如果你把一些东西,没有用单引号和双引号括起来,会误认为是一个函数或者程序里面一个自带的东西,但是用双引号括起来的话,会认为是一个字符串
防护软件的匹配形式只能够自己去测试,才能知道是什么形式,是"qq.php,还是qq.php,:qq.php,如果相当于是第三种情况的话,我们就实现了绕过,那就是没有匹配到,因为他匹配到的话,那他绝对会实现拦截
安全狗现在的匹配规则是匹配单引号、双引号里面的东西,因为你不写,他就能够上传成功,相当于11.php没有匹配到,因为他没有接收到,他就绕过了,他如果接收到,绝对会拦截
在前面加可以绕过,在后面加就不能绕过,说明安全狗目前的匹配规则是取最后一个双引号,然后把前面的取出来
我这个测试是没有必要的,这只是说大家以后碰到同类的防护软件,不管是安全狗还是宝塔,安全公司里面的产品,那么大家在研究的时候,也是这么个研究方法,大家不要自己绕过就绕过了,我们学的是研究的方法后期只要脑瓜子灵活一点,是没有任何问题是可以绕过的,方法学不到,那讲了也是白讲,我希望大家学的是绕过的方法,以后自己就能做这个事情
绕过思路就是尽可能让他找不到php就可以了
“x”.php,绕过成功,上传的是.php,可以当.php执行。或者"x"x.php,上传成功是x.php,当我们知道方法就非常好玩了。

数据截断-防匹配(%00 ; 换行)

x.jpg;.php,它的意义是很明显的,因为安全狗也是程序,当它碰到截断,也是会截断的,后面的.php就没有匹配到,最后上传的后缀是.php就行了

换行相当于代码中有/n在中间了,如果程序当中用/n来表示换行,数据包识别我们这种写法,其实区块传输和换行是一个原理
filename=“x.p
h
p”

重复数据-防匹配(参数多次)

代码中匹配的递归循环,对方在验证你格式后缀的时候,如果他是单次验证,就会造成pphpph绕过
在这里插入图片描述
最后一个是filename=“x.php”;就可以了。这不是垃圾数据,垃圾数据会比这个多很多
filename=“Content-Disposition: form-data;name=“upload_file"x.php”,最后上传成功了,因为安全狗认为x.php是没有给filename的,但是他实际上是给了filename。借助原有数据包自带的正常的东西,把他作为干扰条件写到filename里面,就实现把x.php给绕过了。
/也可以做为一个条件去绕过,filename=”/jpeg;/x.php",/相当于一个截断,中间被注释了
#Payload:
大量垃圾数据缓冲溢出(Content-Disposition,filename等)
filename=“x.php
filename='x.php
filename=“a.jpg;.php”;
filename=“a.php%00.jpg”
filename=“Content-Disposition: form-data;name=“upload_file”;x.php”
filename=“x.jpg”;filename=“x.jpg”;…filename=“x.php”;
filename=”/jpeg;/x.php"
filename=
"
x
.
p
h
p
"
通过这篇文章,让大家明白研究的方法,我的研究方法就是不停的去测试,但是我们去测试总有一个先后顺序,前提条件下,我们得知道什么东西能改,什么东西不能改,这个注入语句核心类是不能改的,改的话,这个语句是会出问题的,那么最终的效果也是不能达到。同样的,我们在测试上传绕过也是这么个道理,你一定要知道那些地方,你不能动他。动他这个数据包就会有问题,那些地方你就不能改,你要对能修改的地方使劲的进行修改,然后在测试的时候,把每个waf的东西给搞清楚,以后你在研究他的时候就很容易上手,安全狗是目前比较容易过的WAF,有些东西其实都是一样的道理

搜索引擎搜索fuzz web字典

在做waf绕过的时候,fuzz是通常的一种方式
在这里插入图片描述
在filename=""这个地方加载字典进行变化,数据包发包量不要过大,不然安全狗的CC开关会直接封住你的IP。
这种就是全用工具去帮你跑,你就不要去思考问题,我们称之为fuzz模糊测试,就是用大量可能性在这里不断进行测试,其中抓到一种可以成功的可能,就完事了
假如你在入侵一个网站,你用100种方法去测试,FUZZ就是这么个情况

文件上传安全修复方案

后端验证:采用服务端验证模式
因为前端可以禁用js脚本运行,就可以绕过了
后缀检测:基于黑名单,白名单过滤
MIME检测:基于上传自带类型检测
内容检测:文件头,完整性检测
三种检测都上,比别人更安全,相关代码就几个函数,每个语言不一样,有些写的高级点的,就用面向对象的写法,写的低阶写个函数也行,在低阶点的,就在上传的那个点,写一个过滤就完事了,参考如下:
自带函数过滤:参考uploadlabs函数
getimage不上传图片就不会载入函数,只有上传图片才可以,所以它从理论上,已经把文件的属性给定义了。
自定义函数过滤:function check file(){}
把黑白名单两个都加在一起,既不是php,也不是jsp,他也必须是jpg,png常见的格式,这里可以搞双重验证,黑白两个都加,自己去查一下资料,检测传过来的参数名的值,看一下里面有没有关键字,php。
WAF防护产品:宝塔,云盾,安全公司产品等
其它语言也有相关函数,都是可以举一反三的
没有上传漏洞,再做绕过,始终是个0,没有办法判定是否存在上传漏洞,只能去盲猜。你既不能保证是否有漏洞,还得去测试是否能够绕过
前期一般是先绕过WAF,再去判定是否有上传漏洞,因为你有时候去判定是否有上传漏洞的时候,WAF已经触发,也不知道能不能成功

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

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

相关文章

无涯教程-进程 - 创建终止

到现在为止,我们知道无论何时执行程序,都会创建一个进程,并且该进程将在执行完成后终止,如果我们需要在程序中创建一个进程,并且可能希望为其安排其他任务,该怎么办。能做到吗?是的,显然是通过…

测试神器!RunnerGo让你的测试工作更高效!

引言:在软件开发领域,测试是非常重要的一环。然而,传统的测试工具往往复杂且难以使用,让测试工作变得异常繁琐。为了解决这一问题,我们迎来了RunnerGo——一款轻量级、全栈式的测试平台,让你的测试工作更加…

【TI毫米波雷达笔记】UART串口外设配置及驱动(以IWR6843AOP为例)

【TI毫米波雷达笔记】UART串口外设初始化配置及驱动(以IWR6843AOP为例) 最基本的工程建立好以后 需要给SOC进行初始化配置 int main (void) {//刷一下内存memset ((void *)L3_RAM_Buf, 0, sizeof(L3_RAM_Buf));int32_t errCode; //存放SOC初…

卷积神经网络——中篇【深度学习】【PyTorch】【d2l】

文章目录 5、卷积神经网络5.5、经典卷积神经网络(LeNet)5.5.1、理论部分5.5.2、代码实现 5.6、深度卷积神经网络(AlexNet)5.6.1、理论部分5.6.2、代码实现 5.7、使用块的网络(VGG)5.7.1、理论部分5.7.2、代…

计网第四章(网络层)(二)

目录 IPV4地址编址 第一历史阶段(分类编址): A类地址: B类地址: C类地址: D类地址(多播地址): E类地址(保留地址): 第二历史阶…

懵了,面试官问我Redis怎么测,我哪知道!

有些测试朋友来问我,redis要怎么测试?首先我们需要知道,redis是什么?它能做什么? redis是一个key-value类型的高速存储数据库。 redis常被用做:缓存、队列、发布订阅等。 所以,“redis要怎么测…

数据通信——OSPF基础

一,实验背景 公司盈利了,老总打算扩展公司规模,也发现了RIP协议的缺点带来的影响。身为工程师,老总让你替换更好的网络,顺带为拓展出的新部门进行新的网络部署,甚至买来很多设备。 此时你要用OSPF协议解决问…

推荐系统在线峰会来了,冷启动、推荐工程、模型训练…你都能找到答案

回顾推荐系统的发展历程,从 30 余年前的协同过滤算法起步,经历了深度学习的浪潮,到如今热火朝天的大模型,推荐系统一次又一次地焕发出新的活力。随着大模型的到来,推荐系统正处于变革的前夜,原有的系统模块…

计算机竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称: 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 &…

最新Python浪漫520表白代码?

前言 520是每年的5月20日,因数字“520”与“我爱你”发音相似而被许多年轻人用作表达爱意的节日。这个节日起源于中国互联网文化,逐渐传递到其他国家和地区。在这一天,情侣们通常会互送礼物、发表情、或者举行浪漫的活动来庆祝爱情。快来领取…

Unity ProBuilder SetUVs 不起作用

ProBuilder SetUVs 不起作用 🐟 需要设置face.manulUV true public static void Set01UV(this ProBuilderMesh mesh){foreach (var face in mesh.faces){face.manualUV true;//设置为手动uv}var vertices mesh.GetVertices().Select(v > v.position).ToArray(…

计算机竞赛 基于图像识别的跌倒检测算法

前言 🔥 优质竞赛项目系列,今天要分享的是 基于图像识别的跌倒检测算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/…

大数据平台安全主要是指什么安全?如何保障?

大数据时代已经来临,各种数据充斥着我们的生活与工作。随着数据的多样性以及复杂性以及大量性,大数据平台诞生了。但对于大数据平台大家都不是很了解,有人问大数据平台安全主要是指什么安全?如何保障? 大数据平台安全…

9.阿里Sentinel哨兵

1.Sentinel Sentinel(哨兵)是由阿里开源的一款流量控制和熔断降级框架,用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分,用于保护服务不被异常流量冲垮,从而提高系统的稳定…

angular15 数据切换报错

解决方案 1.涉及的属性不要公用,只能有一个标签调用 2.settimeout setTimeout(() > { xxx //导致报错的赋值代码 }, 0);

全新红娘交友系统定制版源码/相亲交友小程序源码

全新红娘交友系统定制版源码,相亲交友小程序源码。定制版红娘交友平台小程序源码,很牛逼的东西,虽然是小程序,但是有700多M大,功能超级强大,还带聊天等功能。 下载地址:https://bbs.csdn.net/t…

Drools的KieSession(有状态会话)的获取,领导就说一句话,员工加班都做不完!

使用Drools规则引擎的代码,最简单的主要有以下几部分: //这一部分的连接:“万恶”之源的KieServices,获取代码就一行,表面代码越少里面东西就越多,本以为就是个简单的工厂方法,没想到里面弯弯绕…

Windows下编译NextCloud desktop 3.9.1

首先从官方下载源码: https://github.com/nextcloud/desktop💻 Desktop sync client for Nextcloud. Contribute to nextcloud/desktop development by creating an account on GitHub.https://github.com/nextcloud/desktop 我选择的是3.9.1的稳定版本…

工控机引领移动机器人的智能化革命!

随着制造业数字化转型的加速,工业4.0时代的到来,工业互联网逐步成为中国推进新型工业化进程的核心驱动力量。而工控机作为工业互联网领域的重要组成部分,已经在越来越多行业得到广泛应用。据中商情报网数据显示,2022年我国工业自动…

Linux CentOS7系统,抓取http协议的数据包

使用 tcpdump 命令 1.首先确认是否安装 [rootlocalhost ~]# which tcpdump /usr/bin/which: no tcpdump in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) [rootlocalhost ~]#我这里没有安装 1.1 安装 tcpdump yum install tcpdump 安装成功如下&#xf…