
Fuzzer modular de bypass de WAF com multi-threading, manipulação de requisições e codificação de payload para testes de aplicações web em red team.
pFuzz é uma ferramenta avançada de fuzzing para red team que desenvolvemos para nossa pesquisa. Ela nos ajuda a contornar firewalls de aplicações web usando diferentes métodos simultaneamente.
pFuzz é uma ferramenta avançada de fuzzing que desenvolvemos para pesquisas em aplicações web. Foi desenvolvida para acelerar o processo de testar vários métodos de ataque em diferentes aplicações de segurança.
pFuzz é uma ferramenta desenvolvida em Python para ter capacidade avançada de fuzzing em pesquisas de aplicações web. Como a aplicação possui uma estrutura modular, ela tem a capacidade de adicionar rapidamente novos métodos de bypass de WAF encontrados/ a serem encontrados ao pFuzz e testá-los em todos os outros WAFs. Além de uma estrutura modular, foram utilizados multi-threading, multi-processing e estruturas de fila para tornar a ferramenta mais flexível, e a infraestrutura foi criada para desenvolvimentos futuros.
A ferramenta é programada para que uma requisição fornecida possa ser analisada (parseada) e facilmente alterada através de um objeto. Graças a essa estrutura, aqueles que desenvolverão a aplicação poderão contribuir facilmente e desenvolver a ferramenta de acordo com suas próprias necessidades, sem alterar a estrutura principal da aplicação e sem precisar aprendê-la.
Nota: Se você quiser contribuir para o desenvolvimento, pode fazê-lo não apenas desenvolvendo o pFuzz, mas também adicionando novos módulos. Sinta-se à vontade para abrir novos PRs :)
pFuzz é uma ferramenta desenvolvida em Python para ter capacidade avançada de fuzzing em pesquisas de aplicações web. Como a aplicação possui uma estrutura modular, ela tem a capacidade de adicionar rapidamente novos métodos de bypass de WAF encontrados/ a serem encontrados ao pFuzz e testá-los em todos os outros WAFs. Além de uma estrutura modular, foram utilizados multi-threading, multi-processing e estruturas de fila para tornar a ferramenta mais flexível, e a infraestrutura foi criada para desenvolvimentos futuros.
A ferramenta é programada para que uma requisição fornecida possa ser analisada (parseada) e facilmente alterada através de um objeto. Graças a essa estrutura, aqueles que desenvolverão a aplicação poderão contribuir facilmente e desenvolver a ferramenta de acordo com suas próprias necessidades, sem alterar a estrutura principal da aplicação e sem precisar aprendê-la.
Nota: Se você deseja contribuir com o desenvolvimento, pode fazê-lo não apenas como desenvolvimento 'core', mas também adicionando novos módulos. Aguardamos seus novos PRs :)
_____
_ __ | ___|_ _ ____ ____
| '_ \ | |_ | | | ||_ /|_ /
| |_) || _| | |_| | / / / /
| .__/ |_| \__,_|/___|/___|
|_|
![]() 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
------------------------------------
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 show this help message and exit
--proxy/-p PROXY proxy [IP:PORT]
--log/-l enable logging
--ssl/-s enable ssl
--threads/-t NUMBER thread(s) number [default=1]
--version/-v show program's version number and exit
[Request Options]:
--request/-r REQUEST request file
--delay/-d TIME set a delay between requests [default=0.05]
--encode/-e encode space chars in uri/body
--full-encode/-fe encode all chars in uri/body
[Output Options]:
--output/-o OUTPUT output important info [terminal/folder name]
--output-details/-od OUTPUT
output all details [terminal/folder name]
[Modules]:
--fuzz/-f run fuzzing module
--charfuzz/-cf run char fuzzing module
--manipulate/-m run manipulating headers module
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