如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性
Posted IT老涵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性相关的知识,希望对你有一定的参考价值。
关于pFuzz
pFuzz是一款功能强大的Web应用程序防火墙安全检测/绕过工具,可以帮助广大研究人员同时通过多种方式绕过目标Web应用程序防火墙,以测试WAF的安全性。
pFuzz本质上是一款高级红队模糊测试工具,主要用于研究目的。pFuzz基于Python编程语言开发,可以帮助广大研究人员在Web应用程序安全研究方面提供高级模糊测试能力。该工具采用模块化结构开发,因此我们可以快速向pFuzz添加新的功能模块或绕过方法,并对其他WAF进行测试。除了模块化结构之外,pFuzz还使用了多线程、多处理和队列结构,使工具更加灵活,并为未来的开发奠定了强大而稳定的基础设施。
工具机制流程
支持绕过的Web应用防火墙
FortiWeb
Cloudflare
Sucuri
Akamai
Imperva
F5 WAF
依赖组件
cffi==1.14.3
cryptography==3.1.1
numpy==1.19.2
pandas==1.1.3
pycparser==2.20
pyOpenSSL==19.1.0
python-dateutil==2.8.1
pytz==2020.1
six==1.15.0
xlrd==1.2.0
工具安装和使用
sudo pip3 install virtualenv
python3 -m venv myvenv
source myvenv/bin/activate
pip3 install -r requirements.txt
python3 pfuzz.py --help
使用样例
查看帮助信息
python3 pfuzz.py --help
修改Header模块
python3 pfuzz.py -r request.txt -m
字符模糊测试模块
python3 pfuzz.py -r request.txt -cf
模糊测试模块
python3 pfuzz.py -r request.txt -f
添加代理
python3 pfuzz.py -r request.txt -f --proxy 127.0.0.1:8080
在请求间添加延迟间隔
python3 pfuzz.py -r request.txt -f -d 3
启用TLS/SSL连接
python3 pfuzz.py -r request.txt -f -s
启用日志
python3 pfuzz.py -r request.txt -f -l
启用Payload编码/完整编码
python3 pfuzz.py -r request.txt -f -e
python3 pfuzz.py -r request.txt -f -fe
设置多线程
python3 pfuzz.py -r request.txt -f -t 5
将结果输出至终端窗口
python3 pfuzz.py -r request.txt -f -o terminal
python3 pfuzz.py -r request.txt -f -od terminal
将结果输出至文件
python3 pfuzz.py -r request.txt -f -o ~/Desktop/
python3 pfuzz.py -r request.txt -f -od ~/tmp/
工具帮助
_____
_ __ | ___|_ _ ____ ____
| '_ \\ | |_ | | | ||_ /|_ /
| |_) || _| | |_| | / / / /
| .__/ |_| \\__,_|/___|/___|
|_|
------------------------------------
@EmreOvunc | @merttasci | @xsuperbug
------------------------------------
v0.2.4
------------------------------------
usage: pfuzz.py [-h] [--request REQUEST] [--proxy PROXY] [--log] [--ssl]
[--threads THREADS] [--output OUTPUT] [--delay TIME]
[--output-details OUTPUT] [--full-encode] [--encode]
[--fuzz] [--charfuzz] [--manipulate] [--version]
optional arguments:
--help/-h 显示帮助信息并退出
--proxy/-p PROXY 设置代理[IP:PORT]
--log/-l 启用日志
--ssl/-s 启用
--threads/-t NUMBER 多线程数量[默认=1]
--version/-v 显示程序版本信息并退出
[Request Options]:
--request/-r REQUEST 请求文件
--delay/-d TIME 请求之间的延迟间隔[默认=0.05]
--encode/-e 编码URI/Body中的空格字符
--full-encode/-fe 编码URI/Body中的所有字符
[Output Options]:
--output/-o OUTPUT 输出重要信息[终端/文件夹名称]
--output-details/-od OUTPUT
输出所有详细信息[终端/文件夹名称]
[Modules]:
--fuzz/-f 运行模糊测试模块
--charfuzz/-cf 运行字符模糊测试模块
--manipulate/-m 运行Header篡改模块
Usage: python3 pfuzz.py -r req.txt --log -s --fuzz -d 1 --encode -o terminal --threads 2
Usage: python3 pfuzz.py -r req.txt -f -l --proxy 127.0.0.1:8080 --output-details ~/output
以上是关于如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性的主要内容,如果未能解决你的问题,请参考以下文章
如何基于JAAS(Authorization)实现多个Web应用的单点登录