Web漏洞扫描的工具–WFuzz


Wfuzz(一款支持各种Web漏洞扫描的工具)

Wfuzz是一款Web应用程序暴力破解工具。它可以通过遍历以发现隐藏的资源(例如:目录、脚本和servlets等)。Wfuzz能够穷举GET和POST参数,用于检测不同类型的注入,它还能够暴力破解Form参数,如用户名/密码(User/Password)、Fuzzing等。

Wfuzz is a tool designed to brutefore web applications, it’s very flexible, it supports:

-Recursion (When doing directory discovery)
-Post data bruteforcing
-Header bruteforcing
-Output to HTML (easy for just clicking the links and checking the page, even with postdata!)
-Colored output
-Hide results by return code, word numbers, line numbers, etc.
-Url encoding
-Cookies
-Multithreading
-Proxy support
-All parameter fuzzing

It was created to facilitate the task in web applications assessments, it’s a tool by pentesters for pentesters 😉

所以,如果你觉得合适的话,可以试试,使用方法/选项如下:
——————

The tool is based on dictionaries or ranges, then you choose where you want to bruteforce just by replacing the value by the word FUZZ.(WFuzz是基于 字典or排列组合 的暴力猜解,你只要将下面的FUZZ替换成对应的方式即可。)

使用样例:

- wfuzz.py -c -z file,wordlists/commons.txt --hc 404 -o html http://www.mysite.com/FUZZ 2> results.html

This will bruteforce the site http://www.mysyte.com/FUZZ in search of resources i
(directories, scripts, files,etc), it will hide from the output the return code 404
(for easy reading results), it will use the dictionary commons.txt for the bruteforce
, and also will output the results to the results.html file (with a cool format to work).

- wfuzz.py -c -z range,1-100 --hc 404 http://www.mysite.com/list.asp?id=FUZZ
In this example instead of using a file as dictionary, it will use a range from 1-100,
and will bruteforce the parameter "id".

- wfuzz.py -c -z file,wordlists/commons.txt --hc 404 --html -d "id=1&catalogue=FUZZ"
http://www.mysite.com/check.asp 2> results.html
Here you can see the use of POST data, with the option "-d".

- wfuzz.py -c -z file, wordlists/commons.txt --hc 404 -R 2 http://www.mysite.com/FUZZ
Example of path discovery, using a recursive level of 2 paths.

- wfuzz.py -z file,wordlists/http_methods.txt -X http://testphp.vulnweb.com/
HTTP method scanning example

- wfuzz.py -z file,wordlists/http_methods.txt -z file,wordlists/commons.txt -X http://testphp.vulnweb.com/FUZ2Z/
HTTP method scanning example in several paths

- wfuzz.py -z list,TRACE -X http://testphp.vulnweb.com/
Scanning for TRACE method using a list payload

- wfuzz.py -c -z file,wordlists/methods.txt --hc 404 -v --follow http://www.mysite.com/FUZZ
Bruteforce following HTTP redirects

- wfuzz.py -c -z file,wordlists/commons.txt --hc 404 -I http://www.mysite.com/FUZZ
Bruteforce using HEAD HTTP method

- wfuzz.py -z list,http://mysite.com -z list,dir-dir2-dir3 FUZZ/FUZ2Z
Bruteforce using URL as payload and a list of directories.

- wfuzz.py -z list,..,double_nibble_hexa@second_nibble_hexa@uri_double_hexadecimal@uri_hexadecimal@first_nibble_hexa@none http://mysite.com/FUZZ/jmx-console
Bruteforce using multiple encodings per payload.

- wfuzz.py -z list,dir1-dir2 -z file,wordlist/general/common.txt -z list,jsp-php-asp -z range,1-40 http://localhost/FUZZ/FUZ2Z.FUZ3Z?id=FUZ4Z
Fuzzing using 4 payloads

- wfuzz.py -z -c -z range,1-10 --hc=BBB http://mysite.com/FUZZ{directory}
Baseline support, Bruteforcing and hiding the response codes that are equal to http://mysite.com/directory

- Combining payloads using iterators:

zip

- wfuzz.py -z list,a-b-c -z list,1-2-3 -m zip http://mysite.com/FUZZ/FUZ2Z

Target: http://mysite.com/FUZZ/FUZ2Z
Payload type: list,a-b-c; list,1-2-3

Total requests: 3
==========================================================
ID Response Lines Word Chars Request
==========================================================

00001: C=404 9 L 32 W 276 Ch "a - 1"
00002: C=404 9 L 32 W 276 Ch "c - 3"
00003: C=404 9 L 32 W 276 Ch "b - 2"


chain

- wfuzz.py -z list,a-b-c -z list,1-2-3 -m chain http://mysite.com/FUZZ/FUZ2Z

Target: http://mysite.com/FUZZ/FUZ2Z
Payload type: list,a-b-c; list,1-2-3

Total requests: 6
==========================================================
ID Response Lines Word Chars Request
==========================================================

00001: C=404 9 L 32 W 280 Ch "b"
00002: C=404 9 L 32 W 280 Ch "a"
00003: C=404 9 L 32 W 280 Ch "c"
00004: C=404 9 L 32 W 280 Ch "1"
00006: C=404 9 L 32 W 280 Ch "3"
00005: C=404 9 L 32 W 280 Ch "2"


product

- wfuzz.py -z list,a-b-c -z list,1-2-3 http://mysite.com/FUZZ/FUZ2Z

Target: http://mysite.com/FUZZ/FUZ2Z
Payload type: list,a-b-c; list,1-2-3

Total requests: 9
==========================================================
ID Response Lines Word Chars Request
==========================================================

00001: C=404 9 L 32 W 276 Ch "a - 2"
00002: C=404 9 L 32 W 276 Ch "a - 1"
00005: C=404 9 L 32 W 276 Ch "b - 2"
00004: C=404 9 L 32 W 276 Ch "a - 3"
00008: C=404 9 L 32 W 276 Ch "c - 2"
00003: C=404 9 L 32 W 276 Ch "b - 1"
00007: C=404 9 L 32 W 276 Ch "c - 1"
00006: C=404 9 L 32 W 276 Ch "b - 3"
00009: C=404 9 L 32 W 276 Ch "c - 3"

 

Dependencies:
————

On *nix systems, need pycurl to work.
On Windows just run the wfuzz.exe

——

The wordlist directory includes FuzzDB project:

http://code.google.com/p/fuzzdb/

 

下载地址:

https://wfuzz.googlecode.com/files/wfuzz-2.0.tgz

再加上两篇PDF文档介绍/说明:

https://wfuzz.googlecode.com/files/wfuzzforpentester2011.pdf
https://wfuzz.googlecode.com/files/Blackhat%20Arsenal%202.pdf

,

《 “Web漏洞扫描的工具–WFuzz” 》 有 9 条评论

  1. 安全行业从业人员自研开源扫描器合集(2017/01/11更新)
    http://www.mottoin.com/94492.html
    `
    子域名枚举类
    数据库漏洞扫描类
    弱口令或信息泄漏扫描类
    物联网设备扫描
    xss扫描器
    企业网络自检
    webshell检测
    内网渗透
    代码静态扫描、代码运行栈跟踪
    中间件扫描、指纹识别类
    专用扫描器
    无线网络渗透、扫描
    模块化扫描、综合扫描器
    `

  2. 适用于Node.js应用的静态代码扫描器(NodeJsScan is a static security code scanner for Node.js applications.)
    https://github.com/ajinabraham/NodeJsScan
    从零开始学习渗透Node.js应用程序
    https://bbs.ichunqiu.com/thread-21810-1-1.html

    提供Web界面的源码漏洞扫描器(Web-based Source Code Vulnerability Scanner)
    https://github.com/dpnishant/raptor

    一个JavaScript的静态安全分析工具(a javascript static security analysis tool)
    https://github.com/dpnishant/jsprime

  3. 分布式Web漏洞扫描服务建设实践系列
    https://mp.weixin.qq.com/s/FLFm9KRYQdS5HDYslaL98w
    `
    在大型互联网公司中,面对5万+域名、7千万+的url,同时线上服务各种开源软件随意使用,各团队研发实力及各服务承压能力参差不齐,在人力极其有限的情况下,漏洞检测想做好其实压力和挑战非常大。你经常需要反省为啥漏洞发现时间滞后于外界白帽子,为啥漏洞未被扫描发现;如何保证扫描的超高准确率,如何保证线上扫描不影响服务正常运行;扫描存在异常时如何监控报警并自动恢复,外界爆出0day时如何做到不影响正在运行的扫描任务而通过调度使应急任务得到快速响应执行,扫描框架或POC更新时如何热备自动上线,如此等等;这里面的任何一点想做好挑战和困难都挺大,我们经过几年的实践,在这些方面有了一些自己的感悟,这里分享给大家。

    扫描架构及突出问题点:
    (1)扫描漏报排查(在各个可能出现错误、异常的点加入log)
    (2)异常监控及诊断恢复(根据添加的log及记录的时间来判断是否发生异常;如果有,则重新扫描以自动恢复)
    (3)扫描优先级(多级队列)
    (4)热备上线(通过内置升级更新模块,做到在不干扰当前运行任务情况下,更新节点扫描镜像,热备上线)

    数据中心建设:
    URL解析、去重——针对每条URL,去掉参数值并根据key进行排序,计算hash
    计算hash的时候还需要考虑几种特殊case:
    path中含有随机字符串;
    本质我们其实是需要一种方法去判别path中伪静态的部分(最终通过引入Markov Chain来进行区分,基本可以解决);
    除了去重去脏外,还需要定期对库中已存在的url进行存活判断、404判断等,针对这部分url需要定期进行删除处理;不过url存活判断务必放在扫描脏数据净化之后(特指带有扫描攻击payloads的url),不然你可能会不幸成为攻击者攻击自身业务的帮手。
    `

  4. 分布式Web漏洞扫描服务建设实践—衡量指标及解决实践(2)
    https://mp.weixin.qq.com/s/P9LJe2ZFbgdB2FkD2km5WA
    `
    一款扫描产品上线后,我们经常会反思到底做得怎么样呢?那么如何去衡量一款扫描器的优劣呢?我们确定了几个指标:准确率、扫描及时度及自主发现率,通俗来讲就是如何更快、更全、更准、更智能的去扫描,或者说如何能达到一种完美的平衡,下面从这四个维度去阐述一下我们的实践及思考。

    二、衡量指标及解决思路
    (一)更快(扫描及时度)
    1.降低扫描量
    (1)抽取待扫描URL(根据 访问量 进行判断)
    (2)分阶段进行(根据 新增 or 存量 进行判断)
    (3)分类进行(根据 业务重要性 进行判断)
    2.降低poc发包量(精炼通用、特定poc,减少发包次数)
    3.限速(不同业务线抗压能力相差甚远,统一按照50QPS进行限速将严重影响扫描速度,这里急需根据不同业务线进行逐个的限速设置……)

    (二)更全(自主发现率)
    更全:主要关注漏报率,反过来说就是主动发现率;造成漏报概括起来就两点:第一扫描能力不覆盖,第二能力覆盖,但是由于缺乏输入源或者平台产生异常。为了做到更全,我们就需要考虑:
    覆盖能覆盖的一切Web漏洞类型;
    收集最全的url作为扫描输入源;
    建立完善的监控追踪体系,实时监控,第一时间恢复。

    为了解决这些难题,我们的思路是:
    1.规则收集
    2.非传统扫描方式
    3.数据中心
    4.异常监控

    (三)更准(准确率)
    更准:主要指准确率,要求更低的误报,误报产生的原因很多,这里仅列几点说明:
    1.扫描方式引起
    2.扫描规则引起
    3.漏洞类型引起
    4.扫描性能引起

    (四)更智能
    1.热备上线
    2.扫描能力自我完善
    3.异常自动诊断恢复

    “扫描技术虽已成熟,但只有精心耕耘方能知晓其精髓,而刚触及其精髓才知挑战依旧”
    `

  5. Web应用组件自动化发现的探索
    https://security.tencent.com/index.php/blog/msg/201
    `
    # 引子
    提到Web指纹识别,大家并不陌生,相关的项目汗牛充栋,比如知名的Wappalyzer、WhatWeb等。而在运营上,各企业也都大同小异,利用提前构建好指纹库,通过对公司全域资产进行扫描实现对公司资产的摸底排查,当某些组件出现高危漏洞时,大家可以第一时间做到攻击面的迅速收敛。

    但是本文所聊的Web应用组件,并不是单指指纹识别中的小组件,比如jQuery、Bootstrap等,更多是指这个站点较为独立的应用本身。举个例子来说,一个站点是phpMyAdmin搭建的,虽然使用了jQuery,但是我们仍然将该Web应用组件归类为phpMyAdmin。

    为何要进行这样的定义呢?这其实主要是为了解决高风险Web应用组件对外的问题,长期以来,我们运营中发现部分业务使用了诸如phpMyAdmin、Kibana、Eleastic Search等Web应用组件并直接对公网开放,而这些组件可能存在弱口令或者未授权,由此导致了安全事件,为了化被动为主动,所以我们联合应用安全团队一起维护了一份公司高风险Web应用组件黑名单,建议业务尽量避免使用此类组件,尤其是避免在公网开放。

    众所周知,每一项措施的出现,其实都要伴随着不断的核查,否则其实是没有什么效力的。所以在运营上,我们通过公司自研扫描器洞犀的主动发现结合宙斯盾流量分析系统的被动发现实现对业务的高风险Web应用组件的运营,并获得了不错的效果。

    ……

    # 结语
    我们上述使用的数据集是公网IP的HTTP响应的数据,如果直接用来作为公司高危组件的新增发现其实有点大材小用了,这部分数据从用途来说,更多的可以用来了解全球开源Web应用组件的发展趋势、占比等。如果希望摸底公司现状,并且对一些未知的高危组件做到提前收敛,那么只需要使用公司全域的HTTP响应流量即可,另外值得一提的是,为了应对js动态网页的问题,强烈建议使用Chrome浏览器无头模式,这种方式虽然效率不是最好,但是针对公司的体量来说足够了,更何况,准确性还得到了很大的提升。

    本文仅作为Web应用组件的自动化发现的探索,其中有些实践并不成熟,更是有一些悬而未决的问题,欢迎各位志士同仁交流!
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注