wfuzz网站模糊测试

一、wfuzz介绍

WFuzz是基于Python开发的 Web安全模糊测试工具。可以将其理解为Fuzz一款暴力破解工具。根据用户提供的字典,获取web站点的敏感目录和信息。
Wfuzz 提供了一个框架来自动化 Web 应用程序安全评估,并可以帮助您通过查找和利用 Web 应用程序漏洞来保护 Web 应用程序。
kali默认安装。
工作原理:
基于一个简单的概念:它将对 FUZZ 关键字的任何引用替换为给定有效负载的值(数据源)。
这个简单的概念 允许将任何输入注入HTTP请求的任何字段中,允许在不同的Web应用程序组件中执行复杂的Web安全攻击,例如:参数,身份验证,表单,目录/文件,标头等。
   
Wfuzz不仅仅是一个网页内容扫描器:
  • Wfuzz 可以通过查找和利用 Web 应用程序漏洞来帮助您保护 Web 应用程序。插件支持Wfuzz的Web应用程序漏洞扫描程序。
  • Wfuzz是一个完全 模块化的框架,即使是最新的Python开发人员也可以轻松做出贡献。构建插件很简单,只需几分钟。
  • Wfuzz 向之前使用 Wfuzz 或其他工具(如 Burp)执行的 HTTP 请求/响应公开了一个简单的语言界面。这允许您在完整的上下文和对操作的理解下 执行手动和半自动测试,而无需依赖 Web 应用程序扫描程序底层实现。
它的创建是为了促进Web应用程序评估中的任务,它是渗透测试人员为渗透测试人员提供的工具;
测试的漏洞类型主要包括:未授权访问、注入漏洞(目录遍历、SQL 注入、XSS、XXE)、暴力破解登录口令 等

二、安装

$ pip3 install wfuzz
或者
git clone git://github.com/xmendez/wfuzz.git && python setup.py install
或者
$ docker run -v $(pwd)/wordlist:/wordlist/ -it ghcr.io/xmendez/wfuzz wfuzz
kali上自带wfuzz
包路径:/usr/lib/python3/dist-packages/wfuzz (pip3 show wfuzz得到)
字典路径:/usr/share/wfuzz/wordlist/*

三、用法

用法:wfuzz [options] -z payload,params <url>
Options:
  • -h:帮助
  • --help:高级帮助
  • --version:Wfuzz版本详细信息使用
  • -e <type>:列出可用的encoders/payloads/iterators/printers/scripts。wfuzz -e <<category>> 开关检查可用的模块
  • -c:带颜色的输出
  • -v:详细信息
  • --interact:(beta)如果选中,则捕获所有按键。这允许您与程序交互。
  • -p addr:使用ip:port:type格式的代理。重复使用各种代理的选项。如果省略,类型可以是SOCKS4、SOCKS5或HTTP。多个-p参数同时使用多个代理:-p localhost:2222:SOCKS5 -p localhost:8080
  • -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使用帮助作为有效负载来显示有效负载插件的详细信息(您可以使用--slice进行过滤)wfuzz -z help查看支持哪些payload
  • -w wordlist:指定wordlist文件(等同于-z file,wordlist)。
  • -V alltype:所有参数brutforming(allvars和allpost)。不需要FUZZ关键字。
  • -X method:指定请求的HTTP方法,即HEAD或FUZZ
  • -b cookie:为请求指定cookie
  • -d postdata:使用postdata(例如:“id=FUZZ&catalog=1”)
  • -H header:使用头(例如:“Cookie:id=1312321&user=FUZZ”)
  • --basic/ntlm/digest auth:格式为"user:pass"或"FUZZ:FUZZ"或 "domain\FUZ2Z:FUZZ"。wfuzz -z list,"username-password" --basic FUZZ:FUZZ URL
  • --hc/hl/hw/hh N[,N]+:隐藏具有指定代码/行/字/字符的响应(使用BBB从基线获取值)
  • --sc/sl/sw/sh N[,N]+:显示具有指定代码/行/字/字符的响应(使用BBB获取基线值)
  • --ss/hs regex:显示/隐藏内容中具有指定正则表达式的响应
Examples:
wfuzz -c -z file,users.txt -z file,pass.txt --sc 200  http://www.site.com/log.asp?user=FUZZ&pass=FUZZ
wfuzz -c -z range,1-10 --hc=BBB http://www.site.com/FUZZ{something not there}
wfuzz --script=robots -z list,robots.txt http://www.webscantest.com/FUZZ
wfuzz本身自带字典:
┌──(root㉿kali)-[/usr/share/wfuzz/wordlist]
└─# tree                    
.
├── general
│   ├── admin-panels.txt
│   ├── big.txt
│   ├── catala.txt
│   ├── common.txt
│   ├── euskera.txt
│   ├── extensions_common.txt
│   ├── http_methods.txt
│   ├── medium.txt
│   ├── megabeast.txt
│   ├── mutations_common.txt
│   ├── spanish.txt
│   └── test.txt
├── Injections
│   ├── All_attack.txt
│   ├── bad_chars.txt
│   ├── SQL.txt
│   ├── Traversal.txt
│   ├── XML.txt
│   └── XSS.txt
├── others
│   ├── common_pass.txt
│   └── names.txt
├── stress
│   ├── alphanum_case_extra.txt
│   ├── alphanum_case.txt
│   ├── char.txt
│   ├── doble_uri_hex.txt
│   ├── test_ext.txt
│   └── uri_hex.txt
├── vulns
│   ├── apache.txt
│   ├── cgis.txt
│   ├── coldfusion.txt
│   ├── dirTraversal-nix.txt
│   ├── dirTraversal.txt
│   ├── dirTraversal-win.txt
│   ├── domino.txt
│   ├── fatwire_pagenames.txt
│   ├── fatwire.txt
│   ├── frontpage.txt
│   ├── iis.txt
│   ├── iplanet.txt
│   ├── jrun.txt
│   ├── netware.txt
│   ├── oracle9i.txt
│   ├── sharepoint.txt
│   ├── sql_inj.txt
│   ├── sunas.txt
│   ├── tests.txt
│   ├── tomcat.txt
│   ├── vignette.txt
│   ├── weblogic.txt
│   └── websphere.txt
└── webservices
    ├── ws-dirs.txt
    └── ws-files.txt
6 directories, 51 files
wfuzz框架中包含的其他工具:
Wfuzz有效载荷生成器:$ wfpayload -z range,0-10
模糊编码器/解码器:$ wfencode -e md5 test

四、使用

如上命令使用-w参数指定字典位置,然后跟上一个要测试的地址,所列的例子中有一个FUZZ单词,这个单词可以理解是一个占位符,这样就大概了解了wfuzz的基本运行原理。
  
# 使用文件有效负载别名时的简短方法:
$ wfuzz -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
# 使用外部单词列表生成器时可以使用 stdin 有效负载:
crunch 2 2 ab | wfuzz -z stdin http://testphp.vulnweb.com/FUZZ
# 多个有效负载
wfuzz -w wordlist/general/common.txt -w wordlist/general/common.txt -w wordlist/general/extensions_common.txt --hc 404 http://testphp.vulnweb.com/FUZZ/FUZ2ZFUZ3Z
# 显示响应 –sc, –sl, –sw, –sh
wfuzz -w wordlist/general/common.txt --sc 404,403 http://testphp.vulnweb.com/FUZZ
# 隐藏响应 –hc, –hl, –hw, –hh
wfuzz -w wordlist/general/common.txt --hc 404,403 --hh 8972  http://datalayer.io/FUZZ
# 使用基线  前面使用 –hh 开关过滤“未找到”资源的命令可以使用以下命令完成:
wfuzz -w wordlist/general/common.txt --hh BBB  http://datalayer.io/FUZZ{notthere}
# 正则表达式过滤  参数 “–ss” 和 “–hs” 允许使用正则表达式针对返回的内容过滤响应
wfuzz -H "User-Agent: () { :;}; echo; echo vulnerable" --ss vulnerable -w wordlist/vulns/cgis.txt http://localhost:8000/FUZZ   # 允许查找易受“shellshock”攻击的Web服务器

五、dvwa环境演示

5.1、Wfuzz爆破文件

在测试时最常用了,可以得到站点的管理地址,或者其他文件等等
​wfuzz -c -w /root/桌面/file.txt -u http://192.168.11.45/FUZZ.php  -b "PHPSESSID=v987sdefja03nhp0i9il4te3c7; security=low"
从左往右看,依次是 编号、响应状态码、响应报文行数、响应报文单词数、响应报文字符数、测试使用的Payload
在上述测试中,响应为404的则意味着不存在该文件,200则存在该文件。

5.2、Wfuzz爆破目录

​wfuzz -c -w /root/桌面/dir.txt -u http://192.168.11.45/vulnerabilities/FUZZ  -b "PHPSESSID=v987sdefja03nhp0i9il4te3c7; security=low"

5.3、针对登录功能的暴力破解

随便输入账号密码 admin/password 来抓取数据包看看:
看请求是通过 GET 请求将用户名和密码作为参数进行验证,由于访问 DVWA 的漏洞页面需要认证,所以需要指定 Cookie,然后尝试使用下面的命令对密码进行 FUZZ:
​wfuzz -c -w /usr/share/wfuzz/wordlist/general/medium.txt -u "http://192.168.11.45/vulnerabilities/brute/?username=admin&password=FUZZ&Login=Login" -b "PHPSESSID=b6kqi0cagcn636r6u4o5hg4v73; security=low"
结果:
从图中可以看到第一行,密码为 password 时,Word 和 Chars 与其他不一样,说明,这个密码可能是正确的,然后用这个密码去测试即可。

5.4、针对参数进行SQL注入检测

针对参数中的id进行Fuzz,命令如下:
结果中有一些 payload 获得的返回包不太一样,可以猜测其存在安全风险,其实 Fuzz 的过程就是触发异常,然后针对异常进行深入测试。

六、python使用wfuzz

  • 23
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值