Skip to main content

Web application fuzzer that automatically detects and fuzzes data in HTTP requests

Project description

asdfuzz

Web application fuzzer that automatically detects and fuzzes the following data in HTTP requests:

  • URL directories,
  • URL parameters,
  • cookies,
  • form data,
  • and JSON data.

Quickstart

Install the asdfuzz package using pip (see below).

The easiest way to get started is to copy a request from the Network tab of Chrome DevTools. Select the option "Copy as fetch (Node.js)" and save the content to a file, such as: example.txt.

Run asdfuzz with the following command:

python -m asdfuzz --fetch-nodejs example.txt

Example

Example usage

The fuzzing starting point can be:

  • a raw HTTP request,
  • an OWASP ZAP message export,
  • or the content of "Copy as fetch (Node.js)" from the Network tab of Chrome DevTools.

Every individual field will be fuzzed in a separate section and the results are shown on screen. The performed requests and received responses are stored by default in a folder called asdfuzz_output/ for later reference. To skip a section while the fuzzer is already running, press [control]+[spacebar].

Individual fields in JSON data will be fuzzed recursively. If base64-urlencoded JSON data is present in parameters or cookies, this data will be fuzzed recursively as well.

Usage

Usage: python -m asdfuzz [OPTIONS]

Options:
  --filename PATH                 File containing a single HTTP request to 
                                  fuzz in raw HTTP format. [default: None]
  --zap-export PATH               File containing one or multiple HTTP
                                  requests to fuzz in OWASP ZAP message export
                                  format. [default: None]
  --fetch-nodejs PATH             File containing a single HTTP request to 
                                  fuzz in "Copy as fetch (Node.js)" format
                                  from Chrome DevTools. [default: None]
  --wordlist-file PATH            File containing the wordlist used for
                                  fuzzing. A default wordlist is used if this
                                  parameter is empty. In the wordlist, use
                                  template <original> to refer dynamically to
                                  the value in the original request.
                                  [default: None]
  --port INTEGER                  Port used for the connection.  [default:
                                  443]
  --https / --no-https            Use HTTPS.  [default: https]
  --filter-hostname-endswith TEXT
                                  Only keep requests ending with this
                                  hostname.
  --delay-seconds FLOAT           Seconds of delay between requests.
                                  [default: 0]
  --directories / --no-directories
                                  Fuzz directories in the URL.  [default:
                                  directories]
  --parameters / --no-parameters  Fuzz values of parameters in the URL.
                                  [default: parameters]
  --cookies / --no-cookies        Fuzz the values of cookies.  [default: no-
                                  cookies]
  --form-data / --no-form-data    Fuzz the values of HTTP form data.
                                  [default: form-data]
  --json-data / --no-json-data    Fuzz the values of JSON data.  [default:
                                  json-data]
  --add-header TEXT               Add an extra header to the request. For
                                  example: "Header: Value". [default: None]
  --confirmation / --no-confirmation
                                  Enter the interactive menu.  [default:
                                  confirmation]
  --output-directory PATH         Directory where the fuzzed requests and
                                  responses will be stored.  [default:
                                  asdfuzz_output]
  --debug / --no-debug            Enable debug mode.  [default: no-debug]
  --help                          Show this message and exit.

Installation

Releases are made available on PyPi. The recommended installation method is via pip:

python -m pip install asdfuzz

For a development setup, the requirements are in dev-requirements.txt. Subsequently, this repo can be locally pip-installed. Developer documentation is provided here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asdfuzz-0.1.0.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

asdfuzz-0.1.0-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file asdfuzz-0.1.0.tar.gz.

File metadata

  • Download URL: asdfuzz-0.1.0.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for asdfuzz-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e7b4ded9455e3ac11246ae62a9b3b6a8c4ad2fbf1cea89e25a6c7354fafdfbea
MD5 1f31647368f0d7edc8103e0d5b480cc2
BLAKE2b-256 e2773196323e8510a56c8ab81078a8fe719a8954b44bc59ff1ba73fc55e5d72b

See more details on using hashes here.

File details

Details for the file asdfuzz-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: asdfuzz-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for asdfuzz-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6725598ed35df4cd9c06d439918936e3a0cff9ed58aed91868bfe46ee2a90773
MD5 9a28e7c3e4468d9509102e826843dd3f
BLAKE2b-256 681ac1072edf89969ba8dde61ccec45773e02e4b9b8f5a744482908afe19d74f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page