URLBuster : Powerful Mutable Web Directory Fuzzer To Bruteforce

URLBuster is a powerful web directory fuzzer to locate existing and/or hidden files or directories. Similar to dirb or gobuster, but with a lot of mutation options.

Installation

pip install urlbuster

Features

  • Proxy support
  • Cookie support
  • Basic Auth
  • Digest Auth
  • Retries (for slow servers)
  • Persistent and non-persistent HTTP connection
  • Request methods: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
  • Custom HTTP header
  • Mutate POST, PUT and PATCH payloads
  • Mutate with different request methods
  • Mutate with different HTTP headers
  • Mutate with different file extensions
  • Mutate with and without trailing slashes
  • Enumerate GET parameter values

Usage

Usage: urlbuster [options] -w /-W BASE_URL
urlbuster -V, –help
urlbuster -h, –version
URL bruteforcer to locate existing and/or hidden files or directories.
Similar to dirb or gobuster, but also allows to iterate over multiple HTTP request methods,
multiple useragents and multiple host header values.

Positional Arguments:
BASE_URL The base URL to scan.

Required Arguments:
-w str, –word str Word to use.
-W f, –wordlist f Path to wordlist to use.

Optional Global Arguments:
-n, –new Use a new connection for every request.
If not specified persistent http connection will be used for all requests.
Note, using a new connection will decrease performance,
but ensure to have a clean state on every request.
A persistent connection on the other hand will use any additional cookie values
it has received from a previous request.
-f, –follow Follow redirects.
-k, –insecure Do not verify TLS certificates.
-v, –verbose Show also missed URLs.
–code str [str …] HTTP status code to treat as success.
You can use a ‘.’ (dot) as a wildcard.
Default: 2.. 3.. 403 407 411 426 429 500 505 511
–payload p [p …] POST, PUT and PATCH payloads for all requests.
Note, multiple values are allowed for multiple payloads.
Note, if duplicates are specified, the last one will overwrite.
See –mpayload for mutations.
Format: = [=]
–header h [h …] Custom http header string to add to all requests.
Note, multiple values are allowed for multiple headers.
Note, if duplicates are specified, the last one will overwrite.
See –mheaders for mutations.
Format: : [:]
–cookie c [c …] Cookie string to add to all requests.
Format: = [=]
–proxy str Use a proxy for all requests.
Format: http://:
Format: http://:@:
Format: https://:
Format: https://:@:
Format: socks5://:
Format: socks5://:@:
–auth-basic str Use basic authentication for all requests.
Format: :
–auth-digest str Use digest authentication for all requests.
Format: :
–timeout sec Connection timeout in seconds for each request.
Default: 5.0
–retry num Connection retries per request.
Default: 3
–delay sec Delay between requests to not flood the server.
–output file Output file to write results to.

Optional Mutating Arguments:
The following arguments will increase the total number of requests to be made by
applying various mutations and testing each mutation on a separate request.

–method m [m …] List of HTTP methods to test each request against.
Note, each supplied method will double the number of requests.
Supported methods: GET POST PUT DELETE PATCH HEAD OPTIONS
Default: GET
–mpayload p [p …] POST, PUT and PATCH payloads to mutate all requests..
Note, multiple values are allowed for multiple payloads.
Format: = [=]
–mheader h [h …] Custom http header string to add to mutate all requests.
Note, multiple values are allowed for multiple headers.
Format: : [:]
–ext ext [ext …] List of file extensions to to add to words for testing.
Note, each supplied extension will double the number of requests.
Format: .zip [.pem]
–slash str Append or omit a trailing slash to URLs to test.
Note, a slash will be added after the extensions if they are specified as well.
Note, using ‘both’ will double the number of requests.
Options: both, yes, no
Default: no

Misc Arguments:
-h, –help Show this help message and exit
-V, –version Show version information

Examples
urlbuster -W /path/to/words http://example.com/
urlbuster -W /path/to/words http://example.com:8000/
urlbuster -k -W /path/to/words https://example.com:10000/

Mutation Example

Some websites behave differently for the same path depending on the specified user agent.

$ urlbuster \
-W /usr/share/dirb/wordlists/common.txt \
–mheader ‘User-Agent:Googlebot/2.1 (+http://www.googlebot.com/bot.html)’ \
–method ‘POST,GET,DELETE,PUT,PATCH’ \
http://www.domain.tld/

Examples

Default Usage

  • Basic
$ urlbuster \
  -W /path/to/wordlist.txt \
  http://www.domain.tld/
  • Proxy through Burpsuite
$ urlbuster \
  -W /path/to/wordlist.txt \
  --proxy 'http://localhost:8080' \
  http://www.domain.tld/
  • Save results to file
$ urlbuster \
  -W /path/to/wordlist.txt \
  --output out.txt \
  http://www.domain.tld/
  • Scan behind Basic Auth
$ urlbuster \
  -W /path/to/wordlist.txt \
  --auth-basic 'user:pass' \
  http://www.domain.tld/
  • Use session cookie
$ urlbuster \
  -W /path/to/wordlist.txt \
  --cookie 'PHPSESSID=a79b00e7-035a-2bb4-352a-439d855feabf' \
  http://www.domain.tld/

Find files

  • Find files in root directory
$ urlbuster \
  -W /path/to/wordlist.txt \
  --code 200 301 302 \
  --ext .zip .tar .tar.gz .gz .rar \
  http://www.domain.tld/
  • Find files in sub directory
$ urlbuster \
  -W /path/to/wordlist.txt \
  --code 200 301 302 \
  --ext .zip .tar .tar.gz .gz .rar \
  http://www.domain.tld/wp-content/

Advanced usage

  • Bruteforce query parameter
$ urlbuster \
  -W /path/to/wordlist.txt \
  --method GET \
  --code 200 301 302 \
  http://www.domain.tld/search?q=
  • Bruteforce POST requests
$ urlbuster \
  -W /path/to/wordlist.txt \
  --code 200 301 302 \
  --method POST \
  --payload \
    'user=somename' \
    'pass=somepass' \
    'mail=some@mail.tld' \
    'submit=yes' \
  http://www.domain.tld/
  • Bruteforce mutated POST requests
$ urlbuster \
  -w index.php \
  --code 200 301 302 \
  --method POST \
  --mpayload \
    'user=somename1' \
    'user=somename2' \
    'user=somename3' \
    'pass=somepass1' \
    'pass=somepass2' \
    'pass=somepass3' \
    'mail=some@mail1.tld' \
    'mail=some@mail2.tld' \
    'mail=some@mail3.tld' \
    'submit=yes' \
  http://www.domain.tld/wp-admin/
  • Useragent SQL injections
$ urlbuster \
  -W /path/to/wordlist.txt \
  --code 5.. \
  --method GET POST \
  --mheader \
    "User-Agent: ;" \
    "User-Agent: ' or \"" \
    "User-Agent: -- or #" \
    "User-Agent: ' OR '1" \
    "User-Agent: ' OR 1 -- -" \
    "User-Agent: \" OR 1 = 1 -- -" \
    "User-Agent: '='" \
    "User-Agent: 'LIKE'" \
    "User-Agent: '=0--+" \
    "User-Agent:  OR 1=1" \
    "User-Agent: ' OR 'x'='x" \
    "User-Agent: ' AND id IS NULL; --" \
  http://www.domain.tld/
  • Find potential vhosts
$ urlbuster \
  -w / \
  --method GET POST \
  --mheader \
    "Host: internal1.lan" \
    "Host: internal2.lan" \
    "Host: internal3.lan" \
    "Host: internal4.lan" \
    "Host: internal5.lan" \
    "Host: internal6.lan" \
  http://10.0.0.1

Cytopiy Sec Tools

Below is a list of sec tools and docs I am maintaining.

NameCategoryLanguageDescription
offsecDocumentationMarkdownOffsec checklist, tools and examples
header-fuzzEnumerationBashFuzz HTTP headers
smtp-user-enumEnumerationPython 2+3SMTP users enumerator
urlbusterEnumerationPython 2+3Mutable web directory fuzzer
netcatPivotingPython 2+3Cross-platform netcat
badcharsReverse EngineeringPython 2+3Badchar generator
fuzzaReverse EngineeringPython 2+3TCP fuzzing tool
R K

Recent Posts

Kali Linux 2024.4 Released, What’s New?

Kali Linux 2024.4, the final release of 2024, brings a wide range of updates and…

4 hours ago

Lifetime-Amsi-EtwPatch : Disabling PowerShell’s AMSI And ETW Protections

This Go program applies a lifetime patch to PowerShell to disable ETW (Event Tracing for…

4 hours ago

GPOHunter – Active Directory Group Policy Security Analyzer

GPOHunter is a comprehensive tool designed to analyze and identify security misconfigurations in Active Directory…

2 days ago

2024 MITRE ATT&CK Evaluation Results – Cynet Became a Leader With 100% Detection & Protection

Across small-to-medium enterprises (SMEs) and managed service providers (MSPs), the top priority for cybersecurity leaders…

5 days ago

SecHub : Streamlining Security Across Software Development Lifecycles

The free and open-source security platform SecHub, provides a central API to test software with…

1 week ago

Hawker : The Comprehensive OSINT Toolkit For Cybersecurity Professionals

Don't worry if there are any bugs in the tool, we will try to fix…

1 week ago