WAF绕过—漏洞发现之代理池指纹被动探针

WAF绕过—漏洞发现之代理池指纹被动探针

4da81ed6f2717da1105df6c578a76d90

漏洞发现触发WAF点—针对xray,Awvs等(漏洞扫描器)

  • 扫描速度—【思路:代理池,延时,白名单等】
  • 工具指纹—【思路:特征修改,伪造模拟真实用户等】
  • 漏洞payload—【思路:数据变异,数据加密,白名单等】

网上的免费的HTTP代理,这个怎么说,存活时间长,然后是不稳定,10个里面有一个可以用都不错了

代理池 Proxy_pool 项目

1
2
3
4
5
6
7
8
9
10
# 如果已经具备运行条件, 可用通过proxyPool.py启动。
# 程序分为: schedule 调度程序 和 server Api服务
# 启动调度程序
python proxyPool.py schedule
# 启动webApi服务
python proxyPool.py server

#docker
docker pull jhao104/proxy_pool
docker run --env DB_CONN=redis://:password@ip:port/0 -p 5010:5010 jhao104/proxy_pool:2.4.0

这个工具的目的就是为了获取代理,也就是外部的ip,一般为ip+端口号

api method Description params
/ GET api介绍 None
/get GET 随机获取一个代理 可选参数: ?type=https 过滤支持https的代理
/pop GET 获取并删除一个代理 可选参数: ?type=https 过滤支持https的代理
/all GET 获取所有代理 可选参数: ?type=https 过滤支持https的代理
/count GET 查看代理数量 None
/delete GET 删除代理 ?proxy=host:ip

前期环境部署

需要安装一个Redis

**下载地址:**https://github.com/tporadowski/redis/releases。

Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis

打开一个 cmd 窗口 使用 cd 命令切换目录到 C:\redis 运行:

1
redis-server.exe redis.windows.conf

安装服务:另外打开一个cmd窗口,输入命令安装Redis到windows服务:

1
redis-server --service-install redis.windows.conf

Snipaste_2022-05-31_07-37-18

如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面

Snipaste_2022-05-31_07-08-39

这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。

切换到 redis 目录下运行:

1
redis-cli.exe -h 127.0.0.1 -p 6379

设置键值对:

1
set myKey abc

取出键值对:

1
get myKey

Snipaste_2022-05-31_07-08-45

链接

1
https://www.runoob.com/redis/redis-install.html

启动服务:关闭第一个“启动服务”cmd窗口,另开一个cmd窗口,启动服务:

1
redis-server --service-start (启动之后这个窗口就可以关闭了)
1
2
3
4
5
6
7
截图是服务已经在运行的状态

关闭服务命令:redis-server --service-stop

(5) 测试是否可以使用:在文件夹下另开一个cmd窗口,输入命令进行测试:

redis-cli.exe -h 127.0.0.1 -p 6379

下载安装 proxy_pool

地址:https://github.com/jhao104/proxy_pool

打开 requirement.txt 安装依赖

win+R打开 运行,输入 “cmd” 打开 cmd.exe。
按照requirement.txt的内容,使用pip install安装依赖。

1
安装命令:pip install -r requirements.txt

输入 pip list 可以查看已安装的依赖。

测试成功,Redis安装完成,ProxyPool相关依赖全部完成,接下来修改ProxyPool配置,启动ProxyPool。

4、修改Proxypool配置文件:主要需要修改两处

(1) DB_CONN:Redis数据库位置,注意ip和端口,127.0.0.1:6379

(2) FROXY_FEYCHER:可用的代理ip地址,参考github上实时代理源有效信息。

5、启动代理池服务:在proxypool文件夹下,分别打开两个cmd窗口运行命令。

(1) 启动调度程序:python proxyPool.py schedule

Snipaste_2022-05-31_07-53-13

(2) 启动webApi服务:python proxyPool.py server

Snipaste_2022-05-31_07-52-59

在程序中使用,运行实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import requests

def get_proxy():
#5000:settings中设置的监听端口,不是Redis服务的端口
return requests.get("http://127.0.0.1:5000/get/").json()

def delete_proxy(proxy):
requests.get("http://127.0.0.1:5000/delete/?proxy={}".format(proxy))

# 主代码
def getHtml():
retry_count = 5
proxy = get_proxy().get("proxy")
print(proxy)
while retry_count > 0:
try:
html = requests.get('http://www.baidu.com', proxies={"http": "http://{}".format(proxy)})
print(html.text)
break
except Exception:
retry_count -= 1
# 删除代理池中代理
delete_proxy(proxy)
return None

getHtml()

Snipaste_2022-05-31_07-52-41

博客参考链接

1
https://blog.csdn.net/qq_34442867/article/details/110817267

然后是充钱的代理,总结:有钱真好

使用漏扫工具进行扫描

Snipaste_2022-05-31_08-32-48

我这个安全狗是3.5版本的,开了这个cc攻击分为三个阶段,这个是最高阶段,每次进入网站都要手动点击

然后我就改成了中阶

Snipaste_2022-05-31_08-34-55

用漏扫不会拦截, 然后在改回高级

Snipaste_2022-05-31_08-52-04

直接拦截

用burp抓包查看速度

Snipaste_2022-05-31_09-00-50

很快,同时也被拦截了

Snipaste_2022-05-31_09-00-43

用慢的

Snipaste_2022-05-31_09-01-50

Snipaste_2022-05-31_09-03-52

肉眼可见的很慢

同时也没有拦截,这里要注意如果不把那个”连续的”勾上的话,我这里是不会被拦截的

Snipaste_2022-05-31_09-04-11

Snipaste_2022-05-31_09-06-02

在AWVS中添加头部白名单

Snipaste_2022-05-31_09-10-21

Snipaste_2022-05-31_09-18-57

没有拦截

总结:

1
2
3
自己开发工具或者采用开源的工具(将payload的数据变异,可以结合之前SQL注入绕过安全狗的fuzz方法变异payload)
采用才出来的漏洞扫描工具,或者冷门扫描工具
如果扫描器没有控制扫描速度的功能,可以设置代理发包到burpsuite上,然后使用按键精灵控制发包速度