当前位置: 代码迷 >> 综合 >> (19)网络安全:WAF你绕过去了嘛?没有撤退可言。
  详细解决方案

(19)网络安全:WAF你绕过去了嘛?没有撤退可言。

热度:51   发布时间:2023-11-26 07:33:20.0

目录

触发WAF的情况

逻辑思维层面绕过

被代理的浏览器一定要导入所用工具的证书

方法一:旁路绕过

方法二:针对云waf防护

方法三:白名单

①IP 白名单

②静态资源

(3)动动小脑瓜找绕过方法开始尝试 

③目录伪装绕过(url 白名单)

④爬虫白名单(自我认为用处相比较大)

工具绕过

自动化绕WAF的实用渗透工具——WAFNinja

burpsuite

sqlmap

使用sqlmap自带的脚本进行绕过

检测是否有waf

规则:waf拦截(以安全狗为例)

使用自带绕过脚本进行绕过测试(现实中一般没什么用)

可以使用编写的tamper脚本(现实中一般需要自己编写)

 Fuzz/爆破

fuzz字典

Fuzz-DB/Attack

Other Payloads 小心使用


(没有不透风的墙,办法总比困难多)

只要是基于规则的绕过,在工作的时候就有着天然的缺陷型,限制了WAF,防火墙等基于这种模式的防护作用的发挥,只要渗透测试者认真一点,发挥自己的脑洞,总能找到各种各样的绕过姿势。

网络安全:WAF绕过基础分析和原理、注入绕过WAF方法分析

触发WAF的情况

最常见的:

①扫描/访问的速度太快了,过快的进行扫描,不仅获得的信息是假的,还会被waf拦截。

②waf都有指纹记录识别,,特别是awvs等一些热门工具的工具指纹。

③漏洞payload的关键字也在waf的拦截字典里。

(道高一尺魔高一丈,比来比去,越学越多)

逻辑思维层面绕过

被代理的浏览器一定要导入所用工具的证书

burpsuite代理出现安全警告:“有软件正在阻止 Firefox 安全地连接至此网站” ,多半PortSwigger CA问题_黑色地带(崛起)的博客-CSDN博客

方法一:旁路绕过

WAF设置的时候由于疏漏,针对http(80端口)和https协议(443端口)没有全部进行防护,因此,在URL中把http改为https进行相互改

方法二:针对云waf防护

查找到真实ip,绕过CDN防护(基本操作)

Get Site Ip

IP/IPv6查询,服务器地址查询 - 站长工具

ip地址查询 ip查询 查ip 公网ip地址归属地查询 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名

网站测速工具_超级ping _多地点ping检测 - 爱站网

小国家服务器访问网站

结合公司注册地进行手工判断

(有的时候工具也不一定可靠,要多试几个,然后自己判断一下)

方法三:白名单

云WAF在配置中会选择“信任”部分数据包,这部分数据包不会进行匹配检验,在WAF里有一个白名单列表,符合白名单要求的,WAF就不会进行检测。如果把我们访问的数据包伪装成白名单上的数据包,就可以绕过WAF的检验。

①IP 白名单


有些网站不会对自己(即物理机上的操作)进行检验,因此,可以在数据包中设置X-FARWARDED-FOR头,或者是X-Originating-IP,设置为127.0.0.1,就能绕过WAF。

从网络层获取的 ip,这种很难伪造,需要满足的条件比较多,较难实现,即使对数据包进行了修改,也是不会接受的但。如果是获取客户端的 IP,就存在伪造 IP 绕过的情况。


修改 http 的 header
X-Forwarded-For
X-remote-IP
X-originating-IP
x-remote-addr
X-Real-ip

迷之事件,显示一个ok

②静态资源


特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css .txt等等),类似白名单机制,waf 为了检测效率,不去检测这样一些静态文件名后缀的请求。

URL/sql.php/1.js?id=1 and 1=1

URL/index.php/1.txt?id=1 and 1=1

(Aspx/php 只识别到前面的   .aspx/.php 后面不识别)

(自我认为与工具爆破式测试相比,手工操作的逆向思维必不可少,再结合工具跑数据)

要实现的预期的结果(要有个方向)-------->对预期结果有影响的waf安全防护规则(知己知彼),并进行分析,-------->动动小脑瓜找绕过方法开始尝试

(1)要实现的预期的结果:

通过访问静态资源绕过waf,并能执行相关数据库语句

(2)了解相关waf安全防护规则

查询安全狗关于数据库操作相关检测规则

最多的就是检测URL、cookie、post的内容

很显然会对注入语句进行正则匹配,如果匹配到会进行拦截------>结合工具跑出识别不出来的情况

 但是其默认的检测HTTP头是没开的

不绕过规则的结果------>被拦截

(3)动动小脑瓜找绕过方法开始尝试 

①对post内容进行检测,说明可以尝试进行post内容进行提交

虽然没有被拦截,但是网站无法接收到post提交

GET、POST的区别、抓包GET改POST、http请求头参数、状态码_黑色地带(崛起)的博客-CSDN博客

POST不接收,那么只能考虑回到GET,或者改源码为request

(这里不存在表单提交啥的,所有可能就不接收POST提交) 

(人间真实,状况百出)

回到GET,那么就要考虑使用各种注释符,替换等等方法绕过(现在就可以用工具代替手工了)

 

 (爆破这方面还是交给工具和脚本解决吧)

③目录伪装绕过(url 白名单)


针对特定目录设置的白名单列表,如 admin/manager/system 等管理后台

检测数据包中是否含有指定的关键字符串判定,尝试构造含有这些指定目录字符串特性的数据包。

只要url中存在白名单的字符串,就作为白名单不进行检测。

常见的 url 构造姿势:

URL/index.php/admin?id=1

 (呕吼,没拦截)

 URL/index.php?a=/manage/&b=../etc/passwd

(这里不存在表单提交啥的,所有可能就不接收POST提交) 

URL/../../manage/../sql.asp?id=2

(这个可能就要先把文件目录地图爬出来)

④爬虫白名单(自我认为用处相比较大)

站点为了提高在SEO上的排名,会设置对大型搜索引擎的爬虫不做检验(百度,谷歌啥的)

也就是说,如果把数据包中user-agent字段中替换成搜索引擎信息,就可以绕过WAF的检验

部分waf有提供爬虫表名单的功能,识别爬虫的技术一般有两种:

根据UserAgent,可以很容易欺骗,我们可以伪装成爬虫尝试爬过

通过行为判断

User Agent Switch(Firefox附加组件)

 

根据爬虫白名单里面的搜索引擎列表,在网上去查他们的user-agent字段

 我搜了一下baidu的

PC端的是:

Mozilla/5.0 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)

UA端的是:

Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,likeGecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)

产品名称 对应user-agent

网页搜索 Baiduspider

无线搜索 Baiduspider

图片搜索 Baiduspider-image

视频搜索 Baiduspider-video

新闻搜索 Baiduspider-news

百度搜藏 Baiduspider-favo

百度联盟Baiduspider-cpro

竞价蜘蛛Baiduspider-sfkr

(来自百度百科)

编写脚本绕过

或者使用pycharm运行python文件

python运行脚本文件的3种方法_黑色地带(崛起)的博客-CSDN博客

pycharm:No module named ‘requests‘类似衍生的问题你真的解决了嘛?

import json
import requestsurl='http://localhost:8080/sqli-labs-master/Less-2/'head={'User-Agent':'Mozilla/5.0 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)'}for data in open('xxx.txt'):data=data.replace('\n','')urls=url+datacode=requests.get(urls).status_codeprint(urls+'|'+str(code))

工具绕过

自动化绕WAF的实用渗透工具——WAFNinja

(这里建议如果出现的问题太多,就换工具吧,条条大路通罗马,用手工字典说不定更好)

下载地址:

WoLpH/python-progressbar: Progressbar 2 - A progress bar for Python 2 and Python 3 - "pip install progressbar2" (github.com)

在这先给大家把我入的坑避一下(我成功花了一天时间入了所有坑)

(网上的安装教程一看就几行代码的事情,但是我搞起来遇见了所有问题)

第一个坑:下载WAFNinja后没点进去看需求环境

第二个坑:sudo pip install processbar 

下的是1.0.7版本的 

第三个坑:有多个版本python

文件啥都放在python2.7.8里面,结果下载的模块直接到python3.9里面了

第四个坑:ImportError:No module named xxxx

就是没有xxx安装包,一定要根据所需的版本安装,

我要下3个安装包,到头来删删下下,最后懵逼了

第五个坑:想用python3试试行不行,结果变成了打印

(虽然学过python,但是命令符里面还是要好好学学如何用,前路漫漫)

burpsuite

burpsuite自带的注入功能

sqlmap

使用sqlmap自带的脚本进行绕过

直接使用kali Linux等渗透系统中sqlmap,简单的使用入门

(脚本位置在:/usr/share/sqlmap/tamper/)

我用的是kali上自带的sqlmap

检测是否有waf

(–-identify-waf 检测WAF:新版的sqlmap里面,已经过时了,不能使用了)

sqlmap -u "URL" --batch 

--batch(进行默认配置检查)

 is protected by some kinds of WAF/IPS

(受到某种WAF/IPS保护)

规则:waf拦截(以安全狗为例)

相关注入工具都被列为拦截对象。且根据HTTP头部进行拦截

使用自带绕过脚本进行绕过测试(现实中一般没什么用)

--random-agent 使用任意HTTP头进行绕过

--porxy=http//127.0.0.1:8080(可以用burpsuite等进行代理)

sqlmap -u "URL"  --tamper=模块

(可指定多个模块)

 all tested parameters do not appear to be injectable. 

(所有测试的参数都不是可注射的。)

可以使用编写的tamper脚本(现实中一般需要自己编写)

(需要一点编程基础)

在执行的过程中可能会遇见被拦截

可以考虑设置延迟、设置代理池、伪装爬虫等方式

 Fuzz/爆破

很多工具都是编写的python脚本运行的手工所需要进行测试

??????python运行脚本文件的3种方法

也可使用pycharm运行python脚本文件

pycharm:No module named ‘requests‘类似衍生的问题你真的解决了嘛?

fuzz字典

Seclists/Fuzzing

https://github.com/danielmiessler/SecLists/tree/master/Fuzzing

Fuzz-DB/Attack

https://github.com/fuzzdb-project/fuzzdb/tree/master/attack

Other Payloads 小心使用

https://github.com/foospidy/payloads

  相关解决方案