如何使用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应用程序防火墙的安全性的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入绕过防火墙的9种基本方法

Web应用防火墙-网站安全防护

web服务器,验证码,Xftp使用方法

如何基于JAAS(Authorization)实现多个Web应用的单点登录

在 Restful Web 服务中如何以编程方式获取用户名或密码(基本身份验证)

SQL注入 | 9种绕过Web应用程序防火墙的方式