Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pFuzz — 模块化WAF绕过模糊测试工具,支持多线程、请求操纵和有效载荷编码,用于红队Web应用程序测试。 | Kitploit
工具/GitHubGitHub/redsection/pfuzz
WAF绕过Web安全模糊测试渗透测试红队
GitHubredsection/pfuzz

pFuzz

模块化WAF绕过模糊测试工具,支持多线程、请求操纵和有效载荷编码,用于红队Web应用程序测试。

查看仓库
16131335年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

pFuzz 是什么 / pFuzz Nedir ❓

pFuzz 是我们为研究而开发的一种高级红队模糊测试工具。它帮助我们通过同时使用不同的方法来绕过 Web 应用防火墙。

pFuzz 是我们为 Web 应用研究而开发的高级模糊测试工具。它旨在加速在不同安全应用上尝试各种攻击方法的过程。

描述 [EN]

pFuzz 是一种用 Python 语言开发的工具,旨在为 Web 应用研究提供高级模糊测试能力。由于该应用具有模块化结构,它能够快速将新发现/待发现的 WAF 绕过方法添加到 pFuzz 中,并在所有其他 WAF 上进行测试。除了模块化结构外,还使用了多线程、多处理和队列结构来使工具更加灵活,并为未来的开发奠定了基础。

该工具的编程方式使得给定的请求可以被解析,并轻松通过对象进行修改。借助这种结构,应用的开发者无需学习核心结构,即可轻松贡献,并根据自己的需求开发工具,而不改变应用的核心结构。


注意:如果你想为开发做出贡献,你不仅可以开发 pFuzz 的核心,还可以添加新的模块。 欢迎提交新的 PR :)


Açıklama [TR]

pFuzz 是一种用 Python 语言开发的工具,旨在为 Web 应用研究提供高级模糊测试能力。由于应用具有模块化结构,它能够快速将新发现/待发现的 WAF 绕过方法添加到 pFuzz 中,并在所有其他 WAF 上进行测试。除了模块化结构外,还使用了多线程、多处理和队列等结构来使工具更灵活,并为未来的开发奠定了基础。

该工具的编程方式使得给定的请求可以被解析,并轻松通过对象进行修改。借助这种结构,应用的开发者无需改变核心结构也无需学习,即可轻松贡献,并根据自己的需求开发工具。


Not:如果你想为开发做出贡献,你不仅可以以核心开发的方式,还可以通过添加新模块来实现。 期待你的新 PR :)


        _____                 
 _ __  |  ___|_   _  ____ ____
| '_ \ | |_  | | | ||_  /|_  /
| |_) ||  _| | |_| | / /  / / 
| .__/ |_|    \__,_|/___|/___|
|_|                           

开发者 💁


Emre Övünç


Mert Taşçı


Evren Yalçın

流程 📋

pFuzz

安装与使用 📚

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
  • 启用 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
   ------------------------------------

用法: 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/ 文件夹内创建一个以模块名称命名的 Python 文件。
- modules
        - charfuzzer.py
        - exparse.py
        - fuzzer.py
        - headeroperations.py
        - manupilatingheaders.py
  • 你可以像这样使用解析后的对象:myreq = HTTPReq.getobj()
from reqparser import HTTPReq
myreq = HTTPReq.getobj()
  • 它有许多从 HTTPReq 类派生的属性。你可以在 reqparser.py 中查看它们。
...
myreq.uri
myreq.body
myreq.http
myreq.referer
myreq.origin
myreq.host
myreq.cookie
...
  • 如果你想从 Excel 中获取 payload,可以使用来自 modules.exparse 的 getpayloads 方法。

    • getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
    from modules.exparse import getpayloads
    getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
    
    • 我们在 static/ 文件夹下的 statics.py 中设置了静态对象,如 fuzzsheetName。
    # static/statics.py 中的模糊测试模块
    fuzzsheetName   = 'Fuzzing'
    genericcolmnName = 'Payload'
    fuzzingpayloads = []
    
  • 现在,你可以任意更改/添加/删除属性。

myreq.uri = tmpuri + payload
myreq.addheader(header, "127.0.0.1")
myreq.content_type = "text/html"
  • 要停止多线程,你应该在 payload 列表末尾添加 #exitme# payload,并设置 statics.exitCall = True 来检查队列是否为空。
from modules.exparse import getpayloads
for payload in fuzzingpayloads:
if payload == '#exitme#':
    statics.exitCall = True
else:
    [操作]
  • 当你的对象(请求)准备好发送时,可以使用 sendit() 函数将其加入队列。
from reqsender import sendit
sendit(myreq)
  • 如果你需要更改 pFuzz 中的核心函数,可以提交 pull request 或创建 issue。

开发新模块时的一些重要功能

目的模块/类函数参数
发送请求reqsender.py sendit()对象
使用请求对象reqparser.py/HTTPReq getobj()  -
添加自定义请求头reqparser.py/HTTPReq OBJECT.addheader() 新请求头名称,值
删除请求头reqparser.py/HTTPReq OBJECT.delheader() 请求头名称
更改请求头reqparser.py/HTTPReq OBJECT.changeheader()请求头名称,新请求头名称
从文件中获取 payloadexparse.py getpayloads() 工作表名称,列名称
写入日志信息/调试/警告waflogger.py loginfo/logdebug/logwarn() 日志消息

我们绕过了哪些 WAF?

  • FortiWeb
  • Cloudflare
  • Sucuri
  • Akamai
  • Imperva
  • F5 WAF
下载工具