精华内容
下载资源
问答
  • Wfuzz

    2021-10-18 14:05:08
    Wfuzz Wfuzz 是为了促进 Web 应用程序评估中的任务,它基于一个简单的概念:它用给定有效负载的值替换对 FUZZ 关键字的任何引用。 Wfuzz 中的有效载荷是数据源。 这个简单的概念允许在 HTTP 请求的任何字段中注入...

    Wfuzz

    Wfuzz 是为了促进 Web 应用程序评估中的任务,它基于一个简单的概念:它用给定有效负载的值替换对 FUZZ 关键字的任何引用。

    Wfuzz 中的有效载荷是数据源。

    这个简单的概念允许在 HTTP 请求的任何字段中注入任何输入,从而允许在不同的 Web 应用程序组件中执行复杂的 Web 安全攻击,例如:参数、身份验证、表单、目录/文件、标头等。

    Wfuzz 不仅仅是一个 Web 内容扫描器:

    • Wfuzz 可以通过查找和利用 Web 应用程序漏洞来帮助您保护 Web 应用程序。Wfuzz 的 Web 应用程序漏洞扫描器由插件支持。
    • Wfuzz 是一个完全模块化的框架,即使是最新的 Python 开发人员也可以轻松做出贡献。构建插件很简单,只需几分钟。
    • Wfuzz 为之前使用 Wfuzz 或其他工具(例如 Burp)执行的 HTTP 请求/响应公开了一个简单的语言接口。这使您可以在完整的上下文和对操作的理解的情况下执行手动和半自动测试,而无需依赖 Web 应用程序扫描程序的底层实现。

    它的创建是为了促进 Web 应用程序评估中的任务,它是渗透测试人员为渗透测试人员提供的工具。

    入门

    基本测试

    单个有效载荷

     wfuzz  -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ
    

    在这里插入图片描述

    • ID:按执行顺序的请求编号。
    • Response:显示 HTTP 响应代码。
    • Lines:显示 HTTP 响应中的行数。
    • Word:显示 HTTP 响应中的字数。
    • Chars:显示 HTTP 响应中的字符数。
    • Payload:显示使用的有效载荷。

    多个有效载荷

     wfuzz  -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ/FUZ2Z
    

    在这里插入图片描述

    筛选

    通过HTTP 响应代码过滤

    wfuzz --hc 404 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ
    

    在这里插入图片描述

    指定多个值

    wfuzz --hc 404,301 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ
    

    在这里插入图片描述

    通过 HTTP 响应中的行数过滤。

    wfuzz --hl 31 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ
    

    在这里插入图片描述

    通过 HTTP 响应中的字数过滤。

    wfuzz --hw 80 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ
    

    在这里插入图片描述

    通过 HTTP 响应中的字符数过滤。

    wfuzz --hh 1308,147 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ
    

    在这里插入图片描述

    基本用法

    1、目录扫描

    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ
    

    2、查找常见文件

    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/FUZZ.txt 
    

    3、对 URL 中的参数进行测试

    wfuzz -z range,0-10  http://192.168.1.15/include.php?cat=FUZZ
    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.15/include.php?cat=FUZZ
    

    4、对 POST 请求进行测试

    wfuzz -w wordlist/others/common_pass.txt -d "uname=admin&pass=FUZZ" http://192.168.1.15/userinfo.php
    

    5、Cookie

    #添加自己的cookie
    wfuzz -w wordlist/general/common.txt -b cookie=value1 http://192.168.1.15/FUZZ
    
    #得到的HTTP请求为
    GET /attach HTTP/1.1
    Host: 192.168.1.15
    Accept: */*
    Content-Type:  application/x-www-form-urlencoded
    Cookie:  cookie=value1
    User-Agent:  Wfuzz/2.2
    Connection: close
    
    #cookie测试
    wfuzz -w wordlist/general/common.txt -b cookie=FUZZ http://192.168.1.15
    

    6、HTTP标头

    #添加自定义HTTP表标头
    wfuzz -w wordlist/general/common.txt -H "myheader: headervalue" http://192.168.1.15/FUZZ
    
    #得到的HTTP请求为
    GET /agent HTTP/1.1
    Host: 192.168.1.15
    Accept: */*
    Myheader:  headervalue
    Content-Type:  application/x-www-form-urlencoded
    User-Agent:  Wfuzz/2.2
    Connection: close
    
    #修改现有标头
    wfuzz -w wordlist/general/common.txt -H "myheader: headervalue" -H "User-Agent: Googlebot-News" http://192.168.1.15/FUZZ
    
    #得到的HTTP请求为
    GET /asp HTTP/1.1
    Host: 192.168.1.15
    Accept: */*
    Myheader:  headervalue
    Content-Type:  application/x-www-form-urlencoded
    User-Agent:  Googlebot-News
    Connection: close
    

    7、HTTP参数

    #测试HTTP参数
    wfuzz -z GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://192.168.1.10/
    
    #指定HTTP参数
    wfuzz -w wordlist/general/common.txt -X POST http://192.168.1.10/FUZZ
    

    8、代理

    #基本代理
    wfuzz -w wordlist/general/common.txt -p localhost:8080 http://192.168.1.15/FUZZ
    
    #SOCKS4 和 SOCKS5 协议的代理
    wfuzz -w wordlist/general/common.txt -p localhost:2222:SOCKS5 http://192.168.1.15/FUZZ
    
    #同时使用多个代理
    wfuzz -w wordlist/general/common.txt -p localhost:8080 -p localhost:9090 http://192.168.1.15/FUZZ
    

    9、爆破

    #爆破密码
    wfuzz -w wordlist/general/common.txt -w wordlist/general/common.txt --basic FUZZ:FUZ2Z https://192.168.1.15/login.php
    
    #对受保护网站的资源进行模糊测试
    wfuzz -w wordlist/general/common.txt  --basic admin:password https://192.168.1.15/FUZZ
    

    10、深度目录扫描

    wfuzz -w wordlist/general/common.txt -R1 http://192.168.1.15/FUZZ
    

    11、输入结果

    #以 JSON 格式输出
    wfuzz -o json -w wordlist/general/common.txt http://192.168.1.15/FUZZ
    
    展开全文
  • Wfuzz - The Web Fuzzer Wfuzz has been created to facilitate the task in web applications assessments and it is based on a simple concept: it replaces any reference to the FUZZ keyword by the value of ...
  • Wfuzz小记

    2020-09-22 15:00:11
    Wfuzz小记 ** 使用wfuzz暴力猜测目录 wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://xxx.com/FUZZ 使用wfuzz暴力猜测文件 wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt ...

    **

    Wfuzz小记

    **

    使用wfuzz暴力猜测目录

    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://xxx.com/FUZZ
    

    使用wfuzz暴力猜测文件

    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://xxx.com/FUZZ.php
    

    通过在URL中在?后面设置FUZZ占位符,使用wfuzz来测试URL传入的参数

    wfuzz -z range,0-10 --hl 97 http://xxx.com/listproducts.php?cat=FUZZ
    

    测试请求中加入自己设置的cookies,使用-b参数指定,多个cookies使用多次

    wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt -b cookie=value1 -b cookie2=value2 http://xxx.com/FUZZ
    

    测试cookie字段

    wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt -b cookie=FUZZ http://xxx.com/
    

    发现一个登录框,没有验证码,想爆破弱口令账户
    POST请求正文为:username=&password=

    wfuzz -w userList -w pwdList -d "username=FUZZ&password=FUZ2Z" http://ip/login.php
    
    wfuzz -c -w wordlist -u http://xx.xx.xx.xx/FUZZ --hl 0 --hw 24
    -c: 显示不同颜色
    -w: 指定字典
    -u: 指定URL
    FUZZ 指定要模糊测试的位置
    --h: 屏蔽不需要的信息
    

    wfuzz将不同的字典的组合起来,那就是Iterators模块
    使用参数-m迭代器,wfuzz自带的迭代器有三个:zip、chain、product,如果不指定迭代器,默认为product迭代器

    wfuzz -z range,0-9 -w dict.txt -m zip http://127.0.0.1/ip.php?FUZZ=FUZ2Z
    

    注:字典要慢慢搜集

    展开全文
  • Wfuzz 使用

    千次阅读 2018-03-17 21:41:47
    Wfuzz是网站模糊测试爆破工具。 https://github.com/xmendez/wfuzz wfuzz不仅仅是一个web扫描器: wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。 wfuzz是...

    前言

    Wfuzz是网站模糊测试爆破工具。

    https://github.com/xmendez/wfuzz

    wfuzz不仅仅是一个web扫描器:

    wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。

    wfuzz是一个完全模块化的框架,这使得即使是Python初学者也能够进行开发和贡献代码。开发一个wfuzz插件是一件非常简单的事,通常只需几分钟。

    wfuzz提供了简洁的编程语言接口来处理wfuzz或Burpsuite获取到的HTTP请求和响应。这使得你能够在一个良好的上下文环境中进行手工测试或半自动化的测试,而不需要依赖web形式的扫描器。

    使用指南

    最简单命令

    一个典型的wfuzz命令只需要指定一个字典和一个要测试的URL即可,如下:

    ┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz]
    └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
    ********************************************************
    * Wfuzz 2.2.9 - The Web Fuzzer *
    ********************************************************
    
    Target:http://testphp.vulnweb.com/FUZZ
    Total requests: 950
    
    ==================================================================
    ID Response Lines Word Chars Payload 
    ==================================================================
    
    000223:C=404 7L12W168 Ch "constants"
    000224:C=404 7L12W168 Ch "contact"
    000225:C=404 7L12W168 Ch "contacts"
    000230:C=404 7L12W168 Ch "controlpanel"
    000226:C=404 7L12W168 Ch "content"
    000227:C=404 7L12W168 Ch "contents"
    000228:C=404 7L12W168 Ch "control"
    ...
    000008:C=404 7L12W168 Ch "100"
    
    Total time: 5.193345
    Processed Requests: 950
    Filtered Requests: 0
    Requests/sec.: 182.9264
    

    wfuzz的输出使我们能够分析web server的响应,还可根据获得的HTTP响应信息过滤出我们想要的结果,比如过滤响应码/响应长度等等。

    每一行输出给我们提供了以下信息:

    • ID:测试时的请求序号
    • Response:HTTP响应码
    • Lines:响应信息中的行数
    • Word:响应信息中的字数
    • Chars:响应信息中的字符数
    • Payload:当前使用的payload
    获取帮助信息

    使用 -h 和 –help 参数来获取基本帮助信息和详细帮助信息。

    wfuzz是一个完全模块化的模式,你可以使用 -e <> 参数查看其中可用的模块,例如:

    ┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz]
    └──╼$wfuzz-e iterators
    
    Available iterators:
    
     Name | Summary 
    ----------------------------------------------------------------------------------------------
    product| Returns an iterator cartesian product of input iterables. 
    zip| Returns an iterator that aggregates elements from each of the iterables. 
    chain| Returns an iterator returns elements from the first iterable until it is exhaust
     |ed, then proceeds to the next iterable, until all of the iterables are exhausted
     | .
    

    可用的categories包括: payloads , encoders , iterators , printers 和 scripts 。

    Payloads

    wfuzz基于一个非常简单的概念:它用一个给定的payload来替换相应的FUZZ关键词的值,我们称FUZZ这样的关键词为 占位符 ,这样更容易理解。一个wfuzz中的payload就是一个输入的源。

    要想得到所有可用的payload列表,可以执行如下命令:

    $ wfuzz -e payloads

    关于payloads的更详细的信息可以通过以下命令获取:

    $ wfuzz -z help

    上面这个命令还可以使用 –slice 参数来对输出结果进行过滤:

    ┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz]
    └──╼ $wfuzz -z help --slice "dirwalk"
    Name: dirwalk 0.1
    Categories: default
    Summary: Returns filename's recursively from a local directory.
    Author: Xavi Mendez (@xmendez)
    Description:
     Returns all the file paths found in the specified directory.
     Handy if you want to check a directory structure against a webserver,
     for example, because you have previously downloaded a specific version
     of what is supposed to be on-line.
    Parameters:
     + dir: Directory path to walk and generate payload from.
    指定一个payload

    每个FUZZ占位符都必须为它指定相应的payload。指定一个payload时有几种方法:

    命令比较长的方式是显式的定义payload的参数:

    $ wfuzz -z file --zP fn=/usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ

    另一个不太长的方式是只提供payload所需的默认参数:

    $ wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ

    最后,短的方式是使用别名:

    $ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ

    stdin 这个payload可以在使用一些外部字典生成工具时很方便:

    ┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz]
    └──╼$crunch2 2ab|wfuzz-z stdin http://testphp.vulnweb.com/FUZZ
    Crunch will now generate the following amount of data: 12bytes
    0MB
    0GB
    0TB
    0PB
    Crunch will now generate the following number of lines: 4 
    ********************************************************
    * Wfuzz 2.2.9 - The Web Fuzzer *
    ********************************************************
    
    Target:http://testphp.vulnweb.com/FUZZ
    Total requests: <<unknown>>
    
    ==================================================================
    ID Response Lines Word Chars Payload 
    ==================================================================
    
    000002:C=404 7L12W168 Ch "ab"
    000001:C=404 7L12W168 Ch "aa"
    000003:C=404 7L12W168 Ch "ba"
    000004:C=404 7L12W168 Ch "bb"
    
    Total time: 3.827355
    Processed Requests: 4
    Filtered Requests: 0
    Requests/sec.: 1.045107
    使用多个payloads

    使用 -z 或 -w 参数可以同时指定多个payloads,这时相应的占位符应设置为 FUZZ, … , FUZnZ, 其中 n 代表了payload的序号。比如下面的例子,我们同时暴破文件,后缀和目录:

    $ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/extensions_common.txt --hc 404 http://testphp.vulnweb.com/FUZZ/FUZ2ZFUZ3Z
    过滤器

    对wfuzz的结果时行过滤是非常重要的:

    非常大的字典文件可以生成非常庞大的输出,并且把我们想要的结果淹没
    对HTTP响应的一些分类在实际攻击时是非常重要的,例如,为了查检一个SQLi的漏洞是否存在,我们必须能够将合理的响应和错误/不同的响应区分开。
    wfuzz可根据HTTP响应码和收到的响应的长度(字数,字符数或行数)来过滤。还可以用正则表达式。

    过滤的方法有两种:隐藏或显示符合过滤条件的结果。

    隐藏响应结果

    通过 –hc , –hl , –hw , –hh 参数可以隐藏某些HTTP响应。

    隐藏无法找到的页面的响应如下:

    $ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ

    可指定多个需要隐藏的条件,如,想要加上隐藏禁止访问的响应:

    $ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404,403 http://testphp.vulnweb.com/FUZZ

    用行数,字数,字符数来指定过滤规则,在当HTTP返回码相同的时候比较方便。比如,网站一般会指定一个自定义的错误页面,返回码是200,但实际上起到了一个404页面的作用,我们称之为软404。

    下面是一个例子:

    ┌─[[email protected]]─[~]
    └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt--hc404http://datalayer.io/FUZZ
    ********************************************************
    * Wfuzz 2.2.9 - The Web Fuzzer *
    ********************************************************
    
    Target:http://datalayer.io/FUZZ
    Total requests: 950
    
    ==================================================================
    ID Response Lines Word Chars Payload 
    ==================================================================
    
    000083:C=200 51L138W962 Ch "apache"
    000008:C=200 51L138W962 Ch "100"
    000009:C=200 51L138W962 Ch "1000"
    000011:C=200 51L138W962 Ch "2"
    000012:C=200 51L138W962 Ch "20"
    000013:C=200 51L138W962 Ch "200"
    ...

    仔细观察上面的结果,我们很容易推断出所有”not found”的返回信息中都有 51个行,138个字,962个字符。因此,我们需要改进一下我们的过滤条件(增加多个过滤条件):

    ┌─[[email protected]]─[~]
    └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt--hc404 --hh962http://datalayer.io/FUZZ
    ********************************************************
    * Wfuzz 2.2.9 - The Web Fuzzer *
    ********************************************************
    
    Target:http://datalayer.io/FUZZ
    Total requests: 950
    
    ==================================================================
    ID Response Lines Word Chars Payload 
    ==================================================================
    
    000430:C=302 0L0W0 Ch "img"
    000689:C=500 2L1W9 Ch "register"
    000135:C=302 0L0W0 Ch "blog"
    000438:C=200 1677L5416W90077 Ch "index"
    
    Total time: 8.323663
    Processed Requests: 950
    Filtered Requests: 946
    Requests/sec.: 114.1324

    显示响应结果

    显示响应结果的使用方法跟隐藏时的原理一样,只不过参数变为了: –sc , –sl , –sw , –sh 。

    使用Baseline

    习惯上称Baseline为”基准线“。过滤器可以是某个HTTP响应的引用,这样的引用我们称为Baseline。

    之前的使用 –hh 进行过滤的例子中,还可以使用下面的命令代替:

    ┌─[[email protected]]─[~]
    └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt--hh BBB http://datalayer.io/FUZZ{notthere}
    ********************************************************
    * Wfuzz 2.2.9 - The Web Fuzzer *
    ********************************************************
    
    Target:http://datalayer.io/FUZZ
    Total requests: 951
    
    ==================================================================
    ID Response Lines Word Chars Payload 
    ==================================================================
    
    000002:C=200 51L138W962 Ch "notthere"
    000432:C=302 0L0W0 Ch "img"
    000086:C=404 0L0W0 Ch "api"
    000691:C=500 2L1W9 Ch "register"
    000137:C=302 0L0W0 Ch "blog"
    000045:C=404 0L0W0 Ch "WEB-INF"
    000440:C=200 1677L5416W90077 Ch "index"
    
    Total time: 21.76636
    Processed Requests: 951
    Filtered Requests: 944
    Requests/sec.: 43.69125

    这里, { } 来指定 第一次 HTTP请求时用来替换 FUZZ占位符 的值,其响应将被标记为 BBB ,并用于过滤条件中。

    使用正则表达式过滤

    在命令行中,参数 –ss 和 –hs 可以接受正则表达式来对返回的结果时行过滤。

    详细例子请参考 http://edge-security.blogspot.co.uk/2014/10/scan-for-shellshock-with-wfuzz.html

    $ wfuzz -H "User-Agent: () { :;}; echo; echo vulnerable" --ss vulnerable -w cgis.txt http://localhost:8000/FUZZ

    重要关键词

    payload

    payload为wfuzz生成的用于测试的特定字符串,一般情况下,会替代被测试URL中的FUZZ占位符。

    当前版本中的wfuzz中可用payloads列表如下:

    ┌─[[email protected]]─[~]
    └──╼$wfuzz-e payloads
    
    Available payloads:
    
     Name | Summary 
    ------------------------------------------------------------------------------------------------------
    guitab| 从可视化的标签栏中读取请求 
    dirwalk| 递归获得本地某个文件夹中的文件名 
    file| 获取一个文件当中的每个词 
    autorize| 获取autorize的测试结果Returns fuzz results' from autororize.
    wfuzzp | 从之前保存的wfuzz会话中获取测试结果的URL
    ipnet | 获得一个指定网络的IP地址列表
    bing | 获得一个使用bing API搜索的URL列表 (需要 api key).
    stdin | 获得从标准输入中的条目
    list | 获得一个列表中的每一个元素,列表用以 - 符号分格
    hexrand | 从一个指定的范围中随机获取一个hex值
    range | 获得指定范围内的每一个数值
    names | 从一个以 - 分隔的列表中,获取以组合方式生成的所有usernames值
    burplog | 从BurpSuite的记录中获得测试结果
    permutation | 获得一个在指定charset和length时的字符组合
    buffer_overflow | 获得一个包含指定个数个A的字符串.
    hexrange | 获得指定范围内的每一个hex值
    iprange | 获得指定IP范围内的IP地址列表
    burpstate | 从BurpSuite的状态下获得测试结果
    encoder

    encoder的作用是将payload进行编码或加密。

    wfuzz的encoder列表如下:

    ┌─[[email protected]]─[~]
    └──╼$wfuzz-e encoders
    
    Available encoders:
    
     Category | Name | Summary 
    ------------------------------------------------------------------------------------------------------------------------
    url_safe,url|urlencode| 用`%xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换
    url_safe,url| double urlencode| 用`%25xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换
    url|uri_double_hex| 用`%25xx`的方式将所有字符进行编码
    html|html_escape| 将`&`,`<`,`>`转换为HTML安全的字符
    html|html_hexadecimal| 用 `&#xx;` 的方式替换所有字符
    hashes|base64| 将给定的字符串中的所有字符进行base64编码
    url|doble_nibble_hex| 将所有字符以`%%dd%dd`格式进行编码
    db|mssql_char| 将所有字符转换为MsSQL语法的`char(xx)`形式
    url|utf8| 将所有字符以`u00xx` 格式进行编码
    hashes|md5| 将给定的字符串进行md5加密
     default |random_upper| 将字符串中随机字符变为大写
    url|first_nibble_hex| 将所有字符以`%%dd?` 格式进行编码
     default |hexlify| 每个数据的单个比特转换为两个比特表示的hex表示
    url|second_nibble_hex| 将所有字符以`%?%dd` 格式进行编码
    url|uri_hex| 将所有字符以`%xx` 格式进行编码
     default |none| 不进行任何编码
    hashes|sha1| 将字符串进行sha1加密
    url|utf8_binary| 将字符串中的所有字符以 `uxx` 形式进行编码
    url|uri_triple_hex| 将所有字符以`%25%xx%xx` 格式进行编码
    url|uri_unicode| 将所有字符以`%u00xx` 格式进行编码
    html|html_decimal| 将所有字符以 `&#dd; ` 格式进行编码
    db|oracle_char| 将所有字符转换为Oracle语法的`chr(xx)`形式
    db|mysql_char| 将所有字符转换为MySQL语法的`char(xx)`形式
    iterator

    wfuzz的iterator提供了针对多个payload的处理方式。

    itorators的列表如下:

    ┌─[[email protected]]─[~]
    └──╼$wfuzz-e iterators
    
    Available iterators:
    
     Name | Summary 
    ----------------------------------------------------------------------------------------------
    product| 返回输入条目的笛卡尔积
    zip| Retns an iterator that aggregates elements from each of the iterables.(翻译不好,请自行理解)
    chain| Returns an iterator returns elements from the first iterable until it is exhaust
     |ed, then proceeds to the next iterable, until all of the iterables are exhausted
     | (翻译不好,请自行理解)
    printer
    wfuzz的printers用于控制输出打印。
    
    printers列表如下:
    
    ┌─[[email protected]]─[~]
    └──╼$wfuzz-e printers
    
    Available printers:
    
     Name | Summary 
    --------------------------------------------------
    raw| `Raw`output format
    json| Results in `json`format
    csv| `CSV`printer ftw
    magictree| Prints results in `magictree`format
    html| Prints results in `html`format
    (比较好懂,不再翻译)
    scripts

    暂时不知道怎么使用

    scripts列表如下:

    ┌─[[email protected]]─[~]
    └──╼$wfuzz-e scripts
    
    Available scripts:
    
     Category | Name | Summary
    ----------------------------------------------------------------------------------------------------
     default,passive|cookies| 查找新的cookies
     default,passive|errors| 查找错误信息
    passive|grep|HTTP response grep
    active|screenshot| 用linux cutycapt tool进行屏幕抓取 
     default,active,discovery|links| 解析HTML并查找新的内容
     default,active,discovery|wc_extractor| 解析subversion的wc.db文件
     default,passive|listing| 查找列目录漏洞
     default,passive|title| 解析HTML页面的title
     default,active,discovery|robots| 解析robots.txt文件来查找新内容
     default,passive|headers| 查找服务器的返回头
     default,active,discovery|cvs_extractor| 解析CVS/Entries 文件
     default,active,discovery|svn_extractor| 解析 .svn/entries文件
    active,discovery|backups| 查找已知的备份文件名
     default,active,discovery|sitemap| 解析sitemap.xml文件

    内置工具

    wfencode 工具

    这是wfuzz自带的一个加密/解密(编码/反编码)工具,目前支持内建的encoders的加/解密。

    ┌─[[email protected]]─[~/.wfuzz]
    └──╼ $wfencode -e base64 123456
    MTIzNDU2
    
    ┌─[[email protected]]─[~/.wfuzz]
    └──╼ $wfencode -d base64 MTIzNDU2
    123456
    wfpayload工具

    wfpayload是payload生成工具

    ┌─[[email protected]]─[~/.wfuzz]
    └──╼ $wfpayload -z range,0-10
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    wxfuzz 工具

    这个看源码是一个wxPython化的wfuzz,也就是GUI图形界面的wfuzz。目前需要wxPython最新版本才能使用,但是在ParrotOS和Kali上都无法正常安装成功,问题已在GitHub提交Issue,期待开发者的回复中…

    wfuzz命令中文帮助

    这是wfuzz的主工具,我们平时使用的时候就是用这个。

    先来看看帮助文档:

    ┌─[✗]─[[email protected]]─[~]
    └──╼$wfuzz--help
    ********************************************************
    * Wfuzz 2.2.9 - The Web Fuzzer *
    * *
    * Version up to1.4c coded by: *
    * Christian Martorella ([email protected]-security.com) *
    * Carlos del ojo([email protected].com) *
    * *
    * Version 1.4d to2.2.9coded by: *
    * Xavier Mendez ([email protected]-security.com) *
    ********************************************************
    
     Usage:wfuzz[options] -z payload,params <url>
    
    FUZZ, ..., FUZnZ payload占位符,wfuzz会用指定的payload代替相应的占位符,n代表数字. 
    FUZZ{baseline_value}FUZZ会被baseline_value替换,并将此作为测试过程中第一个请求来测试,可用来作为过滤的一个基础。
    
    
     Options:
     -h/--help: 帮助文档
     --help: 高级帮助文档
     --version: Wfuzz详细版本信息
     -e<type> : 显示可用的encoders/payloads/iterators/printers/scripts列表
    
     --recipe<filename> : 从文件中读取参数
     --dump-recipe<filename> : 打印当前的参数并保存成文档
     --oF<filename> : 将测试结果保存到文件,这些结果可被wfuzz payload处理
    
     -c: 彩色化输出
     -v: 详细输出
     -f filename,printer: 将结果以printer的方式保存到filename(默认为raw printer).
     -o printer: 输出特定printer的输出结果
     --interact: (测试功能) 如果启用,所有的按键将会被捕获,这使得你能够与程序交互
     --dry-run: 打印测试结果,而并不发送HTTP请求
     --prev: 打印之前的HTTP请求(仅当使用payloads来生成测试结果时使用)
    
     -p addr: 使用代理,格式ip:port:type. 可设置多个代理,type可取的值为SOCKS4,SOCKS5or HTTP(默认)
    
     -t N: 指定连接的并发数,默认为10
     -s N: 指定请求的间隔时间,默认为0
     -R depth: 递归路径探测,depth指定最大递归数量
     -L,--follow: 跟随HTTP重定向
     -Z: 扫描模式 (连接错误将被忽视).
     --req-delay N: 设置发送请求允许的最大时间,默认为 90,单位为秒.
     --conn-delay N: 设置连接等待的最大时间,默认为 90,单位为秒.
    
     -A: 是 --script=default -v-c的简写
     --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: 指定一个处理payloads的迭代器 (默认为product)
     -z payload: 为每一个占位符指定一个payload,格式为name[,parameter][,encoder].
     编码可以是一个列表, 如md5-sha1. 还可以串联起来, 如.[email protected].
     还可使用编码各类名,如url
     使用help作为payload来显示payload的详细帮助信息,还可使用--slice进行过滤
     --zP<params> : 给指定的payload设置参数。必须跟在 -z或-w参数后面
     --slice<filter> : 以指定的表达式过滤payload的信息,必须跟在-z参数后面
     -w wordlist: 指定一个wordlist文件,等同于 -z file,wordlist
     -V alltype: 暴力测试所有GET/POST参数,无需指定占位符
     -X method: 指定一个发送请求的HTTP方法,如HEADFUZZ
    
     -b cookie: 指定请求的cookie参数,可指定多个cookie
     -d postdata: 设置用于测试的POST data(ex: "id=FUZZ&catalogue=1")
     -H header: 设置用于测试请求的HEADER(ex:"Cookie:id=1312321&user=FUZZ"). 可指定多个HEADER.
     --basic/ntlm/digest auth: 格式为 "user:pass" or "FUZZ:FUZZ" or "domainFUZ2Z:FUZZ"
    
     --hc/hl/hw/hh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件隐藏返回结果 (用BBB来接收baseline)
     --sc/sl/sw/sh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件显示返回结果 (用BBB来接收baseline)
     --ss/hs regex: 显示或隐藏返回结果中符合指定正则表达式的返回结果
     --filter<filter> : 显示或隐藏符合指定filter表达式的返回结果 (用BBB来接收baseline)
     --prefilter<filter> : 用指定的filter表达式在测试之前过滤某些测试条目
    来源

    本文转自:http://m0nst3r.me/web-sec/245.html

    展开全文
  • wfuzz学习

    2020-10-04 16:33:59
    Wfuzz是一个基于Python的Web爆破程序,它支持多种方法来测试WEB应用的漏洞。它的功能太多了。kail里也有,Windows也可以自己装。 可以找漏洞 可预测的认证 可预测的session标志(session id) 可预测的资源定位...

    前言

    Wfuzz是一个基于Python的Web爆破程序,它支持多种方法来测试WEB应用的漏洞。它的功能太多了。kail里也有,Windows也可以自己装。

    我们可以用它找漏洞

    可预测的认证
    
    可预测的session标志(session id)
    
    可预测的资源定位(目录和文件)
    
    注入
    
    路径遍历
    
    溢出
    
    跨站脚本
    
    认证漏洞
    
    不安全的直接对象引用
    

    wfuzz里也自带了很多的字典

    .
    ├── Injections
    │   ├── All_attack.txt
    │   ├── SQL.txt
    │   ├── Traversal.txt
    │   ├── XML.txt
    │   ├── XSS.txt
    │   └── bad_chars.txt
    ├── 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
    ├── others
    │   ├── common_pass.txt
    │   └── names.txt
    ├── stress
    │   ├── alphanum_case.txt
    │   ├── alphanum_case_extra.txt
    │   ├── char.txt
    │   ├── doble_uri_hex.txt
    │   ├── test_ext.txt
    │   └── uri_hex.txt
    ├── vulns
    │   ├── apache.txt
    │   ├── cgis.txt
    │   ├── coldfusion.txt
    │   ├── dirTraversal-nix.txt
    │   ├── dirTraversal-win.txt
    │   ├── dirTraversal.txt
    │   ├── domino.txt
    │   ├── fatwire.txt
    │   ├── fatwire_pagenames.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
    
    

    安装我就不说了

    基本用法:

    参数:
    在这里插入图片描述

    ID: 按执行顺序排列 ID
    Response: HTTP 响应状态
    Lines: HTTP 响应中的行数
    Word:HTTP 响应中单词个数
    Char:HTTP 响应的字节数
    Payload:FUZZ 中的字典
    

    到后面我们可以根据响应状态,行数等等,进行自定义过滤。

    爆破网站后台文件

    wfuzz -w wordlist URL/FUZZ.php
    

    通过这个payload我们可以看到网站后台的php文件

    爆破网站后台目录

    wfuzz -w wordlist URL/FUZZ
    

    类似于dirsearch的扫描,扫面网站后台目录,但是这个需要你的字典足够强大。

    遍历URL中的参数

    对于网站http://127.0.0.1/index.php?id=12如果其存在未授权漏洞

    我们可以用

    wfuzz -z range,000-999 http://127.0.0.1/index.php?id=FUZZ
    
    

    range就是参数id的可取范围

    当然,如果需要cookie的话,也行

    wfuzz -z range,000-999 -b session=session -b cookie=cookie http://127.0.0.1/index.php?uid=FUZZ
    

    如果要加多个cookie的话,需要多次指定

    访问请求时会在 header 中加入 Cookie: cookie1=x cookie2=xxx

    -b cookie=xxx  -b cookie=xxx 
    

    对于某些页面如果没有cookie,不会允许我们访问,直接跳转到错误页面,这就使FUZZ结果不是很准确。

    POST请求

    登录框,弱口令爆破

    在DVWA里暴力破解

    传参格式:username=&password=

    构造payload:wfuzz -w /usr/share/wfuzz/wordlist/general/mima.txt -w /usr/share/wfuzz/wordlist/general/mima.txt -d "username=FUZZ&password=FUZ2Z" http://192.168.46.129/vulnerabilities/brute/

    -w 后面加字典的路径,因为有两个参数,所以要用两次- w。

    -d 参数以POST格式传参 ,后面是格式。

    最后是URL,爆破的过程是漫长且还要根据你字典的大小。

    在这里说一下

    wfuzz -z file --zP fn=~/Desktop/word.txt  URL/FUZZ
    wfuzz -w ~/桌面/word.txt URL/FUZZ
    wfuzz -z file,~/桌面/word.txt URL/FUZZ
    

    上面的虽然payload不一样,但是结果都是等效的。

    -z 参数是指定一个可用的 payload 模块,–zP 是指定 payload 中的参数看下 file 模块的详细信息

    我是用最多的可能是中间的那种方式。

    使用多个payload并且同时爆破目录和文件

    wfuzz -w /usr/share/wfuzz/wordlist/general/mima.txt -w /usr/share/wfuzz/wordlist/general/mima.txt -d http://192.168.46.129/vulnerabilities/brute/FUZZ/FUZ2Z/FUZNZ

    因为有多个payload所以需要我们通过改变n的值来指定我们使用的是哪一个。

    fuzz的过滤器

    不得不说过滤器真是个好东西,它能给我们省下很多时间。
    就比如说我们后台爆破的时候可以直接过滤掉我们不想看到的错误码,还有SQL注入时候,也是对我们有很大的帮助。

    我就说一下简单的参数:

    隐藏响应结果

    通过 --hc , --hl , --hw , --hh 参数可以隐藏某些HTTP响应。
    

    栗子

    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt --hc 302 -d “username=FUZZ&password=FUZ2Z” http://192.168.46.129/vulnerabilities/brute/

    因为302的信息太多,直接用 - -hc过滤掉,这个就可以隐藏响应状态为302的信息。

    我们也可以过滤多个响应状态,用隔开就行了,

    – hc 302,404

    –hh 178 过滤掉返回数据字符串长度为178的信息

    有隐藏就又显示

    参数:–sc , –sl , –sw , –sh

    比如我们只需要201,350的状态的数据

    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt --sc 302 -d “username=FUZZ&password=FUZ2Z” http://192.168.46.129/vulnerabilities/brute/

    使用Baseline

    Baseline (基线) 就是针对 HTTP Response 构建过滤器。

    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt --hh bbb  http://192.168.46.129/vulnerabilities/brute/{zxc}
    

    {}被指定第一次HTTP请求时用来替换 FUZZ占位符 的值,其返回的响应码将被标记为 BBB ,并用于过滤条件中。

    在下面的测试中,如果再遇到BBB,则直接过滤了。

    ⑧基于正则表达式的过滤

    参数:-- hs,--ss

    wfuzz -c -w ~/Desktop/word.txt --hs “404 Not Found” URL/FUZZ/

    FUZZing自定义headers

    对于某些目标站点,可能会对我们的user-agent,而这种情况就需要我们自定义了

    $ wfuzz -w word.txt -H “user-agent:aaa” URL/FUZZ

    Fuzzing HTTP 协议

    简单的说就是测试这个站点的HTTP请求方式,get还是post等等。

    wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ URL

    FUZZ的代理设置

    如果在 fuzz 中设置代理使用 -p proxy地址,代理支持 SOCKS4、SOCKS5 也支持多个代理只需要使用多个 -p 参数。(当我们需要访问国外站点时,就需要代理了)

    普通代理:

    $ wfuzz -w word.txt -p localhost:8000 url

    SOCKS4

    $ wfuzz -w word.txt -p localhost:8000: SOCKS4 url

    SOCKS5

    $ wfuzz -w word.txt -p localhost:8000 :SOCKS5 url

    递归FUZZING测试

    使用-R参数可以指定一个payload被递归的深度。

    例如:爆破目录时,我们想使用相同的payload对已发现的目录进行测试,可以使用如下命令:

    wfuzz -z list,"admin-login.php-test.php" -R 1 URL/FUZZ
    

    1 就是指在我们已经测试出来的目录再递归一次字典 。

    例如:
    测试admin目录下是否还存在admin

    并发

    在 fuzz 中如果目标存在 waf,发送请求并发太高会被禁止,wfuzz 中可以使用 -t 参数来增加或减少并发数量,也可以使用 -s 指定每次请求后的间隔秒数

    这个找不到好的栗子,就借鉴JBlock大师傅的了

    e.g. 你想测试一个网站的转账请求是否存在HTTP并发漏洞(条件竞争)

    请求地址:http://127.0.0.1/dorabox/race_condition/pay.php

    POST请求正文:money=1

    使用如下命令:

    wfuzz -z range,0-20 -t 20 -d “money=1” http://127.0.0.1/dorabox/race_condition/pay.php?FUZZ

    在这里插入图片描述

    测试并发要控制请求次数,在这里为使用range模块生成0-20,然后将FUZZ占位符放在URL的参数后不影响测试即可,主要是用-t参数设置并发请求,该参数默认设置都是10。

    测试结果输出为文件

    这个功能是插件printers提供的

    格式:

    Available printers:
    
      Name      | Summary                             
    --------------------------------------------------
      csv       | CSV printer ftw                     
      html      | Prints results in html format       
      json      | Results in json format              
      magictree | Prints results in magictree format  
      raw       | Raw output format  
    

    使用-f参数,指定值的格式为输出文件位置,输出格式。

    $ wfuzz -f outfile,html -w wordlist URL/FUZZ
    

    fuzzing常用的使用方法就说到这吧,至于高阶的我以后碰到再记录。

    理论总没有实战有意思!!!

    展开全文
  • wfuzz 教程

    千次阅读 2019-03-05 09:28:04
    Wfuzz是一个为暴力破解Web应用程序而设计的工具,它可以用于查找未链接的资源(目录,servlet,脚本等),暴力GET和POST参数以检查不同类型的注入(SQL,XSS,LDAP等),强力表单参数(用户/密码),Fuzzing等。...
  • WFUZZ使用教程

    千次阅读 2019-10-22 14:23:47
    WFUZZ使用教程
  • wfuzz-1.4(wftp fuzz)

    2017-08-25 10:30:20
    wfuzz-1.4
  • wfuzz info

    2016-01-24 11:39:25
    Wfuzz is a tool designed for bruteforcing Web Applications, it can be used for finding resources not linked (directories, servlets, scripts, etc), bruteforce GET and POST parameters for checking diffe
  • WFuzz FrontEnd (WFuzz UI) 是我们将 GUI 包装到由 edge-security.com 提供的历史悠久的著名 wfuzz.py 的东西,它因其多线程和灵活性而闻名,可根据 HTTP 响应代码显示所需的结果/否. 行/字。
  • wFuzz使用帮助

    2019-09-28 20:18:30
    ******************************************************** * Wfuzz 2.0 - The Web Bruteforcer * ******************************************************** Usage: /usr/bin/w...
  • 这是wfuzz系列教程的最后一篇啦! wfuzzwfuzz库参数 测试一个URL FuzzSession对象 生成Payload 生成Session wfuzzwfuzz库参数 在wfuzz库中包含所有 wfuzz命令行的参数。 CLI Option Library ...
  • wfuzz info2

    2016-01-24 11:49:29
    ******************************************************** * Wfuzz 2.0 - The Web Bruteforcer * ******************************************************** Usage: /usr/bin/wfuzz [optio
  • win10+python3.6+pycurl+wfuzz 之前在安装wfuzz时遇到很多坑,希望分享出来能解决大家的问题! 安装wfuzz之前需安装pycurl,但在安装pycurl时遇到这个问题 pycurl: libcurl link-time ssl backends (schannel) do ...
  • Web安全 --Wfuzz 使用大全

    千次阅读 2019-10-07 05:02:04
    前言: 做web渗透大多数时候bp来fuzz 偶尔会有觉得要求达不到的时候wfuzz就很有用了这时候 用了很久了这点来整理一次 wfuzz 是一款Python开发的Web安全模糊测试工具。 下载地址 ...
  • wfuzz 基本用法 暴破文件和路径 测试URL中的参数 测试POST请求 测试Cookies 测试自定义请求头 测试HTTP请求方法(动词) 使用代理 认证 递归测试 测试速度与效率 输出到文件 不同的输出 wfuzz 基本用法 暴破...
  • wfuzz 是一款Python开发的Web安全模糊测试工具
  • wfuzz教程 这个教程主要内容是来自wfuzz官方文档。之所以写这个,是因为大多数的国内文章并没有对这个工具进行详细的说明。个人英文还算可以,所以抖胆翻译一下,加上自己的一些操作,一方面加深下自己对这个工具的...
  • Wfuzz是一个基于Python的Web爆破程序,它支持多种方法来测试WEB应用的漏洞。你可以审计参数、登录认证、GET/POST方式爆破的表单,并且可以发掘未公开的资源,比如目录、文件和头部之类的。 Wfuzz是一款为了评估WEB...
  • 网站模糊测试爆破工具Wfuzz

    千次阅读 2017-07-19 14:22:18
    网站模糊测试爆破工具Wfuzz
  • 爆破工具wfuzz的使用笔记

    千次阅读 2019-04-09 21:05:57
    推荐米斯特的wfuzz手册三部曲 相关命令 -c:用颜色输出 -v:详细的信息 -o 打印机:由stderr输出格式 -p addr:使用代理(ip:port或ip:port-ip:port-ip:port) -x type:使用SOCK代理(SOCKS4,SOCKS5...
  • Wfuzz模糊测试-URL爆破扫描WFUZZwfuzz参数wfuzz使用方法1、最基本模糊测试路径,文件名,参数值2.过滤显示3.POST请求测试4.指定Cookie5.递归扫描目录总结 WFUZZ wfuzz是用python开发的针对web的模糊测试工具,该工具...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 688
精华内容 275
关键字:

wfuzz