责任声明:
本文章仅供学习交流使用,如有利用进行非法行为
上传者不承担任何责任,使用者后果自负
WAF防护分析
什么是WAF?
Web应用防护系统分为两种:软件与硬件
安全公司内部的为硬件,个人或小企业为软件,无论哪一种都是为web提供安全
存在WAF的网站,不要用扫描工具扫,会进行拦截拉黑,请勿未授权对网站进行渗透测试
WAFW00F探查
软件下载地址:
GitHub - EnableSecurity/wafw00f: WAFW00F allows one to identify and fingerprint Web Application Firewall (WAF) products protecting a website.
mirrors / EnableSecurity / wafw00f · GitCode
官方使用手册:.
Home · EnableSecurity/wafw00f Wiki · GitHub
环境配置:python3.0版本及以上
安装:
第一步:下载解压至python的lib文件夹
第二步:打开命令行窗口进入当前软件路径,进行安装
.
或者pip安装
进入Wafw00f文件路径运行main.py
帮助文档
便携打开WAFw00f
将以下代码复制到txt文档改成bat文件后缀,下次打开直接点击该bat文件就能直接使用
代码中的进入的路径需要该当前进去wafw00f文件夹的路径
D:
cd D:\py\pycharm\PyCharm Community Edition 2022.2.2\lib\wafw00f-master\wafw00f\
python main.py
doskey wafw00f=python main.py $*
cmd \k
简单测试能否使用
手工探查WAF:
使用F12network查看响应头
云盾:响应头包含yundun关键字;页面源代码有errors.aliyun.com
安全狗:响应头包含waf2.0、Safedog等字样
腾讯云:阻止响应页面,包含waf.tencent-clound.com
阻止响应代码405 method not allow
安全宝:恶意请求时返回405恶意代码 响应头包含X-Powered-by:Anquanbao
百度云加速:响应头包含Yunjiasu-ngnix
创宇盾:恶意请求时页面URL:365cyd.com、365cyd.net
waf绕过
不同的WAF产品会自定义不同的拦截警告页面
在日常渗透中我们也可以根据不同的拦截页面来辨别出网站使用了哪款WAF产品
从而有目的性的进行WAF绕过。
拦截原理
通过他的字典匹配当前输入的字符在字典里有没有存在,有即拦截
而我们想要绕过WAF,则是反向操作
避开字典库里面存在的字符但同时保证注入语句的正常使用
通俗来说检测你使用到了某字符就直接拦截,而你做的是不使用到字典的字符进行注入
提交方式绕过
在网站对其GET注入拦截,没有拦截post的策略下,我们可以更改提交方式为post,cookie、http头部等
前提条件:当前选择的提交方式当前网页代码支持该提交方式
如果网站使用get只接受参数,用post提交是没有用,需要当前网页支持post提交方式
为什么利用改变提交方式也能绕过,因为部分在get提交的策略,在post上面没有限制
但同时两个都有WAF,则需要通过其他绕过方式,或post加其他
更改提交方式为post(我的靶场网页设置接受为request全接受)
数据提交绕过
大小写:通过更改字符的大小写
加密解密:字符进行加密
编码解码:base64编码形式
等价函数:mid=ascii,eval=assert
同样执行功能的函数
特殊符号:根据当前数据库可以执行的符号
反序列化:数据通过反序列化格式提交(前提代码接受反序列化格式)
注释符混用:在编写代码的时候开发人员会添加一些注释符进行后续人员的理解
而我们可以利用注释干扰关键词匹配实现绕过
正常get提交页面
排查是哪个字符拦截
存在两个字符,拦截
存在union,不拦截
存在select,不拦截
由此得知拦截的是union select一个整句
-1/*%0a*/union/*%0a*/select/*%0a*/1,2,3#
增加各种干扰字符绕过拦截(增加干扰字符同时确保语句能正常使用)
大小写绕过
单纯的大小写还是会被拦截,这是因为WAF防护软件也会进行升级
再次循环
加密解密绕过(前提网页有该加密方式)
对使用的字符进行加解密
编码解码()
注释符干扰
#a换行()在url中%23为#,a,%0a为换行
?id=-1%20union%23a%0D%0Aselect%201,2,3#
利用多个注释以及换行干扰 (在mysql中换行不影响代码实现)
-1 union/*//------//*//*
*/select 1,2,3#
?id=-1%20union/*//------//*//*%0a*/select%201,2,3#
?id=-1%20union/*/%27%20%27/*%20//*%0a*/select%201,2,3#
相当于
-1 union/*/' '/*//*
*/select 1,2,3#
%27为单引号
参数污染
HTTP参数污染:?id=1&id=2&id=3
总而言之,进行了参数污染过后,php+apache他会接受最后一个参数 id=-1
但在安全狗中,id=1后面部分已经被注释了,不会对其检测拦截
参数污染漏洞(HPP)挖掘技巧及实战案例全汇总 - 腾讯云开发者社区-腾讯云 (tencent.com)
其他
FUZZ模糊测试
类似爆破,脚本通过更换提交数据,对其获取到没有被拦截的
部分网站会ban用IP处理,谨慎使用
.windows使用phpstudy环境安装Apache版安全狗找不到服务名
参考: Fuzz脚本的编写_合天网安实验室的博客-CSDN博客
伪造白名单绕过
前提条件:
条件1:知道对方白名单内有哪些ip
处理方法:可以通过使用对方网站ip地址,达到伪造网站本地地址访问网站
条件2:在修改http的header进行绕过时,如果网站获取ip是通过tcp网络层是伪造不了,如果获取电脑ip可进行伪造
X-forwarded-for
X-remote-IP
X-originating-IP
x-remote-addr
X-Real-ip
静态资源
伪造数据传参到了图片文件,文本文件,当注入语句传参到文件,WAF防护是不会对部分静态资源进行识别
(通过解码2进制文件,然后将注入语句编写到二进制文件内)
常见文件后缀,txt,jpg,img,swf,jpeg,css
http://1.1.1.1/sql.php/1.jpg?id=1
url白名单
在进行访问admin,manager,system等后台敏感数据,会设置白名单防止误拦
我们可以对其进去注入,它是属于白名单列
http://1.1.1.1/sql.php/admin.php?id=1
爬虫白名单
部分WAF拥有爬虫白名单,而我们将自己伪造成爬虫进行访问,不会被当成攻击进行拦截
识别爬虫的方法:
修改数据包头的伪造成搜索引擎进行爬虫
后续更新其他
版权归原作者 ZRIP 所有, 如有侵权,请联系我们删除。