史上最详[ZI]细[DUO]的wfuzz中文教程(三)——wfuzz 高级用法

从初识wfuzz到基本用法,使用wfuzz应对普通扫描任务已经足够了,距离完美只差《高级用法》了,一起来看!

今天给大家带来wfuzz系列的 3/4 《高级用法》。先给那些追求完美的表哥们!

  • wfuzz 高级用法
    • 0×01 wfuzz全局配置
    •     Iterators:组合payloads
    •     Encoders
      •         使用Encoder
      •         使用多个Encoder
    • 0×02 扫描/解析插件
      •         自定义插件
    • 0×03 Recipes(菜谱)
    • 0×04 扫描模式
      •         超时
    • 0×05 过滤器语法
    • 0×06 过滤结果
    • 0×07 过滤payload
      •         切片
      •         预过滤
      •         输出结果再利用

wfuzz 高级用法


wfuzz全局配置

wfuzz的全局配置文件位于~/.wfuzz/wfuzz.ini

  1. ┌─[michael@parrot]─[~/.wfuzz]
  2. └──╼ $cat wfuzz.ini
  3. [kbase]
  4. discovery.blacklist = .svg-.css-.js-.jpg-.gif-.png-.jpeg-.mov-.avi-.flv-.ico #这里配置忽略的后缀,用 - 号分隔
  5. [connection]
  6. concurrent = 50 #并发数
  7. conn_delay = 90 #连接间隔
  8. req_delay = 90 #请求间隔
  9. retries = 3 #重试次数
  10. user-agent = Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0 #UA,默认为Wfuzz/版本
  11. [general]
  12. default_printer = raw #默认输出格式
  13. cancel_on_plugin_except = 1 #插件出错则退出
  14. concurrent_plugins = 3 #最多同时指定的插件数量
  15. lookup_dirs = /usr/share/wfuzz/wordlist,. #查找字典的目录,若让wfuzz自动查找字典,则在命令行中只指定字典名字即可
  16. encode_space = 1 #编码空格
  17. [plugins]
  18. bing_apikey = #设置bing API在key

Iterators:组合payloads

不同的payload可以通过-m参数指定的方式组合起来,在wfuzz中,提供这种组合能力的功能的,我们称为迭代器。
关于wfuzz中所有可用的iterators可参考重要关键词部分。

下面我们举例说明各个iterator是如何工作的。

  • zip:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z list,a-b-c -z list,1-2-3 -m zip http://www.baidu.com/FUZZ/FUZ2Z
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://www.baidu.com/FUZZ/FUZ2Z
    7. Total requests: 3
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000001: C=302 7 L 18 W 222 Ch "a - 1"
    12. 000002: C=302 7 L 18 W 222 Ch "b - 2"
    13. 000003: C=302 7 L 18 W 222 Ch "c - 3"
    14. Total time: 0.101380
    15. Processed Requests: 3
    16. Filtered Requests: 0
    17. Requests/sec.: 29.59160
  • chain:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z list,a-b-c -z list,1-2-3 -m chain http://www.baidu.com/FUZZ
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://www.baidu.com/FUZZ
    7. Total requests: 6
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000003: C=302 7 L 18 W 208 Ch "c"
    12. 000004: C=302 7 L 18 W 222 Ch "1"
    13. 000005: C=302 7 L 18 W 222 Ch "2"
    14. 000006: C=302 7 L 18 W 222 Ch "3"
    15. 000001: C=302 7 L 18 W 222 Ch "a"
    16. 000002: C=302 7 L 18 W 222 Ch "b"
    17. Total time: 0.041357
    18. Processed Requests: 6
    19. Filtered Requests: 0
    20. Requests/sec.: 145.0780
  • product:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z list,a-b-c -z list,1-2-3 -m product http://www.baidu.com/FUZZ/FUZ2Z
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://www.baidu.com/FUZZ/FUZ2Z
    7. Total requests: 9
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000008: C=302 7 L 18 W 222 Ch "c - 2"
    12. 000009: C=302 7 L 18 W 222 Ch "c - 3"
    13. 000001: C=302 7 L 18 W 222 Ch "a - 1"
    14. 000002: C=302 7 L 18 W 222 Ch "a - 2"
    15. 000003: C=302 7 L 18 W 222 Ch "a - 3"
    16. 000004: C=302 7 L 18 W 222 Ch "b - 1"
    17. 000005: C=302 7 L 18 W 222 Ch "b - 2"
    18. 000006: C=302 7 L 18 W 222 Ch "b - 3"
    19. 000007: C=302 7 L 18 W 222 Ch "c - 1"
    20. Total time: 0.042347
    21. Processed Requests: 9
    22. Filtered Requests: 0
    23. Requests/sec.: 212.5252

Encoders

在wfuzz中,encoder的作用是将payload从一种格式转换成另一种格式。
关于wfuzz中所有可用的encoders可参考重要关键词部分。


使用Encoder

encoders是通过payload参数传进去的。有两种方法:

  • 第一种稍长:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z file --zP fn=common.txt,encoder=md5 http://testphp.vulnweb.com/FUZZ
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://testphp.vulnweb.com/FUZZ
    7. Total requests: 950
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000034: C=404 7 L 12 W 168 Ch "9cdc4bbeede81cec7451d2c84028d26e"
    12. 000035: C=404 7 L 12 W 168 Ch "b37cb0782bed24a15f24b3e16d63d6e3"
    13. 000036: C=404 7 L 12 W 168 Ch "fb61758d0f0fda4ba867c3d5a46c16a7"
    14. 000001: C=404 7 L 12 W 168 Ch "e1671797c52e15f763380b45e841ec32"
    15. 000002: C=404 7 L 12 W 168 Ch "b4b147bc522828731f1a016bfa72c073"
    16. 000003: C=404 7 L 12 W 168 Ch "96a3be3cf272e017046d1b2674a52bd3"
    17. 000004: C=404 7 L 12 W 168 Ch "a2ef406e2c2351e0b9e80029c909242d"
    18. 000005: C=404 7 L 12 W 168 Ch "e45ee7ce7e88149af8dd32b27f9512ce"
    19. 000006: C=404 7 L 12 W 168 Ch "c4ca4238a0b923820dcc509a6f75849b"
    20. ...
  • 第二种比较短的方式:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z file,common.txt,md5 http://testphp.vulnweb.com/FUZZ
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://testphp.vulnweb.com/FUZZ
    7. Total requests: 950
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000034: C=404 7 L 12 W 168 Ch "9cdc4bbeede81cec7451d2c84028d26e"
    12. 000035: C=404 7 L 12 W 168 Ch "b37cb0782bed24a15f24b3e16d63d6e3"
    13. 000036: C=404 7 L 12 W 168 Ch "fb61758d0f0fda4ba867c3d5a46c16a7"
    14. 000037: C=404 7 L 12 W 168 Ch "c33e404a441c6ba9648f88af3c68a1ca"
    15. ...

使用多个Encoder
  • 一次指定多个encoders,可以使用一个-号分隔的列表来指定,如:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z list,1-2-3,md5-sha1-none http://testphp.vulnweb.com/FUZZ
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://testphp.vulnweb.com/FUZZ
    7. Total requests: 9
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000001: C=404 7 L 12 W 168 Ch "c4ca4238a0b923820dcc509a6f75849b"
    12. 000002: C=404 7 L 12 W 168 Ch "356a192b7913b04c54574d18c28d46e6395428ab"
    13. 000005: C=404 7 L 12 W 168 Ch "da4b9237bacccdf19c0760cab7aec4a8359010b0"
    14. 000006: C=404 7 L 12 W 168 Ch "2"
    15. 000007: C=404 7 L 12 W 168 Ch "eccbc87e4b5ce2fe28308fd9f2a7baf3"
    16. 000008: C=404 7 L 12 W 168 Ch "77de68daecd823babbb58edb1c8e14d7106e83bb"
    17. 000004: C=404 7 L 12 W 168 Ch "c81e728d9d4c2f636f067f89cc14862c"
    18. 000003: C=404 7 L 12 W 168 Ch "1"
    19. 000009: C=404 7 L 12 W 168 Ch "3"
    20. Total time: 1.933195
    21. Processed Requests: 9
    22. Filtered Requests: 0
    23. Requests/sec.: 4.655503
  • 同时按顺序使用多个encoders,可以使用一个@号分隔的列表来指定,如:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z list,1-2-3,sha1-sha1@none http://testphp.vulnweb.com/FUZZ
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://testphp.vulnweb.com/FUZZ
    7. Total requests: 6
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000002: C=404 7 L 12 W 168 Ch "356a192b7913b04c54574d18c28d46e6395428ab"
    12. 000003: C=404 7 L 12 W 168 Ch "da4b9237bacccdf19c0760cab7aec4a8359010b0"
    13. 000004: C=404 7 L 12 W 168 Ch "da4b9237bacccdf19c0760cab7aec4a8359010b0"
    14. 000001: C=404 7 L 12 W 168 Ch "356a192b7913b04c54574d18c28d46e6395428ab"
    15. 000005: C=404 7 L 12 W 168 Ch "77de68daecd823babbb58edb1c8e14d7106e83bb"
    16. 000006: C=404 7 L 12 W 168 Ch "77de68daecd823babbb58edb1c8e14d7106e83bb"
    17. Total time: 0.896903
    18. Processed Requests: 6
    19. Filtered Requests: 0
    20. Requests/sec.: 6.689686

    上面参数中的sha1@none,会将payload先进行sha1,然后传给none这个encoder。

  • Encoders是分类的,我们还可以使用类型名称来指定同类的所有encoders:

    1. ┌─[michael@parrot]─[~/.wfuzz]
    2. └──╼ $wfuzz -z list,1-2-3,hashes http://testphp.vulnweb.com/FUZZ
    3. ********************************************************
    4. * Wfuzz 2.2.9 - The Web Fuzzer *
    5. ********************************************************
    6. Target: http://testphp.vulnweb.com/FUZZ
    7. Total requests: 3
    8. ==================================================================
    9. ID Response Lines Word Chars Payload
    10. ==================================================================
    11. 000002: C=404 7 L 12 W 168 Ch "c4ca4238a0b923820dcc509a6f75849b"
    12. 000003: C=404 7 L 12 W 168 Ch "356a192b7913b04c54574d18c28d46e6395428ab"
    13. 000004: C=404 7 L 12 W 168 Ch "Mg=="
    14. 000005: C=404 7 L 12 W 168 Ch "c81e728d9d4c2f636f067f89cc14862c"
    15. 000006: C=404 7 L 12 W 168 Ch "da4b9237bacccdf19c0760cab7aec4a8359010b0"
    16. 000007: C=404 7 L 12 W 168 Ch "Mw=="
    17. 000008: C=404 7 L 12 W 168 Ch "eccbc87e4b5ce2fe28308fd9f2a7baf3"
    18. 000001: C=404 7 L 12 W 168 Ch "MQ=="
    19. 000009: C=404 7 L 12 W 168 Ch "77de68daecd823babbb58edb1c8e14d7106e83bb"
    20. Total time: 1.884471
    21. Processed Requests: 9
    22. Filtered Requests: 0
    23. Requests/sec.: 4.775873

扫描/解析插件

wfuzz的扫描和解析都是通过插件来实现的。
关于wfuzz中所有可用的scripts可参考重要关键词部分。
插件脚本(scripts)是分类的。一个脚本可以同时属于多个分类。

wfuzz有两个分类:

  • passive:这些插件实现分析已经得到的请求和响应,不产生新的请求。
  • active:这些插件会向目标发送请求来探测漏洞是否存在。

还有一类附加插件:

  • discovery:这些插件会自动帮助wfuzz对目标站进行爬取,并将发现的内容提供给wfuzz进行请求。

使用-A--script=default相同。

举例来说,一个分析robots.txt的wfuzz命令如下:

  1. ┌─[michael@parrot]─[~/.wfuzz]
  2. └──╼ $wfuzz --script=robots -z list,robots.txt http://www.webscantest.com/FUZZ
  3. ********************************************************
  4. * Wfuzz 2.2.9 - The Web Fuzzer *
  5. ********************************************************
  6. Target: http://www.webscantest.com/FUZZ
  7. Total requests: 1
  8. ==================================================================
  9. ID Response Lines Word Chars Payload
  10. ==================================================================
  11. 000001: C=200 6 L 10 W 101 Ch "robots.txt"
  12. |_ Plugin robots enqueued 4 more requests (rlevel=1)
  13. 000002: C=200 40 L 117 W 1528 Ch "/osrun/"
  14. 000003: C=200 55 L 132 W 1849 Ch "/cal_endar/"
  15. 000004: C=200 40 L 123 W 1611 Ch "/crawlsnags/"
  16. 000005: C=200 85 L 197 W 3486 Ch "/static/"
  17. Total time: 1.709153
  18. Processed Requests: 5 (1 + 4)
  19. Filtered Requests: 0
  20. Requests/sec.: 2.925424

自定义插件

用户自己开发的脚本插件,应放在如下目录下:~/.wfuzz/scripts


Recipes(菜谱)

我们可以将wfuzz使用的选项保存成文档,方便下次执行和分享。

要生成一个recipes,使用下面的命令:
$ wfuzz --script=robots -z list,robots.txt --dump-recipe /tmp/recipes http://www.webscantest.com/FUZZ

要使用已经保存下来的recipes,对需要传递--recipe参数:

  1. ┌─[michael@parrot]─[~/.wfuzz]
  2. └──╼ $wfuzz --recip /tmp/recipes
  3. ********************************************************
  4. * Wfuzz 2.2.9 - The Web Fuzzer *
  5. ********************************************************
  6. Target: http://www.webscantest.com/FUZZ
  7. Total requests: 1
  8. ==================================================================
  9. ID Response Lines Word Chars Payload
  10. ==================================================================
  11. 000001: C=200 6 L 10 W 101 Ch "robots.txt"
  12. |_ Plugin robots enqueued 4 more requests (rlevel=1)
  13. 000002: C=200 40 L 117 W 1528 Ch "/osrun/"
  14. 000003: C=200 55 L 132 W 1849 Ch "/cal_endar/"
  15. 000004: C=200 40 L 123 W 1611 Ch "/crawlsnags/"
  16. 000005: C=200 85 L 197 W 3486 Ch "/static/"
  17. Total time: 1.700331
  18. Processed Requests: 5 (1 + 4)
  19. Filtered Requests: 0
  20. Requests/sec.: 2.940602

扫描模式

当出现网络问题,如DNS解析失败,拒绝连接等时,wfuzz会抛出一个异常并停止执行:

  1. ┌─[michael@parrot]─[~/.wfuzz]
  2. └──╼ $wfuzz -z list,support-web-none http://FUZZ.baidu.com/
  3. ********************************************************
  4. * Wfuzz 2.2.9 - The Web Fuzzer *
  5. ********************************************************
  6. Target: http://FUZZ.baidu.com/
  7. Total requests: 3
  8. ==================================================================
  9. ID Response Lines Word Chars Payload
  10. ==================================================================
  11. Fatal exception: Pycurl error 6: Could not resolve host: none.baidu.com

当我们使用-Z参数时,wfuzz就会忽略这些网络错误而继续执行:

  1. ┌─[michael@parrot]─[~/.wfuzz]
  2. └──╼ $wfuzz -z list,support-none -Z http://FUZZ.baidu.com/
  3. ********************************************************
  4. * Wfuzz 2.2.9 - The Web Fuzzer *
  5. ********************************************************
  6. Target: http://FUZZ.baidu.com/
  7. Total requests: 2
  8. ==================================================================
  9. ID Response Lines Word Chars Payload
  10. ==================================================================
  11. 000001: C=200 1485 L 3794 W 128348 Ch "support"
  12. 000002: C=XXX 0 L 0 W 0 Ch "none! Pycurl error 6: Could not resolve host: none.baidu.com"
  13. Total time: 3.401754
  14. Processed Requests: 2
  15. Filtered Requests: 0
  16. Requests/sec.: 0.587931

出现错误的payload会以返回码XXX来表示,Payload中还有出现的错误。

理论上,我们就可以根据这个进行过滤,但是不知为什么并不会将产生错误的结果过滤掉。
$ wfuzz -z list,support-none --hc XXX -Z http://FUZZ.baidu.com/


超时

使用--conn-delay来设置wfuzz等待web server响应接连的秒数。
使用--req-delay来设置wfuzz等待响应完成的最大秒数。
这些功能有时候会很有用,比如使用代理/某个端口/主机名/虚拟主机进行扫描时。


过滤器语法

wfuzz的过滤器是基于pyparsing开发的,所以在使用--filter--prefilter--slice之前,请先安装上pyparsing

一个过滤器表达式必须使用由以下符号或操作符构成:

  • Boolean Operators 是非操作符:andornot
  • Expression Operators 逻辑操作符:=!=<>>=<=,除此之外,还有下列用于文本的操作符:
OperatorDescription
=~符合正则表达式则为True
~等同于Python语法中的 “str2” in “str1”,不区分大小写
!~与上面一条相反,“str2” not in “str1”,不区分大小写

取值规则如下:

  • 基本规则
Long NameDescription
‘string’转码后的字符串
0..9+数字
XXXHTTP请求的错误码
BBBBaseline
  • 值还可以使用下面的操作符进行修改
NameShort versionDescription
value|unquote()value|un()将值转换为未编码的值
value|lower()value|l()将值转换为小写
value|upper()将值轮换为大写
value|encode(‘encoder’,’value’)value|e(‘enc’,’val’)返回encoder.encode(value)
value|decode(‘decoder’,’value’)value|d(‘dec’,’val’)返回encoder.decode(value)
value|replace(‘what’,’with’)value|r(‘what’,’with’)返回用with替换what后的值
value|unique(value)value|u(value)如果value唯一返回True
value|startswith(‘param’)value|sw(‘param’)如果value以param开头返回True
  • 如果wfuzz结果可用,那么还可以在运行时使用以下操作符进行检测
NameShort versionDescription
descriptionwfuzz结果的描述
nreswfuzz结果的识别码
codecHTTP返回码
charshwfuzz结果的HTTP返回字符数
lineslwfuzz结果的HTTP返回行数
wordswwfuzz结果的HTTP返回字数
md5wfuzz结果的HTTP返回的md5值
  • 或者,wfuzz请求对象的属性:
NameDescription
urlHTTP请求的值
methodHTTP请求的方法(动词)
schemeHTTP请求的协议
hostHTTP请求的主机
contentHTTP响应的响应体
raw_content包括HTTP头的HTTP响应体
cookies.request请求的cookie
cookies.response响应的cookie
cookies.request.<<name>>请求的cookie
cookies.response.<<name>>响应的cookie
headers.request所有的HTTP请求头
headers.response所有的HTTP响应头
headers.request.<<name>>某个请求头
headers.response.<<name>>某个响应头
params所有HTTP请求的GET和POST参数
params.get所有的GET请求参数
params.post所有的POST请求参数
params.get/post.<<name>>某个GET/POST请求参数

一个URL在经过urlparse模块解析之后,会被解析成很多小部分,格式为:scheme://netloc/path;parameters?query#fragment
举例来说,http://www.google.com/dir/test.php?id=1这个经过解析之后,我们可以得到如下值:

NameValue
url.schemehttp
url.netlocwww.google.com
url.path/dir/test.php
url.params
url.queryid=1
url.fragment
url.domaingoogle.com
url.ffnametest.php
url.fext.php
url.fnametest
url.pstrip返回使用去掉值之后的参数名来生成这个请求的哈希值
url.hasquery如果URL中有查询字段则返回True
url.ispath如果URL指向的是一个文件夹则返回True
url.isbllist如果一个URL的文件后缀在全局设置中的黑名单中则返回True

使用FUZZ占位符还可以对Payload进行检查:

NameDescription
FUZnZ指向第n个payload字符串
FUZnZ[field]指向第n个payload的属性

属性即上面描述的(这里这个Field没看懂…)


过滤结果

使用--filter参数加上上面的过滤器语法,我们可以写出比--hc/hl/hw/hh--sc/sl/sw/sh--ss/hs更加复杂和精细的过滤条件。
看下面的例子:

  1. ┌─[michael@parrot]─[~/.wfuzz]
  2. └──╼ $wfuzz -z range,0-10 --filter "c=200 and l>97" http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
  3. ********************************************************
  4. * Wfuzz 2.2.9 - The Web Fuzzer *
  5. ********************************************************
  6. Target: http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
  7. Total requests: 11
  8. ==================================================================
  9. ID Response Lines Word Chars Payload
  10. ==================================================================
  11. 000003: C=200 99 L 302 W 4442 Ch "2"
  12. Total time: 1.222108
  13. Processed Requests: 11
  14. Filtered Requests: 10
  15. Requests/sec.: 9.000840

利用输出结果和payload检查来找出含有某些特定内容的返回体:
$ wfuzz -z list,echoedback -d searchFor=FUZZ --filter "content~FUZZ" http://testphp.vulnweb.com/search.php?test=query

上面的命令与这条命令等价:
$ wfuzz -z list,echoedback -d searchFor=FUZZ --ss "echoedback" http://testphp.vulnweb.com/search.php?test=query

另一条更有意思的变形如下:
$ wfuzz -w fuzzdb/attack/xss/xss-rsnake.txt -d searchFor=FUZZ --filter "intext~FUZZ" http://testphp.vulnweb.com/search.php?test=query


过滤payload


切片

使用--slice参数,结合过滤器语法,我们可以对payload进行过滤。--slice参数必须在-z参数后。
看下面的例子:

  1. ┌─[michael@parrot]─[~/.wfuzz]
  2. └──╼ $wfuzz -z list,one-two-one-one --slice "FUZZ|u()" http://localhost/FUZZ
  3. ********************************************************
  4. * Wfuzz 2.2.9 - The Web Fuzzer *
  5. ********************************************************
  6. Target: http://localhost/FUZZ
  7. Total requests: <<unknown>>
  8. ==================================================================
  9. ID Response Lines Word Chars Payload
  10. ==================================================================
  11. 000001: C=404 9 L 32 W 276 Ch "one"
  12. 000002: C=404 9 L 32 W 276 Ch "two"
  13. Total time: 0.095625
  14. Processed Requests: 2
  15. Filtered Requests: 0
  16. Requests/sec.: 20.91499

预过滤

--prefilter参数与--slice相似,不过它并没有和任何payload相关。它是一个通用的过滤,在HTTP请求发送之前进行。
在这种上下文环境中,我们是在对一个FuzzResult对象进行过滤,这个对象包括所有输入的payload,且没有被与它相关连的HTTP响应更新,所以是缺少一些信息的。


输出结果再利用

之前获得的HTTP请求/响应中包含很多有价值的数据。
利用已经得到的数据,我们可以进行下列方面的挖掘:

  • 单个请求重放
  • 对比测试请求与正常请求中的响应体中的头和体
  • 从请求中查找URL中带有CSRF token的请求
  • 从返回中查找返回体为Json内容但返回头的content-type设置错误。

为了能够使用之前得到的结果,我们需要使用能够生成完整FuzzResult对象的payload。

  • wfuzzp payload
    wfuzz结果可以通过使用-oF参数进行保存:
    $ wfuzz --oF /tmp/session -z range,0-10 http://www.baidu.com/dir/test.php?id=FUZZ

  • burpstate 和 burplog payload:
    wfuzz能够读取burpsuite保存的state和日记文档,使得我们能够重复利用能够burpsuite代理生成的请求和响应信息。
    要重放burp保存的请求,我们需要在命令行中使用FUZZ占位符:

    1. $ wfuzz -z burpstate,a_burp_state.burp FUZZ
    2. $ wfuzz -z burplog,a_burp_log.burp FUZZ
    3. $ wfuzz -z wfuzzp,/tmp/session FUZZ

    之前的请求还能够像平时那样通过命令行参数进行更改,比如:

    • 增加新的header:
      $ wfuzz -z burpstate,a_burp_state.burp -H "addme: header" FUZZ
    • 使用新的cookie:
      $ wfuzz -z burpstate,a_burp_state.burp -z list,1-2-3 -b "cookie=FUZ2Z" FUZZ
    • 已经保存的HTTP请求还可以通过--prev参数被打印出来与新的结果进行比较:
      1. $ wfuzz -z burpstate,testphp.burp --slice "cookies.request and url|u()" --filter "c!=FUZZ[c]" -b "" --prev FUZZ
      2. ...
      3. 000076: C=302 0 L 3 W 14 Ch "http://testphp.vulnweb.com/userinfo.php"
      4. |__ C=200 114 L 373 W 5347 Ch "http://testphp.vulnweb.com/userinfo.php"
    • 将相同的请求发送到另一个URL上:
      $ wfuzz -z burpstate,a_burp_state.burp -H "addme: header" -u http://www.otherhost.com FUZZ

如果不想使用保存的所有请求:

  • 使用attr我们可以获得一些特定的HTTP对象内容:
    $ wfuzz -z wfuzzp,/tmp/session --zP attr=url FUZZ

  • 或者,通过FUZZ[field]的方式:
    $ wfuzz -z wfuzzp,/tmp/session FUZZ[url]

    比如,我们可以在保存的值的基础上发送新的请求:

    1. $ wfuzz -z wfuzzp,/tmp/session -p localhost:8080 http://testphp.vulnweb.com/FUZZ[url.path]?FUZZ[url.query]
    2. 00001: C=200 25 L 155 W 1362 Ch "/dir/test.php - id=0"
    3. ...
    4. 00002: C=200 25 L 155 W 1362 Ch "/dir/test.php - id=1"

    上述命令产生的HTTP请求如下 :

    1. GET /dir/test.php?id=10 HTTP/1.1
    2. Host: testphp.vulnweb.com
    3. Accept: */*
    4. Content-Type: application/x-www-form-urlencoded
    5. User-Agent: Wfuzz/2.2
    6. Connection: close

*本文作者:丁牛网安实验室 m0nst3r,如需转载请标明来自FreeBuf.com。

                    </div>
                    <div class="newlabelDiv">

                         更多精彩<a href="https://www.freebuf.com/tag/web%e5%ae%89%e5%85%a8" rel="tag">
          <div class="leftTop"></div>
  <div class="leftBottom"></div>
  <div class="leftCenter"></div>
  #&nbsp;web安全</a><a href="https://www.freebuf.com/tag/wfuzz%E6%95%99%E7%A8%8B" rel="tag">
          <div class="leftTop"></div>
  <div class="leftBottom"></div>
  <div class="leftCenter"></div>
  #&nbsp;wfuzz教程</a><a href="https://www.freebuf.com/tag/%e6%89%ab%e6%8f%8f%e5%99%a8" rel="tag">
          <div class="leftTop"></div>
  <div class="leftBottom"></div>
  <div class="leftCenter"></div>
  #&nbsp;扫描器</a>                        </div>
                    <div class="article-oper article-oper-new">
                        <style>
                            @font-face {font-family: 'iconfont';
                                src: url('https://static.3001.net/iconfonts/iconfont.eot'); /* IE9*/
                                src: url('https://static.3001.net/iconfonts/iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
                                url('https://static.3001.net/iconfonts/iconfont.woff') format('woff'), /* chrome、firefox */
                                url('https://static.3001.net/iconfonts/iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
                                url('https://static.3001.net/iconfonts/iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */
                            }
                        </style>

                        <div class="share-new clearfix" style="width: 100%; left: 0px;">
                            <div class="share-author">
                                                                        <a href="http://www.freebuf.com/author/m0nst3r" title="由 m0nst3r 发布" rel="author">
                                        <img src="https://image.3001.net/images/20180228/15197865636923.jpg!video" width="0" height="0" alt="m0nst3r" class="avatar avatar-50 wp-user-avatar wp-user-avatar-50 photo">                                            <!--							<img src="http://image.3001.net/2015/06/17.jpg" alt="ArthurKiller">-->
                                    </a>
                                    <div class="share-author-info">
                                                                                    <a class="author-name" href="http://www.freebuf.com/author/m0nst3r">m0nst3r</a>
                                        <!--<span class="icon-f"></span>-->
                                        <span>
                            <i class="colour-red">
                                4                                </i>
                            篇文章</span>
                                        <span>等级:
                            <i class="colour-green">1</i>级
                        </span>
                                    </div>
                                                                                                                <span class="btn-box btn-box-bottom pull-left">
                                        <button href="http://www.freebuf.com/oauth" class="btn-common1 btn-common3 btn-attention follow" data-login="0">关注</button>                                            </span>
                                                                </div>
                            <div class="user-center clearfix">
                                                                    <a href="http://www.freebuf.com/user/pm?pmaction=newmessage&amp;to=m0nst3r" data-toggle="tooltip" data-placement="top" title="" class="letter" target="_blank" data-original-title="私信"></a>
                            </div>
                            <div class="share-ctrl clearfix">
                                                                    <div class="bdsharebuttonbox clearfix bdshare-button-style1-24 columnstatus" data-bd-bind="1489991449190" data-column="1" data-title="史上最详[ZI]细[DUO]的wfuzz中文教程(三)——wfuzz 高级用法" data-name="Digapis安全">
                                    <a href="http://service.weibo.com/share/share.php?url=https://www.freebuf.com/column/163787.html&amp;title=史上最详[ZI]细[DUO]的wfuzz中文教程(三)——wfuzz 高级用法&amp;appkey=1343713053&amp;pic=https://image.3001.net/images/20180301/15198688336246.png!420.280&amp;searchPic=true#_loginLayer_1520574669384" data-toggle="tooltip" data-placement="top" data-cmd="tsina" title="" id="tsina" target="_blank" data-original-title="分享到新浪微博"></a>
                                    <a href="javascript:;" data-toggle="tooltip" data-placement="top" data-cmd="weixin" title="" id="weixin" class="weixin_down" data-original-title="分享到微信">

                                        <!-- 添加微信二维码显示 -->
                                        <div class="panel-weixin">
                                            <section class="weixin-section">
                                                <p>
                                                    <img src="https://my.freebuf.com/qrcode?url=https://www.freebuf.com/column/163787.html" alt="二维码">
                                                </p>
                                            </section>
                                            <h3>打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮</h3>
                                        </div>

                                    </a>
                                    <a href="https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=https://www.freebuf.com/column/163787.html&amp;title=史上最详[ZI]细[DUO]的wfuzz中文教程(三)——wfuzz 高级用法&amp;desc=快叫你的小伙伴来分享吧&amp;summary=&amp;pics=https://image.3001.net/images/20180301/15198688336246.png!420.280" data-toggle="tooltip" data-placement="top" data-cmd="qzone" title="" id="qzone" target="_blank" data-original-title="分享到QQ空间"></a>
                                    <span class="share-line">|</span>
                                </div>
                            </div>
                            <div class="user-ctrl clearfix">
                                                                        <a href="http://www.freebuf.com/oauth" id="collect" data-toggle="tooltip" data-placement="top" title="" data-original-title="收藏"></a>
                                                                    <a href="#respond" data-toggle="tooltip" data-placement="top" title="" id="comments" data-original-title="评论"></a>
                                                                    <!--					<a href="#" title="文章纠正">&#xe6e3;</a>-->
                                <span class="share-line">|</span>
                                <span class="info-alert"></span>
                            </div>
                        </div>
                        <style>
                            .share-ctrl .bdsharebuttonbox #weixin {
                                position: relative;
                            }
                            .articlecontent .panel-weixin {
                                position: absolute;
                                bottom: 25px;
                                left: -90px;
                                margin-bottom: 10px;
                                width: 210px;
                                padding: 15px;
                                border-radius: 2px;
                                box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
                                border: solid 1px #e9eaec;
                                background: #ffffff;
                                display: none;
                            }
                            .articlecontent section.weixin-section {
                                float: left;
                                width: 80px;
                                height: 80px;
                                margin-right: 10px;
                                white-space: normal;
                                overflow: hidden;
                            }
                            .articlecontent section.weixin-section img {
                                width: 100%;
                            }
                            .articlecontent .panel-weixin h3 {
                                font-size: 12px;
                                font-weight: normal;
                                line-height: 18px;
                                white-space: normal;
                                margin: 0px;
                                padding: 0px;
                                color: #000;
                            }
                        </style>
                                                    <script>

                            var column = $('.columnstatus').attr('data-column');
                            var text = '';
                            if(column){
                                var title = $('.columnstatus').attr('data-title');
                                var name = $('.columnstatus').attr('data-name');
                                text = title+' - FreeBuf专栏·'+name;
                            }

                            var direction_flag, window_w = jQuery(window).width(), afterScrollTop;
                            if(window_w <= 480) {
                                $('.share-ctrl #weixin').click(function() {
                                    layer.open({
                                        title: '提示',
                                        btnAlign: 'c',
                                        content: '请使用手机浏览器自带的分享功能分享该页面',
                                        area: '260px'
                                    });
                                });
                            }else {
                                jQuery('.share-ctrl .weixin_down').hover(function() {
                                    jQuery('.share-ctrl .panel-weixin').show();
                                }, function() {
                                    jQuery('.share-ctrl .panel-weixin').hide();
                                });
                                jQuery('.share-ctrl .weixin_up').hover(function() {
                                    jQuery('.share-ctrl .weixin_qcode').show();
                                }, function() {
                                    jQuery('.share-ctrl .weixin_qcode').hide();
                                });
                            }
                            //控制垂直方向分享模块的定位
                            function shareFixVertical(){
                                var offsetTop = jQuery(".article-oper").get(0).offsetTop;
                                var win_h = jQuery(window).height();
                                var win_w = jQuery(window).width();
                                var scrollTop = document.body.scrollTop||document.documentElement.scrollTop;
                                var _height = offsetTop-scrollTop;
                                var _flag = $('.column-article').attr('data-column');
                                if(_flag == 1) {
                                    if(_height>=win_h-660&&win_w>975){
                                        var _width = jQuery("#getWidth").innerWidth()-30;
                                        var _left = jQuery("#getWidth").offset().left+15;
                                        jQuery(".share-new").addClass("fixed");
                                        jQuery(".fixed").css({
                                            width:_width,
                                            left:_left
                                        });

                                    }else{
                                        jQuery(".share-new").removeClass("fixed");
                                        jQuery(".share-new").css({
                                            width: "100%"
                                        });
                                    }
                                }else {
                                    if(_height>=win_h-255&&win_w>975){
                                        var _width = jQuery("#getWidth").innerWidth()-30;
                                        var _left = jQuery("#getWidth").offset().left+15;
                                        jQuery(".share-new").addClass("fixed");
                                        jQuery(".fixed").css({
                                            width:_width,
                                            left:_left
                                        });

                                    }else{
                                        jQuery(".share-new").removeClass("fixed");
                                        jQuery(".share-new").css({
                                            width: "100%"
                                        });
                                    }
                                }
                            }
                            //控制水平方向分享模块的定位
                            function shareFixHorizontal(){
                                var _width = jQuery("#getWidth").innerWidth()-30;
                                var _left = jQuery("#getWidth").get(0).offsetLeft+15;
                                var win_w = document.documentElement.clientWidth || document.body.clientWidth;
                                jQuery(".fixed").css({
                                    width:_width,
                                    left:_left
                                });
                                if(win_w< 975){
                                    jQuery(".share-new").css({
                                        width: "100%",
                                        left: "0"
                                    });
                                }else{
                                    var _width = jQuery("#getWidth").innerWidth()-30;
                                    var _left = jQuery("#getWidth").get(0).offsetLeft+15;
                                    jQuery(".fixed").css({
                                        width:_width,
                                        left:_left
                                    });
                                }
                            }

                            jQuery(window).on("load",function(){
                                shareFixVertical();
                            });

                            jQuery(window).on("resize",function(){
                                shareFixHorizontal();
                            });

                            scroll( function(direction) {
                                if(direction == 'down') {
                                    jQuery(".share-new").removeClass("fixed");
                                    $(".share-new").css({
                                        width: "100%"
                                    });
                                    if(window_w <= 480) {
                                        if(afterScrollTop >= 65) {
                                            jQuery('.main-header .header').addClass('op0');
                                            jQuery('.main-header .header').removeClass('op1');
                                        }
                                    }else {
                                        jQuery('.main-header').stop().hide();
                                    }
                                }else {
                                    shareFixVertical();
                                    if(window_w <= 480) {
                                        jQuery('.main-header .header').addClass('op1');
                                        jQuery('.main-header .header').removeClass('op0');
                                    }else {
                                        jQuery('.main-header').stop().show();
                                    }
                                }
                                return direction;
                            });

                            function scroll( fn ) {
                                var beforeScrollTop = document.body.scrollTop || document.documentElement.scrollTop,
                                    fn = fn || function() {};
                                window.addEventListener("scroll", function() {
                                    afterScrollTop = document.body.scrollTop || document.documentElement.scrollTop,
                                        delta = afterScrollTop - beforeScrollTop;
                                    if( delta === 0 ) return false;
                                    direction_flag = fn( delta > 0 ? "down" : "up" );
                                    beforeScrollTop = afterScrollTop;
                                }, false);
                            }



                            //tooltips提示
                            $(function () { $("[data-toggle='tooltip']").tooltip(); });
                        </script>
                    </div>
                                                                                                                </div>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值