Wfuzz 全面使用指南:Web 应用模糊测试工具详解

Wfuzz 全面使用指南:Web 应用模糊测试工具详解

Wfuzz 是一款功能强大的开源 Web 应用模糊测试(Fuzzing)工具,主要用于自动化发现 Web 应用中的隐藏资源、注入漏洞、目录遍历等问题。它由 Python 编写,支持多种 payload(有效载荷)注入方式,能够对 HTTP 请求的各个部分进行暴力破解或模糊测试,包括 URL 路径、GET/POST 参数、Cookie、HTTP 头、认证信息等。Wfuzz 的设计理念是模块化和可扩展性强,适合渗透测试人员、安全研究员和开发人员用于 Web 安全评估。

Wfuzz 的核心机制是通过在目标 URL 或请求中用特殊的占位符(如 FUZZFUZ2Z 等)标记需要模糊测试的位置,然后用指定的 payload 列表逐一替换这些占位符,发送 HTTP 请求,并根据响应(如状态码、响应长度、内容关键字等)来过滤和展示结果。这使得它在发现隐藏目录、备份文件、参数注入点等方面非常高效。

Wfuzz 的主要特点

Wfuzz 的优势在于其灵活性和扩展性,主要特点包括:

  1. 多位置模糊测试:支持对 URL 路径、查询参数、POST 数据、Cookie、自定义 Header、HTTP 方法(Verb)等进行 fuzzing。
  2. 丰富的 Payload 支持:内置多种 payload 类型,如文件词典、数字范围、列表等,还支持自定义和外部工具生成。
  3. 强大的过滤和输出控制:根据响应码、响应行数、单词数、字符数、内容匹配等进行过滤,支持隐藏或高亮特定结果。
  4. 迭代器和编码器:支持多个 payload 的组合(笛卡尔积、zip 等),以及多种编码方式(MD5、URL 编码等)。
  5. 递归和性能优化:支持递归 fuzzing 发现的路径,多线程加速,延迟控制等。
  6. 代理和认证支持:兼容 HTTP/SOCKS 代理,Basic、NTLM 等认证。
  7. 脚本和插件系统:可扩展脚本用于被动/主动扫描,发现如 robots.txt 中的路径等。
  8. 输出格式多样:支持 JSON、HTML 等格式保存结果,便于后续分析。
  9. Python 库模式:可作为库在脚本中调用,实现自动化测试。
  10. 辅助工具:如 wfpayload(生成 payload)、wfencode(编码/解码)。

Wfuzz 常用于目录爆破、参数 fuzzing、暴力登录、漏洞验证等场景,与 Burp Suite、DirBuster 等工具互补。

安装和入门

Wfuzz 的安装相对简单,通常通过 pip 安装:

pip install wfuzz 

它依赖 pycurl 等库,在某些系统(如 MacOS 或 Windows)上可能需要额外处理 SSL 或 pycurl 问题。官方文档提供了针对这些平台的 troubleshooting 指南。

Wfuzz 自带词典目录(wordlist/),包含 common.txt、big.txt 等常用词典。运行后,可通过 wfuzz -h 查看帮助。

此外,支持 Docker 运行:

docker run -v $(pwd)/wordlist:/wordlist/ -it ghcr.io/xmendez/wfuzz wfuzz 

这避免了本地安装问题。

入门示例:最简单的目录爆破:

wfuzz -w wordlist/general/common.txt --hc 404 http://example.com/FUZZ 

这里 -w 指定词典,--hc 404 隐藏 404 响应(常见于不存在的路径),FUZZ 是 payload 注入点。

输出会显示响应码、行数(lines)、单词数(words)、字符数(chars)等,便于快速识别异常响应(如 200 或 403)。

基本用法详解

Wfuzz 的基本命令格式:

wfuzz [options]<target_url_with_FUZZ>
1. Payload 的指定

Payload 通过 -z--zP 指定,常见类型:

list:手动列表,用 - 分隔。

wfuzz -z list,admin-login-backup http://example.com/FUZZ/ 

range:数字范围。

wfuzz -z range,1-100 http://example.com/page?id=FUZZ 

file:从文件加载词典。

wfuzz -z file,wordlist/general/common.txt http://example.com/FUZZ 

多个 payload 时,使用 FUZZFUZ2ZFUZ3Z 等区分。

2. 模糊测试不同位置

HTTP 方法:用 -X

wfuzz -z list,GET-POST-PUT-DELETE -X FUZZ http://example.com/resource 

自定义 Header:用 -H

wfuzz -z list,Mozilla-Chrome -H "User-Agent: FUZZ" http://example.com/ 

Cookie:用 -b

wfuzz -z file,sessions.txt -b "SESSIONID=FUZZ" http://example.com/admin 

POST 数据:用 -d 指定 POST body。

wfuzz -z file,passwords.txt -d "username=admin&password=FUZZ" --hc 302 http://example.com/login.php 

同时 fuzz 多个字段:

wfuzz -z file,users.txt -z file,passwords.txt -d "uname=FUZZ&pass=FUZ2Z" http://example.com/login 

GET 参数

wfuzz -z range,0-100 --hl 200 http://example.com/list.php?cat=FUZZ 

--hl 高亮特定响应。

路径和文件

wfuzz -w common.txt http://example.com/FUZZ.php # 爆破 .php 文件
3. 代理和认证

认证:

wfuzz --basic user:pass http://example.com/FUZZ wfuzz -z list,user1-user2 --basic FUZZ:password ... 

代理:

wfuzz -p 127.0.0.1:8080 http://example.com/FUZZ # HTTP 代理 wfuzz -p 127.0.0.1:1080:SOCKS5 ... # SOCKS
4. 递归 fuzzing

发现路径后自动深入:

wfuzz -z list,admin-backup -R 2 http://example.com/FUZZ/ # 递归深度 2
5. 性能和输出控制
  • 线程:-t 20(默认 10)。
  • 延迟:-s 1(秒)。
  • 输出到文件:-f results.json,json
  • 自定义显示:--efield url,h 显示 URL 和 headers。

列出可用输出格式:wfuzz -e printers

高级用法

Wfuzz 的高级功能使其从简单爆破工具变为强大框架。

1. 迭代器(Iterators)

结合多个 payload,用 -m 指定模式(默认 product,即笛卡尔积)。

chain:顺序连接。

wfuzz -m chain ... # a,b,c,1,2,3

zip:对应位置组合。

wfuzz -m zip -z list,a-b-c -z list,1-2-3 http://example.com/FUZZ/FUZ2Z # a1, b2, c3

product:所有组合。

wfuzz -z list,a-b -z list,1-2 http://example.com/FUZZ/FUZ2Z # a1,a2,b1,b2
2. 编码器(Encoders)

对 payload 进行编码转换,用 -z ... ,encoder--zE

列出编码器:wfuzz -e encoders(包括 md5、sha1、urlencode、base64、hex 等)。

示例:

wfuzz -z file,wordlist.txt,md5 http://example.com/?hash=FUZZ 

多编码链:

wfuzz -z list,test,md5@urlencode 

类别编码:hashes(所有哈希)。

3. 过滤器(Filters)

Wfuzz 的过滤语言非常强大,支持表达式过滤响应。

字段包括:c(code)、l(lines)、w(words)、h(chars)、content(内容)等。

语法:

--hc 404# 隐藏 404(简写) --hl 200# 高亮 200 --hs "error"# 隐藏含 "error" 的响应

复杂过滤:

wfuzz --filter "c!=404 and l>100 and content~'success'"

支持 and/or/not、比较运算符、正则 =~

预过滤(prefilter):在发送前过滤 payload。

切片(slice):修改 payload,如 --slice "FUZZ.upper()"

4. 脚本和插件

Wfuzz 支持插件脚本,用于扩展功能,如解析 robots.txt、发现备份文件等。

列出脚本:wfuzz -e scripts

使用:

wfuzz --script=robots -z file,common.txt http://example.com/FUZZ 

脚本类别:passive(被动)、active(主动)、discovery(发现)。

自定义脚本放在 ~/.wfuzz/scripts/。

5. 重用结果和基线请求

FUZZ{baseline} 进行基线比较,过滤差异。

重用保存的会话:通过 wfpayload 或 -f 加载。

6. 作为 Python 库使用
from wfuzz import fuzz for r in fuzz(url="http://example.com/FUZZ", hc=[404], payloads=[("file",dict(fn="common.txt"))]):print(r)

适合集成到自定义工具中。

实际应用场景和技巧

  1. 目录和文件发现:结合大词典(如 SecLists)和 --hc 404,快速扫描隐藏路径。
  2. 参数注入测试:fuzz ID 参数查找 IDOR,或注入 XSS payload。
  3. 暴力登录:POST fuzz 用户名/密码,过滤登录成功响应(如 --hs “invalid”)。
  4. API 测试:fuzz JSON POST 数据,结合编码器处理 token。
  5. 结合外部工具:输出 JSON 后用 jq 处理,或管道到其他工具。

总结

Wfuzz 作为一款经典的 Web fuzzing 工具,以其简单却强大的功能在安全社区中广受欢迎。从基本目录爆破到高级多 payload 组合、编码、过滤和脚本扩展,它提供了完整的 Web 安全测试链条。掌握 Wfuzz 需要实践多场景示例,结合官方词典和自定义 payload,能显著提升渗透测试效率。

本文基于 Wfuzz 官方文档(https://wfuzz.readthedocs.io/en/latest/)撰写,涵盖了从安装到高级功能的绝大部分内容。实际使用中,建议多运行 wfuzz -e <encoders|printers|scripts|iterators> 来探索可用选项。

Read more

【论文阅读】Vision-skeleton dual-modality framework for generalizable assessment of Parkinson’s disease ga

【论文阅读】Vision-skeleton dual-modality framework for generalizable assessment of Parkinson’s disease ga

论文题目:《Vision-skeleton dual-modality framework for generalizable assessment of Parkinson’s disease gait》 论文链接:https://doi.org/10.1016/j.media.2025.103727  代码链接:https://github.com/FJNU-LWP/PD-gait-VSDF 视觉-骨架双模态框架:通过视频实现帕金森病步态的泛化评估 研究背景介绍 帕金森病评估与帕金森病评分量表(MDS-UPDRS) 帕金森病步态评估 研究内容 总体方法流程 关键点视觉 Transformer (KVT) 图像块嵌入 (Patches embedding) 位置与连接嵌入 (Positions and connections embedding) 关键点自注意力 (Keypoints Self-Attention,

web3.0 开发实践

web3.0 开发实践

优质博文:IT-BLOG-CN 一、简介 Web3.0也称为去中心化网络,是对互联网未来演进的一种概念性描述。它代表着对现有互联网的下一代版本的设想和期望。Web3.0的目标是通过整合区块链技术、分布式系统和加密技术等新兴技术,构建一个更加去中心化、安全、隐私保护和用户的互联网。 Web 3.0具备四项主要功能 【1】去中心化: 去中心化的Web应用程序是Web 3.0的关键功能。其目的是在去中心化网络中分发和存储数据。在这些网络中,不同的实体拥有底层基础设施,用户直接向存储提供商付费以访问该空间。 去中心化的应用程序还将信息副本存储在多个位置,并确保整个过程中的数据一致性。每位用户可以控制其数据存放的位置,而不必将其移交给集中式基础设施。去中心化的互联网用户可根据需要出售自己的数据。 【2】去信任性: 在集中式Web应用程序和服务中,用户通常需要信任中央权威机构来管理其数据、交易和交互。这些中央权威机构可以控制用户数据,并且可以操纵系统的规则。数据可能存在安全风险或管理不善,从而导致用户信息丢失或滥用。 相比之下,Web3引入去信任性,因此用户可以在无需信任任何特定方

机器人与互联网软件测试对比

通过表格清晰对比扫地机器人与互联网公司软件测试的各项核心维度,再分别阐述二者测试的背景、原因,最后总结二者的测试差异与共性,具体内容如下: 扫地机器人与互联网公司软件测试对比图 对比维度扫地机器人软件测试互联网公司软件测试测试背景智能家居市场快速扩张,产品质量直接决定用户体验与品牌口碑,其软件需联动传感器、电机等硬件,还要适配复杂家居场景,需通过测试保障多组件协同稳定运行互联网产品以敏捷开发为核心,迭代频繁(日均迭代常见),面向海量在线用户,系统多为分布式架构,需通过测试避免高并发、频繁迭代引发的系统崩溃、数据泄露等问题测试原因1. 软件缺陷可能导致清洁漏扫、碰撞家具、无法回充等问题,严重影响使用;2. 传感器、电池等硬件与软件协同易出现兼容性问题;3. 家居环境多样性易暴露软件适配漏洞,需提前排查以降低售后成本1. 高频迭代易引发代码变更冲突,导致原有功能异常;2. 高并发场景下系统易出现响应延迟、宕机等问题,影响用户留存;3. 用户数据安全与隐私保护需求高,需防范黑客攻击、数据泄露等风险测试方法1. 场景化实测:模拟不同家居布局、地面材质、障碍物类型测试;2. 自动化测试:

1200PLC与爱普生机器人modbus_TCP通讯

1200PLC与爱普生机器人modbus_TCP通讯

1.前言 首先申明一下我的硬件信息 机器人:C4-A601S 控制器:RC700 PLC:西门子S7-1200(CPU:1217C/DC/DC/DC) 2.控制器IP地址查看及修改 在配置控制器相关信息时需要先用网线连接PC与机器人控制器连接,爱普生机器人出厂设定网址为192.168.0.1(我这里是之前修改过了) 若默认没有显示以太网连接,点击右侧的增加,选择“通过以太网连接到控制器”后点击确定 如果控制器网址被修改过了,不知道是多少,可以用一根PC线,一头接在控制器的“开发用PC连接专用USB端口”另一头接在电脑USB口 这时候再在通讯处选择USB连接就可以通上了 现在就可以在“系统配置”处看到控制器的IP地址以及相关信息了,如果有需要也可以直接在这修改IP地址。 3.机器人控制器配置 网线连接好后开始配置通讯相关信息 1.控制设备 控制设备修改为远程I/O 2.现场总线 现场总线类型修改为“Modbus TCP”