工具
Metasploit Framework
Nmap
SQLMap
Dirb
Gobuster
Netcat
反弹shell
Hydra
wfuzz
wpscan
searchsploit
字典
arp-scan
hashcat
Netdiscover
Cobalt Strike
Goby
Nessus
Xray
Nuclei
-
+
首页
wfuzz
WFuzz 是一款强大的 **Web 应用模糊测试工具**,主要用于通过发送大量定制化请求(基于字典或自定义规则)来探测 Web 应用的潜在漏洞、隐藏资源(如目录、文件)、参数注入点、认证绕过等。 ## 用途 WFuzz 的核心是 “模糊测试(Fuzzing)”—— 通过构造大量变体请求,分析目标应用的响应差异,发现异常行为。主要用途包括: - 爆破隐藏目录 / 文件(如 `http://example.com/FUZZ`,FUZZ 为字典中的路径); - 测试 URL 参数漏洞(如 `http://example.com/page.php?id=FUZZ`,探测 SQL 注入、XSS 等); - 爆破表单字段(如用户名、密码、验证码等); - 探测 HTTP 方法(GET/POST/PUT 等)的支持情况; - 分析响应头、Cookie、会话等信息中的潜在问题。 ## 基本语法 命令格式: ```bash wfuzz [选项] -u <目标URL> -z <payload类型,字典路径> ``` ## 常用参数 > 基础参数 | 参数 | 作用说明 | 示例 | | -------------- | ------------------------------------------------------------ | ---------------------------------------- | | -u <URL> | 指定目标 URL,需包含 FUZZ 作为模糊测试的占位符(替换点) | wfuzz -u http://example.com/FUZZ | | -w <字典> | 指定字典文件(等价于 -z file,<字典>),是最常用的 payload 来源 | wfuzz -w /usr/share/wordlists/common.txt | | -z <类型,参数> | 定义 payload 类型(除文件外,还支持数字、字符串等) | -z range,1-100(数字范围 1-100) | | -c | 彩色输出结果(便于区分不同响应状态) | wfuzz -c -w dict.txt -u ... | > 输出控制参数 | 参数 | 作用说明 | 示例 | | ---------------- | --------------------------------------------------- | -------------------------------------- | | -f <文件> | 将结果保存到指定文件 | wfuzz -f result.txt -w dict.txt -u ... | | --verbosity \<n> | 调整输出详细程度(1-6,默认 3,数字越大信息越详细) | --verbosity 5 | | --no-follow | 不跟随 HTTP 重定向(默认会跟随) | --no-follow | | --show-fuzz | 显示每次请求中被替换的 FUZZ 内容(便于调试) | --show-fuzz | > 请求定制参数 | 参数 | 作用说明 | 示例 | | ---------------- | ------------------------------------------------------------ | ---------------------------------------------- | | -X <方法> | 指定 HTTP 请求方法(GET/POST/PUT/DELETE 等,默认 GET) | -X POST | | -d <数据> | 设置 POST 请求的数据(需配合 -X POST),用 FUZZ 或 W1/W2 作为占位符 | -d "username=FUZZ&password=123" | | -H <头信息> | 添加自定义 HTTP 请求头(可多次使用) | -H "User-Agent: Mozilla" -H "Cookie: sess=123" | | --cookie <值> | 单独设置 Cookie 头(等价于 -H "Cookie: <值>") | --cookie "session=abc123" | | --data-urlencode | 对 POST 数据进行 URL 编码(适用于表单提交) | --data-urlencode "username=FUZZ&pass=123" | > 结果过滤参数 用于排除无效响应,聚焦有价值结果(支持多个值用逗号分隔)。 | 参数 | 作用说明 | 示例 | | ------------- | ------------------------------------------------------------ | ---------------------------------------- | | --hc <码> | 过滤指定 HTTP 状态码的响应(如 404 表示排除 404 页面) | --hc 404,500(排除 404 和 500) | | --hl <行数> | 过滤响应行数等于指定值的结果(如页面固定返回 100 行,可排除) | --hl 100(排除行数为 100 的响应) | | --hw <字数> | 过滤响应字数等于指定值的结果 | --hw 2000(排除字数为 2000 的响应) | | --hh <大小> | 过滤响应大小(字节)等于指定值的结果 | --hh 5120(排除大小为 5120 字节的响应) | | --hs <字符串> | 过滤响应中包含指定字符串的结果 | --hs "Not Found"(排除含该字符串的响应) | | --ss <字符串> | 只保留响应中包含指定字符串的结果(与 --hs 相反) | --ss "Welcome"(只保留含该字符串的响应) | > 并发与性能参数 | 参数 | 作用说明 | 示例 | | ----------------- | ----------------------------------------------------------- | -------------------------- | | -t <数量> | 设置并发线程数(默认 10,过大可能触发目标防护,建议 10-50) | -t 20 | | --delay <秒> | 每个请求之间的延迟时间(单位秒,避免请求过于频繁) | --delay 0.5(延迟 0.5 秒) | | --conn-delay <秒> | 建立连接的超时时间(默认 90 秒) | --conn-delay 30 | > 其他功能参数 | 参数 | 作用说明 | 示例 | | --------------- | ------------------------------------------------------------ | -------------------------------------- | | --proxy <代理> | 通过代理服务器发送请求(如配合 Burp Suite 抓包) | --proxy` http://127.0.0.1:8080` | | --recursion | 递归扫描(发现目录后自动深入扫描,--recursion-depth 限制深度) | --recursion --recursion-depth 2 | | -p <代理链> | 设置代理链(多代理转发) | -p `http://proxy1:80,http://proxy2:80` | | --script <脚本> | 加载 WFuzz 脚本(扩展功能,如自定义响应处理) | --script=default.py | > 多payload组合参数 当需要同时模糊测试多个位置(如 URL 路径 + 参数值)时,用 W1、W2... 作为占位符,配合多个字典。 | 参数示例 | 作用说明 | | -------------------------------- | ------------------------------------------------------------ | | -w dict1.txt:W1 -w dict2.txt:W2 | 第一个字典对应 W1,第二个字典对应 W2,同时替换 URL 中的两个占位符 | | `http://example.com/W1?param=W2` | 示例 URL:同时爆破路径(W1)和参数值(W2) | ## 常用场景 > 测试URL参数 ```bash # 探测 ID 参数的潜在注入点(FUZZ 替换为参数值) wfuzz -c -w /usr/share/wfuzz/wordlists/injection/sql.txt http://example.com/page.php?id=FUZZ # 过滤无意义响应(如状态码 200 且响应长度固定的正常页面) wfuzz -c -w /usr/share/wfuzz/wordlists/injection/sql.txt --hc 200 --hl 500 http://example.com/page.php?id=FUZZ #FUZZ 替换为参数值,探测存在的参数 wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt http://website.com/secret.php?FUZZ=something #过滤掉404响应码 wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://website.com/secret.php?FUZZ=something ``` > 爆破隐藏的目录/文件 ```bash # 使用默认字典爆破目录(FUZZ 替换为目录名) wfuzz -c -w /usr/share/wfuzz/wordlists/general/common.txt http://example.com/FUZZ # 爆破特定后缀的文件(如 .php、.html) wfuzz -c -w /usr/share/wfuzz/wordlists/general/common.txt http://example.com/FUZZ.php ``` > 表单爆破 假设目标表单提交地址为 `http://example.com/login.php`,字段为 `username=admin&password=FUZZ` ```bash # 爆破密码(使用用户名字典和密码字典,用 & 分隔多个 FUZZ 占位符) wfuzz -c -w users.txt:W1 -w passwords.txt:W2 -X POST -d "username=W1&password=W2" http://example.com/login.php ``` - -X POST:指定请求方法为 POST; - -d:设置 POST 数据(W1 和 W2 分别对应两个字典的占位符)。
毛林
2025年10月9日 00:07
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码