WAF绕过-漏洞发现之代理池指纹被动探针
思维导图
漏洞发现触发WAF点-针对xray工具,awvs工具等
- 1.扫描速度(绕过方法:代理池,延迟,爬虫白名单)
- 2.工具指纹(绕过方法:特征指纹,伪造模拟真实是用户)
- 3.漏洞payload(绕过方法:数据变异,数据加密,白名单)
一、代理池Proxy_pool项目搭建及使用解释
Proxy_pool免费,但是不适用于waf绕过,因为它是抓取网上各种代理平台提供的免费代理,免费代理存活时间短,成功率随机,稳定性差。
需要搭配redis数据库
安装使用步骤:
1.Proxy_pool下载(地址:https://github.com/jhao104/proxy_pool),安装库文件,修改setting.py文件
HOST = "127.0.0.1"
DB_CONN = 'redis://:@127.0.0.1:6379/0'
2.下载并安装Redis-x64-3.2.100.msi,地址:https://github.com/MicrosoftArchive/redis/releases。
安装完成后,启动服务(找到安装路径,双击redis-cli.exe文件即可,或者在计算机管理-服务 处启动)
3.Redis可视化工具Redis Desktop Manager下载(http://pan.baidu.com/s/1kU8sY3P),安装,连接。
4.启动调度程序即可抓到代理,命令:python proxyPool.py schedule
Redis Desktop Manager中查看
5.启动webApi服务即可通过web api查看代理。
启动命令:python proxyPool.py server
查看:http://127.0.0.1:5010/get/
二、充钱代理池直接干safedog+BT+aliyun探针
免费代理不好用,那我们就买代理,建议选择隧道代理,每次请求换IP。
快代理:https://www.kuaidaili.com/
买隧道代理的,每次请求都更改ip,稳定
购买完成后提供代理配置网站
配置到脚本中就可以实现绕过了:
import requests
import time
headers = {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': 'PHPSESSID=4d6f9bc8de5e7456fd24d60d2dfd5e5a',
'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Microsoft Edge";v="92"',
'sec-ch-ua-mobile': '?0',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)'
}
for paths in open('php_b.txt', encoding='utf-8'):
url = "http://127.0.0.1/pikachu"
paths = paths.replace('\n', '')
urls = url + paths
proxy = {
'购买的代理池'
}
try:
code = requests.get(urls, headers=headers, proxies=proxy).status_code
# time.sleep(3)
print(urls + '|' + str(code))
except Exception as err:
print('connect error')
time.sleep(3)
//这里php_b.txt是爆破的目录字典
//head里面放入正常的数据包头部信息
宝塔日志,可以看到如果拦截,拦截的也是代理的IP。
三、safedog-awvs漏扫注入测试绕过-延时,白名单
本地测试sqlilabs,并且本地的安全狗也是开启状态,cc防护也开了
awvs扫描漏洞,直接扫描会被拦截。
开启sqlmap及waf进行测试。
awvs开启慢速扫描:
awvs扫描sqli-labs(绕过安全狗),设置最低速或者修改AWVS指纹头
速度很快会被安全狗拦截。也可以修改User-Agent,也可以用burpsuite拦截,然后通过按键精灵自己控制速度进行发包速度调整较为麻烦。
对于漏洞payload触发WAF这种情况,我们怎么绕过呢?
方法1:
我们举个例子,由于每个工具判断注入点的方式不同,假设awvs通过and 1=1判断注入,xray通过or 1=1判断注入,那么当waf对and 1=1进行拦截时,我们就不能使用awvs来扫描了,因为扫描不出结果,但是我们可以换xray扫描,这样就绕过了waf拦截,所以实际操作时,我们可以多换几个工具进行扫描。
方法2:
此外还可以使用冷门扫描工具,因为工具冷门,所以漏洞验证和指纹都不会被WAF采集到,可以绕过。
方法3:
使用开源的或者自己编写的工具扫描时,可以针对触发WAF点进行数据变异,从而绕过拦截
四、BT(baota)-awvs+xray漏扫Payload绕过
注意:不是每个工具都可以控制扫描速度和改变指纹头,比如xray貌似就不行。
因此xray没办法直接实现绕过。
为什么要使用xray,因为不同工具扫描漏洞使用的payload是不同的,扫描结果可能也不同。
解决xray拦截问题:
awvs扫描,配置代理,将数据包发送到burp,burp配置代理,将数据包发送给xray,实现三者联动。
此时如果awvs控制了扫描速度,那么xray也会被动延时。
步骤:
配置代理,发送至burp
bp配置:
xray开启监听:
三者联动(AWVS +Burpsuite +Xray)结果:
五、充钱代理池干safedog+BT+AliyunOS漏洞发现
宝塔正常开启
代理配置:
可以成功看到sql注入测试语句:
补充:手工测试注入
and 1=1 安全狗拦截
xor 1 = 1 被BT的防火墙拦截
每个工具的payload不一样,有的可能会触发waf被拦截