wfuzz网站模糊测试

https://github.com/xmendez/wfuzz
Wfuzz: The Web fuzzer — Wfuzz 2.1.4 documentatio n

一、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

四、使用

wfuzz -w 字典 http://testphp.vulnweb.com/FUZZ
如上命令使用-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

Python 库 — Wfuzz 2.1.4 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/427891.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的this和super

①this 在Java中&#xff0c;this关键字代表当前对象的引用。它可以用于以下几个方面&#xff1a; 引用当前对象的成员变量&#xff1a;使用this关键字可以引用当前对象的成员变量&#xff0c;以区分成员变量和方法参数或局部变量之间的命名冲突。例如&#xff0c;如果一个方法…

flv怎么转换成mp4格式?

flv怎么转换成mp4格式&#xff1f;视频格式转换是一件习以为常的操作&#xff0c;将flv格式转成mp4可以解决的事情非常多。MP4是一种通用的视频格式&#xff0c;几乎所有设备和平台都支持MP4格式。因此&#xff0c;将FLV格式转换为MP4格式可以增强视频的兼容性&#xff0c;使其…

idea创建公用依赖包项目

创建parent项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…

c++:类和对象(2),对象的初始化和清理

目录 构造函数和析构函数 构造函数语法&#xff1a;类名&#xff08;&#xff09;{} 析构函数语法: ~类名 () {} 例子&#xff1a; 构造函数的分类及调用 两种分类的方式&#xff1a; 三种调用方法&#xff1a; 括号法​编辑 显示法 隐式转换法 拷贝构造函数调用时…

【前端web入门第一天】01 开发环境、HTML基本语法文本标签

文章目录: 1. 准备开发环境 1.1 vs Code基本使用 2.HTML文本标签 2.1 标签语法2.2 HTML基本骨架2.3 标签的关系2.4 注释2.5 标题标签2.6 段落标签2.7 换行与水平线标签2.8 文本格式化标签 1. 准备开发环境 VSCode与谷歌浏览器离线版,安装包评论区自提. VSCode默认安装位置:C…

离线编译 onnxruntime-with-tensortRT

记录为centos7的4090开发机离线编译onnxruntime的过程&#xff0c;因为在离线的环境&#xff0c;所以踩了很多坑。 https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html 这里根据官网的推荐安装1.15 版本的onnx 因为离线环境&#xff0c;所以很…

微信小程序如何做到高效引流?-数灵通

随着微信小程序制作门槛的降低&#xff0c;大量的小程序如雨后春笋般涌现&#xff0c;其中小程序商城类型尤为众多。然而&#xff0c;由于微信自身的流量有限&#xff0c;对于大多数小程序商城而言&#xff0c;获取足够的流量成为了一大挑战。 针对这一问题&#xff0c;我们可以…

【Python编程工具】【ssh连接Docker容器】如何使用Docker容器里的python环境,如何调试在容器中的代码

文章目录 方案一览Gateway软件介绍启动容器配置apt源在容器中安装SSH服务器配置SSH服务器生成SSH密钥启动SSH服务为root创建密码连接到容器使用Gateway 方案一览 本篇博客将介绍如何在Docker容器中打开SSH连接服务&#xff0c;以及如何使用JetBrains Gateway软件进行代码调试。…

C++ | 六、栈 Stack、队列 Queue

栈的基础知识 栈&#xff08;stack&#xff09;是一种数据结构&#xff0c;在C中属于STL&#xff08;标准库&#xff09;特点&#xff1a;先进后出 栈的使用&#xff1a; 一、引入头文件<stack>二、创建栈变量&#xff08;类似容器、集合的创建方式&#xff09;&#xf…

GNSS模块引领共享出行新纪元:创新微公司的技术创新之路

共享出行服务正在成为城市交通中不可或缺的一环&#xff0c;而全球导航卫星系统&#xff08;GNSS&#xff09;模块的应用为这一领域注入了新的活力。创新微公司通过其先进的GNSS技术&#xff0c;为共享出行服务提供了更智能、高效的解决方案。本文将探讨创新微公司的GNSS模块在…

java(渣哇)------输入与输出语句(详解) (๑•̌.•๑)

目录 一.java的输出语句&#xff1a; System.out.println() -----输出并换行 System.out.print() -----输出但不换行 System.out.printf() -----类似C语言的printf()输出语句,按格式进行输出 二.java的输入语句&#xff1a; 2.1-----Scanner的基础用法&#xff1a; 2.2…

bash 5.2中文修订4

Compound Commands 复合命令 复合命令是 shell 编程语言的结构。每个构造都以保留字或控制运算符开始&#xff0c;并以相应的保留字或运算符终止。与复合命令关联的任何重定向&#xff08;请参阅 Redirections &#xff09;都适用于该复合命令中的所有命令&#xff0c;除非显式…