WAF你绕过去了嘛?没有撤退可言(手工)

举报
黑色地带(崛起) 发表于 2023/02/16 15:20:30 2023/02/16
【摘要】 WAF你绕过去了嘛?没有撤退可言(手工)

WAF你绕过去了嘛?没有撤退可言

目录

触发WAF的情况

逻辑思维层面绕过

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

方法一:旁路绕过

方法二:针对云waf防护

方法三:白名单

①IP 白名单

②静态资源

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

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

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

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

只要是基于规则的绕过,在工作的时候就有着天然的缺陷型,限制了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 requests

url='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+data

code=requests.get(urls).status_code

print(urls+'|'+str(code))

编辑



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。