[网安工具] Web 模糊测试工具 —— WFuzz · 使用手册

🌟想了解其它网安工具?看看这个:[网安工具] 网络安全工具管理 —— 工具仓库 · 管理手册

https://github.com/xmendez/wfuzzhttps://github.com/xmendez/wfuzz

0x01:WFuzz 工具简介

WFuzz 是一款专为 Web 应用安全测试设计的开源工具,其核心功能是 模糊测试(Fuzzing)。 它通过自动生成大量变异请求,向目标 Web 应用的特定输入点(如 URL 参数、HTTP 头、表单字段等)发送测试载荷(Payload),以探测潜在的漏洞或隐藏内容。该工具的核心特点如下:

  • 高度可定制化: 支持自定义 Payload(字典)、多位置注入、过滤响应结果。

  • 多场景覆盖: 可用于目录/文件枚举、参数爆破、漏洞探测(如 SQL 注入、XSS)。

  • 灵活输出: 提供多种格式(文本、JSON、HTML)的测试结果分析。

0x02:WFuzz 使用教程

0x0201:WFuzz 工具安装

Kali Linux 中默认已经安装了 WFuzz,我们无需再次安装,若您想更新,可以使用下面的命令

┌──(root㉿kali)-[~]
└─# sudo apt install wfuzz

虽然 Kali Linux 中有了该工具,但是每次运行还得打开 Linux 系统确实挺烦的,所以笔者这里再讲解一下该工具的 PIP 方式安装(可以直接安装到 Windows 系统中)。

1. WFuzz PIP 环境配置 — 简易安装

WFuzz 官网说,通过下面这个命令即可一句话安装 WFuzz:

pip install wfuzz

笔者试验的环境是 WIndows,且 Python 的版本为 3.9.6,运行上面的代码,结果如下:

反正笔者是不能通过 “简易安装” 直接使用了,所以笔者采用下面的 “源码安装”。

2. WFuzz PIP 环境配置 — 源码安装

WFuzz 工具源码

笔者本次安装的是 WFuzz 的 3.1.0 版本(应该是最新的),将源码从 GitHub 上下载下来后会发现其中有一个 bat 脚本(Windows 的批处理脚本,笔者环境是 Windows):

笔者推测它是 Windows 平台上 wfuzz 的启动脚本,所以直接输入下面的命令尝试运行,结果会报一个错,显示 pycurl 这个模块未安装:

wfuzz -h

那么此时我们只需要输入下面的命令安装一下 pycurl 这个模块就好啦:

pip install pycurl

如上,安装完 pycurl 后再次运行 wfuzz -h ,程序成功运行。

0x0202:WFuzz 使用示例

1. WFuzz 使用案例 —— Fuzz 目录接口信息

笔者在本地开放了一个 Web 服务器,并尝试用 WFuzz 来做个目录扫描,看下面这个例子:

wfuzz -w ./dict1.txt http://172.16.0.1/FUZZ 

如上,可以看到,WFUZZ 会读取我们提供的字典中的内容,并进行爆破,可是呢,它爆破完后我们还需要手动筛选有效数据,当字典少时当然可以,但是当字典内容较多时,这不是折磨人嘛。

此时,我们就可以引入一个筛选机制,以上面的 Fuzz 目录为例,我们知道 404 代表 Not Found 就是没有那个目录,那么我们是不是可以隐藏掉状态码为 404 的响应包呢:

wfuzz -w ./dict1.txt --hc 404 http://172.16.0.1/FUZZ

如上,响应内容中果然少了 404,这几个页面都是可以访问的,301 代表跳转,200 正常访问。

2. WFuzz 使用案例 —— Fuzz 接口参数信息

用 WFuzz 来 Fuzz 目录其实不太常见(我们不是有 dirb 和 dirsearch 嘛,专业的事情给专业的工具干),WFuzz 比较常用的是用来 Fuzz 参数:

wfuzz -w ./dict1.txt http://172.16.0.1/hack3rx.php?FUZZ=123

如上,我们成功使用字典 Fuzz 出了 hack3rx.php 这个页面接受的参数,但是还是老问题,实战中可不止这么点字典值,所以我们又得过滤,比如,我们可以依据 Chars 字段进行过滤(Fuzz 的结果大多数都是错误的,我们把常见的那些响应包的特征符隐藏掉就行):

wfuzz -w ./dict1.txt --hh 0 http://172.16.0.1/hack3rx.php?FUZZ=123

3. WFuzz 使用案例 —— 同时 Fuzz 多个参数

在前面几个例子中,我们都是使用一个字典 Fuzz 一位内容。WFuzz 其实还支持使用多个字典 Fuzz 多个位置的内容,看下面这个例子(属于是穷举式匹配了):

wfuzz -w ./dict1.txt -w ./dict1.txt http://172.16.0.1/hack3rx.php?FUZZ=FUZ2Z

同样的,干扰项太多了,此时我们可以依据经验,把 Chars 为 0(证明 Key 就错了),和 Chars 为 17 (证明 Key 对了,但 Value 有问题)的给排除:

wfuzz -w ./dict1.txt -w ./dict1.txt --hh 17,0 http://172.16.0.1/hack3rx.php?FUZZ=FUZ2Z

0x03:WFuzz 速查手册

0x0301:WFuzz 常见用法 — 速查表

 Kali Linux 中 WFuzz 字典存放路径:/usr/share/wfuzz/wordlist

### FUZZ 目录信息(不显示 404 的请求包)
wfuzz -w ./dict1.txt --hc 404 http://172.16.0.1/FUZZ 
​
### FUZZ 参数信息
wfuzz -w ./dict1.txt http://172.16.0.1/hack3rx.php?FUZZ=123
​
### 同时 FUZZ 多个位置
wfuzz -w ./dict1.txt -w ./dict1.txt http://172.16.0.1/hack3rx.php?FUZZ=FUZ2Z

0x0302:WFuzz 参数说明 — 中文版

Wfuzz 3.1.0 - 网页模糊测试工具
​
用法: 
    wfuzz [options] -z payload,params <url>
​
关键词说明:
    FUZZ,FUZ2Z, ... FUZnZ 无论你在请求中的何处放置这些关键字,WFUZZ 都会用指定的 Payload 来替换它们。
​
    FUZZ{baseline_value} FUZZ 将首先被替换为 baseline_value(基准值),这个值会作为首个请求被发送,可用于后续结果的过滤(如通过 BBB 标记引用基准值对比响应差异。
    --hc BBB => 隐藏与基准值相同的结果; --sc BBB => 显示与基准值不同的结果(方便过滤响应)
​
选项:
    -h              显示基础帮助信息
    --help          显示高级帮助信息信息(更多细节)
    --filter-help   显示过滤器语法说明
    --version       显示版本详情
    
    -e <type> 
        列出可用的 encoders(编码器)、payloads(载荷)、iterators(迭代器)、printers(打印器)、scripts(脚本)
​
    -c              彩色输出
    -v              显示详细输出信息
    --interact      (测试功能)启用交互模式,捕获键盘输入
​
    -p <addr>
        设置代理,格式: ip:port:type,可以通过重复设置以配置多个代理。代理的类型支持(SOCKS4、SOCKS5、HTTP(默认值))
​
    -t N            设置并发连接数(默认 10)
    -s N            设置请求之间的延迟时间(秒,默认:0)
    -R depth        设置递归路径探测的最大深度(默认:0,不递归)
    -D depth        设置最大链接深度(默认 4)
    -L, --follow    跟随 HTTP 重定向
    -u url          指定目标 URL
    
    -z payload
        为 Fuzz 关键词指定载荷类型、参数和编码器(如 md5-sha1)编码器可以叠加使用(如 md5@sha1),或按类别选择(如 url)。用 help 作为载荷可以查看插件详情(配合 --slice 过滤)
​
    -w wordlist
        指定字典文件(等同于 -z file,wordlist)
​
    -V alltype
        全参数暴力破解(allvars 和 allpost),无需 FUZZ 关键词
​
    -X method
        指定 HTTP 方法(如 HEAD 或 FUZZ 动态替换)
​
    -b cookie
        指定请求的 Cookie
​
    -d postdata
        设置 POST 数据(如 id=FUZZ&catalogue=1)
​
    -H header
        设置 HTTP 请求头(如 Cookie:id=1312321&user=FUZZ)
​
    --basic/ntlm/digest auth
        设置认证信息,格式为 "user:pass" 或 "FUZZ:FUZZ" or "domain\FUZ2Z:FUZZ"
​
    --hc/hl/hw/hh N[,N]+
        隐藏指定状态码(code)、行数(lines)、字数(words)、字符数(chars)的响应(BBB 表示基线值)
​
    --sc/sl/sw/sh N[,N]+
        显示指定状态码、行数、字数、字符数的响应(BBB 表示基线值)
​
    --ss/hs regex
        显示/隐藏内容匹配正则表达式的响应

0x04:WFuzz 参考资料

WFuzz 拓展资料:

https://www.ddosi.org/wfuzz-guide/https://www.ddosi.org/wfuzz-guide/

WFUZZ使用教程-CSDN博客文章浏览阅读3w次,点赞30次,收藏148次。文章目录简介Wfuzz基本功爆破文件、目录遍历枚举参数值POST请求测试Cookie测试HTTP Headers测试测试HTTP请求方法(Method)使用代理认证递归测试并发和间隔保存测试结果Wfuzz高阶功法IteratorszipchainproductEncoders**使用多个Encoder:**Scripts使用Scripts自定义插件技巧网络异常超时结合BurpSuite过滤器字典..._wfuzz https://blog.csdn.net/JBlock/article/details/88619117

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue17 :: Hack3rX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值