pFuzz 是我们为研究而开发的一种高级红队模糊测试工具。它帮助我们通过同时使用不同的方法来绕过 Web 应用防火墙。
pFuzz 是我们为 Web 应用研究而开发的高级模糊测试工具。它旨在加速在不同安全应用上尝试各种攻击方法的过程。
pFuzz 是一种用 Python 语言开发的工具,旨在为 Web 应用研究提供高级模糊测试能力。由于该应用具有模块化结构,它能够快速将新发现/待发现的 WAF 绕过方法添加到 pFuzz 中,并在所有其他 WAF 上进行测试。除了模块化结构外,还使用了多线程、多处理和队列结构来使工具更加灵活,并为未来的开发奠定了基础。
该工具的编程方式使得给定的请求可以被解析,并轻松通过对象进行修改。借助这种结构,应用的开发者无需学习核心结构,即可轻松贡献,并根据自己的需求开发工具,而不改变应用的核心结构。
注意:如果你想为开发做出贡献,你不仅可以开发 pFuzz 的核心,还可以添加新的模块。 欢迎提交新的 PR :)
pFuzz 是一种用 Python 语言开发的工具,旨在为 Web 应用研究提供高级模糊测试能力。由于应用具有模块化结构,它能够快速将新发现/待发现的 WAF 绕过方法添加到 pFuzz 中,并在所有其他 WAF 上进行测试。除了模块化结构外,还使用了多线程、多处理和队列等结构来使工具更灵活,并为未来的开发奠定了基础。
该工具的编程方式使得给定的请求可以被解析,并轻松通过对象进行修改。借助这种结构,应用的开发者无需改变核心结构也无需学习,即可轻松贡献,并根据自己的需求开发工具。
Not:如果你想为开发做出贡献,你不仅可以以核心开发的方式,还可以通过添加新模块来实现。 期待你的新 PR :)
_____
_ __ | ___|_ _ ____ ____
| '_ \ | |_ | | | ||_ /|_ /
| |_) || _| | |_| | / / / /
| .__/ |_| \__,_|/___|/___|
|_|
![]() Emre Övünç | ![]() Mert Taşçı | ![]() Evren Yalçın |

sudo pip3 install virtualenv
python3 -m venv myvenv
source myvenv/bin/activate
pip3 install -r requirements.txt
python3 pfuzz.py --help
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
python3 pfuzz.py --help
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
python3 pfuzz.py -r request.txt -f -s
python3 pfuzz.py -r request.txt -f -l
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
------------------------------------
用法: 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]
可选参数:
--help/-h 显示此帮助信息并退出
--proxy/-p PROXY 代理 [IP:PORT]
--log/-l 启用日志记录
--ssl/-s 启用 SSL
--threads/-t NUMBER 线程数 [默认=1]
--version/-v 显示程序的版本号并退出
[请求选项]:
--request/-r REQUEST 请求文件
--delay/-d TIME 设置请求之间的延迟 [默认=0.05]
--encode/-e 对 URI/body 中的空格字符进行编码
--full-encode/-fe 对 URI/body 中的所有字符进行编码
[输出选项]:
--output/-o OUTPUT 输出重要信息 [终端/文件夹名]
--output-details/-od OUTPUT
输出所有详细信息 [终端/文件夹名]
[模块]:
--fuzz/-f 运行模糊测试模块
--charfuzz/-cf 运行字符模糊测试模块
--manipulate/-m 运行请求头操控模块
用法: python3 pfuzz.py -r req.txt --log -s --fuzz -d 1 --encode -o terminal --threads 2
用法: python3 pfuzz.py -r req.txt -f -l --proxy 127.0.0.1:8080 --output-details ~/output
- modules
- charfuzzer.py
- exparse.py
- fuzzer.py
- headeroperations.py
- manupilatingheaders.py
from reqparser import HTTPReq
myreq = HTTPReq.getobj()
...
myreq.uri
myreq.body
myreq.http
myreq.referer
myreq.origin
myreq.host
myreq.cookie
...
如果你想从 Excel 中获取 payload,可以使用来自 modules.exparse 的 getpayloads 方法。
from modules.exparse import getpayloads
getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
# static/statics.py 中的模糊测试模块
fuzzsheetName = 'Fuzzing'
genericcolmnName = 'Payload'
fuzzingpayloads = []
现在,你可以任意更改/添加/删除属性。
myreq.uri = tmpuri + payload
myreq.addheader(header, "127.0.0.1")
myreq.content_type = "text/html"
from modules.exparse import getpayloads
for payload in fuzzingpayloads:
if payload == '#exitme#':
statics.exitCall = True
else:
[操作]
from reqsender import sendit
sendit(myreq)
| 目的 | 模块/类 | 函数 | 参数 |
|---|---|---|---|
| 发送请求 | reqsender.py | sendit() | 对象 |
| 使用请求对象 | reqparser.py/HTTPReq | getobj() | - |
| 添加自定义请求头 | reqparser.py/HTTPReq | OBJECT.addheader() | 新请求头名称,值 |
| 删除请求头 | reqparser.py/HTTPReq | OBJECT.delheader() | 请求头名称 |
| 更改请求头 | reqparser.py/HTTPReq | OBJECT.changeheader() | 请求头名称,新请求头名称 |
| 从文件中获取 payload | exparse.py | getpayloads() | 工作表名称,列名称 |
| 写入日志信息/调试/警告 | waflogger.py | loginfo/logdebug/logwarn() | 日志消息 |