WFUZZ模糊测试

WFUZZ模糊测试

使用指南

选项:
-h/--help                   :这个帮助
--help                      : 高级帮助
--filter-help               : 过滤语言规范
--version                   : Wfuzz 版本详细信息
-e <type>                   :可用编码器/有效负载/迭代器/打印机/脚本的列表

--recipe <文件名>            :从配方中读取选项。对各种食谱重复此操作。
--dump-recipe <filename>    :将当前选项打印为配方
--oF <文件名>                :将模糊结果保存到文件中。这些可以稍后使用 wfuzz 有效负载使用。

-c :带颜色的输出
-v:详细信息。
-f filename,printer         :使用指定的打印机(如果省略则为原始打印机)将结果存储在输出文件中。
-o Printer                  :使用指定打印机显示结果。
--interact                  :(测试版)如果选择,则捕获所有按键。这允许您与程序交互。
--dry-run                   :打印应用请求的结果,而不实际发出任何 HTTP 请求。
--prev                      :打印之前的 HTTP 请求(仅当使用有效负载生成模糊结果时)
--efield <expr>             :显示指定的语言表达式以及当前的有效负载。对各个字段重复此操作。
--field <expr>              :不显示负载,仅显示指定的语言表达式。对各个字段重复此操作。

-p addr                     :使用 ip:port:type 格式的代理。重复使用各种代理的选项。
                            

-t N                        :指定并发连接数(默认10)
-s N                        :指定请求之间的时间延迟(默认为 0)
-R 深度                      :递归路径发现的深度是最大递归级别。
-D 深度                      :最大链接深度级别。
-L,--follow                 : 遵循 HTTP 重定向
--ip host:port              : 以 ip:port 格式指定要连接的 IP,而不是 URL 的主机
-Z                          :扫描模式(连接错误将被忽略)。
--req-delay N               :设置允许请求持续的最长时间(以秒为单位)(CURLOPT_TIMEOUT)。默认 90。
--conn-delay N              :设置与服务器的连接阶段所花费的最长时间(以秒为单位)(CURLOPT_CONNECTTIMEOUT)。默认 90。

-A、--AA、--AAA              :分别为 -v -c 和 --script=default、verbose、discover 的别名
--no-cache                  :禁用插件缓存。每个请求都会被扫描。
--script=                   :相当于 --script=default
--script=<plugins>          :运行脚本的扫描。 <plugins> 是逗号分隔的插件文件或插件类别列表
--script-help=<plugins>     :显示有关脚本的帮助。
--script-args n1=v1,...     : 为脚本提供参数。 IE。 --script-args grep.regex="<A href=\"(.*?)\">"

-u url                      :指定请求的 URL。
-m iterator                 :指定用于组合有效负载的迭代器(默认产品)
-z有效负载                    :以名称[,参数] [,编码器]的形式为使用的每个FUZZ关键字指定有效负载。
                     
--zP <params>               :指定有效负载的参数(前面必须带有 -z 或 -w)。
--zD <default>              :指定负载的默认参数(前面必须带有 -z 或 -w)。
--zE <encoder>              :指定有效负载的编码器(前面必须带有 -z 或 -w)。
--slice <filter>            :使用指定表达式过滤有效负载的元素。它前面必须带有 -z。
-w wordlist                 :指定一个单词列表文件(-z file,wordlist 的别名)。
-V alltype                  :暴力破解所有参数(allvars 和 allpost)。不需要 FUZZ 关键字。
-X method                   : 指定请求的HTTP方法,即。头或毛茸茸的

-b cookie                   :为请求指定 cookie。对各种 cookie 重复选项。
-d postdata                 :使用发布数据(例如:“id=FUZZ&catalogue=1”)
-H header                   :使用标头(例如:“Cookie:id=1312321&user=FUZZ”)。各种标题的重复选项。
--basic/ntlm/digest auth    :格式为“user:pass”或“FUZZ:FUZZ”或“domain\FUZ2Z:FUZZ”

--hc/hl/hw/hh N[,N]+        :隐藏具有指定代码/行/单词/字符的响应(使用 BBB 从基线获取值)
--sc/sl/sw/sh N[,N]+        :显示具有指定代码/行/单词/字符的响应(使用 BBB 从基线获取值)
--ss/hs regex               :显示/隐藏内容中指定正则表达式的响应
--filter <filter>           :使用指定的过滤表达式显示/隐藏响应(使用 BBB 从基线获取值)
--prefilter <filter>        :使用指定表达式在模糊测试之前过滤项目。重复连接过滤器。

文件发现

打开kali,进行第一步配置环境变量

export URL="http://192.168.70.138/FUZZ"
echo $URL

image-20240928164709247

使用 -c 来显示颜色输出,使用 -z 来指定输入源,并使用 -hc 来避免不存在和错误的响应。

wfuzz -c -z file,/usr/share/wordlists/wfuzz/general/common.txt --hc 404,301,403 "$URL"

image-20240928165811496

目录发现

查找目录,需要使用尾部正斜杠来重新导入环境变量

image-20240928170054221

也要换个字典,这里没换

image-20240928170323109

参数发现

export URL="http://192.168.70.138/index.php?FUZZ=data"
echo $URL
wfuzz -c -z file,/home/fuzz-db/Web-Fuzzing-Box/Web/Parameters/Top100_Parameters.txt --hc 404,301,403 "$URL"

image-20240928174804260

尽管在这种情况下无法直接利用这些参数,但我们仍然了解了检查端点是否存在隐藏参数所需的过程,这些参数可能已被遗漏,不用于最终用户交互,或用于数据处理目的。

参数值发现

export URL="http://192.168.70.138:80/index.php?url=FUZZ"
echo $URL
wfuzz -c -z file,/home/fuzz-db/Web-Fuzzing-Box/Web/Parameters/Top100_Parameters.txt --hc 404,301,403 "$URL"

image-20240928175324797

POST参数值发现

image-20240928180209793

另外,hh 参数可以抑制指定字节的响应大小值

注意:其中-d的值是通过burp抓包得来的

命令技巧

查询指定文件路径(可以用于查找指定字典的绝对路径)

realpath <filename>

注意:可以用tab键来补全命令

posted @ 2024-09-28 18:07  SchneiderGrace  阅读(124)  评论(0)    收藏  举报