Skip to content
Pinaki Mondal edited this page Oct 27, 2019 · 4 revisions

Arguments List

$ wafw00f -h

                    ______
                   /      \
                  (  Woof! )
                   \______/                      )
                   ,,                           ) (_
              .-. -    _______                 ( |__|
             ()``; |==|_______)                .)|__|
             / ('        /|\                  (  |__|
         (  /  )        / | \                  . |__|
          \(_)_))      /  |  \                   |__|

   WAFW00F - Web Application Firewall Detection Tool (v2.0.0)

Usage: wafw00f url1 [url2 [url3 ... ]]
Example: wafw00f http://www.victim.org/

Options:
  -h, --help            show this help message and exit
  -v, --verbose         Enable verbosity, multiple -v options increase
                        verbosity
  -a, --findall         Find all WAFs which match the signatures, do not stop
                        testing on the first one
  -r, --noredirect      Do not follow redirections given by 3xx responses
  -t TEST, --test=TEST  Test for one specific WAF
  -l, --list            List all WAFs that WAFW00F is able to detect
  -p PROXY, --proxy=PROXY
                        Use an HTTP proxy to perform requests, examples:
                        http://hostname:8080, socks5://hostname:1080,
                        http://user:pass@hostname:8080
  -V, --version         Print out the current version of WafW00f and exit.
  -H HEADERS, --headers=HEADERS
                        Pass custom headers via a text file to overwrite the
                        default header set.

Testing a Single URL

The URL can be directly supplied to the script after WAFW00F has been built and installed on the system.

wafw00f http://example.com

Testing Multiple URLs

Multiple URLs can be supplied one after another using spaces.

wafw00f http://example.com http://host.com http://site.tld

Listing All Supported WAFs

Option: -l or --list

This option lists all the available supported WAF products by WAFW00F. With this option the companies manufacturing the WAF product can also be viewed alongside the WAF name.

wafw00f --list

Adding Custom Headers

Option: -H or --headers

WAFW00F has its own set of default headers by which it makes the requests. The headers are specifically suited for emulating a Chrome browser running on a Windows platform. This option enables you to supply a comma separated list of custom headers which you might want WAFW00F to use during all requests.

wafw00f http://example.com -H headers.txt

NOTE: The headers which you will supply will overwrite the list of default headers.

Using Proxies

Option: -p or --proxy

With this option, you can use proxies to route the requests through. The scheme should be in the normal URL format <scheme>://<username:password>@<hostname>:<port>, where the username and password can be used in cases where the proxy server supports authentication.

wafw00f http://example.com -p http://user:pass@127.0.0.1:8080

Testing For A Single WAF Instance

Option: -t or --test

This option helps you set WAFW00F to test for a single instance of a WAF. When this argument is supplied, WAFW00F will test and try to match the fingerprint for the given WAF only. The supplied WAF name should be equal to at least one of the names within wafprio.py. You can use the --list argument to list the products supported by the WAF.

wafw00f http://example.com -t 'Edgecast (Verizon Digital Media)'

Testing For All Possible WAF Instances

Option: -a or --findall

This option helps set WAFW00F on a run and lets you enumerate all possible instances of a WAF on the site being tested. The logic behind this is that WAFW00F continues testing and matching fingerprints throughout its database and doesn't exclusively stop on the first matched instance.

wafw00f http://example.com -a

Controlling Verbosity

Option: -v ...

This option helps set the verbosity level of the output. You can supply multiple instances of the argument for a better verbose output. More the number of -vs, more verbose is the output.

wafw00f http://example.com -v -v

Version & License

Option: -V or --version

This option displays the current version of WAFW00F from wafw00f/__init__.py which you're using.

wafw00f --version

WAFW00F Wiki Index

Clone this wiki locally