Web应用安全扫描工具——Wfuzz
看着博客敲代码 2024-10-04 10:03:02 阅读 75
Web应用安全扫描工具——Wfuzz
简介
Wfuzz 是一个开源的 Web 应用程序模糊测试工具。它主要用于发现 Web 应用程序中的各种漏洞和隐藏资源。通过向目标发送大量不同的请求,识别出潜在的安全问题,如目录和文件暴露、参数注入、文件上传、认证绕过等。
安装
• pip 安装:使用 Python 包管理器 pip 快速安装 Wfuzz。
• Kali Linux 内置:Wfuzz 预装在 Kali Linux 操作系统中,无需额外安装步骤。
•基于Debian的系统(如Ubuntu)中安装 Wfuzz
<code>sudo apt update
sudo apt install wfuzz
基本用法
-u 或 --url:指定目标URL。
-w 或 --wordlist:指定词典文件,用于模糊测试。
-H 或 --header:添加HTTP请求头。
-d 或 --data:指定POST请求的数据。
-b 或 --cookie:指定Cookie。
-z 或 --fzr:指定模糊因子,如文件字典、字符集、大小等。
示例:
使用Wfuzz对 xxx.com 进行模糊测试的示例
示例1:目录和文件发现 从基本的目录和文件发现开始。
准备一个目录字典 wordlist.txt,内容如下:
admin
login
test
index.html
可以使用以下命令来进行测试:
wfuzz -c -w wordlist.txt -u http://xxx.com/FUZZ
-c:表示彩色输出。
-w wordlist.txt:指定使用 wordlist.txt 作为词典。
-u http://xxx.com/FUZZ:FUZZ 是一个占位符,Wfuzz 会用词典中的所有词替换它并发送请求。
示例2:POST请求模糊测试
测试一个登录表单的SQL注入漏洞,表单的URL是 http://xxx.com/login,表单参数是 username 和 password。准备一个字典 payloads.txt,包含一些常见的SQL注入payload。
可以使用以下命令来进行测试:
wfuzz -c -w payloads.txt -d "username=admin&password=FUZZ" -u http://xxx.com/login
-d “username=admin&password=FUZZ”:指定POST数据,FUZZ 是一个占位符,Wfuzz 会用词典中的所有词替换它并发送请求。
示例3:Cookie注入测试 测试一个需要特定Cookie的页面,可以使用以下命令:
wfuzz -c -w payloads.txt -b "SESSIONID=FUZZ" -u http://xxx.com/dashboard
-b “SESSIONID=FUZZ”:指定Cookie数据,FUZZ 是一个占位符,Wfuzz 会用词典中的所有词替换它并发送请求。
示例4:使用HTTP头进行测试 需要在请求中添加一个自定义HTTP头,可以使用-H选项:
wfuzz -c -w wordlist.txt -H "User-Agent: Mozilla/5.0" -u http://xxx.com/FUZZ
-H “User-Agent: Mozilla/5.0”:添加自定义HTTP请求头。
示例5:子域名发现 通过模糊测试发现目标网站的子域名。
词典 subdomains.txt 包含以下内容:
www
mail
admin
dev
可以使用以下命令来测试:
wfuzz -c -w subdomains.txt -u http://FUZZ.xxx.com
http://FUZZ.xxx.com:FUZZ 是占位符,Wfuzz 会用词典中的所有词替换它并发送请求。
示例6:暴力破解Basic认证 暴力破解一个使用HTTP基本认证保护的页面。
准备用户名词典 usernames.txt 和密码词典 passwords.txt 分别包含用户名和密码列表。使用以下命令:
wfuzz -c -w usernames.txt -z file,passwords.txt -u http://xxx.com/protected --basic FUZZ:PASS
-z file,passwords.txt:指定第二个模糊因子,即密码词典。
–basic FUZZ:PASS:表示使用基本认证,FUZZ 和 PASS 分别替换为用户名和密码词典中的值。
示例7:参数模糊测试 测试一个带有GET参数的页面,看看是否存在潜在的参数注入漏洞。
页面URL是 http://xxx.com/search?q=searchterm。可以试试一些常见的SQL注入payload:
准备字典 sql_payloads.txt 包含以下内容:
' OR 1=1 --
' UNION SELECT null,null --
' AND 1=1 --
可以使用以下命令:
wfuzz -c -w sql_payloads.txt -u "http://xxx.com/search?q=FUZZ"
http://xxx.com/search?q=FUZZ:FUZZ 是占位符,Wfuzz 会用词典中的所有词替换它并发送请求。
示例8:多参数模糊测试 测试一个带有多个参数的URL,测试每个参数的模糊注入。
URL是 http://xxx.com/search?param1=value1¶m2=value2。
可以使用以下命令:
wfuzz -c -w payloads.txt -u "http://xxx.com/search?param1=FUZZ¶m2=value2"
wfuzz -c -w payloads.txt -u "http://xxx.com/search?param1=value1¶m2=FUZZ"
分别对 param1 和 param2 进行模糊测试。
示例9:文件上传测试 测试文件上传功能
假设文件上传URL是 http://xxx.com/upload,需要一个名为 file 的文件参数。我们使用一个包含不同文件路径的词典 files.txt。
wfuzz -c -w files.txt --hc 200 -u http://xxx.com/upload -d "file=@FUZZ"
–hc 200:隐藏状态码为200的响应,只有错误响应会显示。
file=@FUZZ:@FUZZ 表示文件上传,Wfuzz 会用词典中的文件路径替换 FUZZ。
示例10:HTTP方法测试 测试不同的HTTP方法(如GET、POST、PUT、DELETE)对同一URL的响应。
可以使用以下命令:
wfuzz -c -z list,GET-POST-PUT-DELETE -u http://xxx.com/resource -X FUZZ
-z list,GET-POST-PUT-DELETE:使用静态列表作为模糊因子,包括GET、POST、PUT、DELETE四种HTTP方法。
-X FUZZ:用词典中的值替换HTTP方法。
示例11:测试带有特定响应内容的请求 ,找出返回特定内容的请求,例如包含 “Welcome” 的响应。
可以使用以下命令
wfuzz -c -w wordlist.txt -u http://xxx.com/FUZZ --hc 404 --hl 0 --hh "Welcome"
–hc 404:隐藏状态码为404的响应。
–hl 0:隐藏响应内容长度为0的响应。
–hh “Welcome”:显示包含"Welcome"字符串的响应。
示例12:并发测试 为了加快测试速度,可以使用多线程并发测试:
wfuzz -c -w wordlist.txt -u http://xxx.com/FUZZ -t 10
-t 10:使用10个线程进行并发请求。
结果分析
在执行完命令后,Wfuzz 会返回每个请求的响应状态码和长度,可以根据这些信息来判断哪些请求可能是成功的或是触发了某些潜在的漏洞。
比如:
000000001: 200 54 L 123 W 456 Ch "index.html"
000000002: 404 12 L 56 W 78 Ch "admin"
这里 200 表示成功响应,404 表示未找到,L 表示响应内容长度,W 表示响应的单词数,Ch 表示响应的字符数。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。