Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ethicalhackingplayground/pathbuster

A path-normalization pentesting tool.
https://github.com/ethicalhackingplayground/pathbuster

bug-bounty path-normalization rust url-filter-bypass

Last synced: 18 days ago
JSON representation

A path-normalization pentesting tool.

Awesome Lists containing this project

README

        

pathbuster


A path-normalization pentesting tool









---


Whats New
Bug Fixes
Installation
Usage
Examples
Contributing
License
Join Discord

---

## What's New?

- [x] Removed redundant **--filter-status** which filtered the status codes but also missed a ton of valid findings.
- [x] Removed redundant **--filter-body-size** which filtered the response sizes but also missed a ton of valid findings.
- [x] Implemented **--drop-after-fail** which will ignore requests with the same response code multiple times in a row.
- [x] Added in a **--proxy** argument, so you can now perform proxy-related tasks such as sending everything to burp.
- [x] Pathbuster will now give you an eta on when the tool will finish processing all jobs.
- [x] Added in a **--skip-brute** argument, so you have the choice to perform a directory brute force or not.
- [x] Replaced **--match-status** with **--pub-status** and **--int-status** so we have more control over the detection stage.
- [x] Added in a **--skip-validation** argument which is used to bypass known protected endpoints using traversals.
- [x] Added in a **--header** argument which is used to add in additonal headers into each request.
---

## Bug fixes?

- [x] Fixed a bug with the ETA, it would not produce the correct results.
- [x] Fixed a bug with the **--proxy** argument as well as some other small bugs.
- [x] Fixed a ton of performance issues and included directory bruteforcing at the end.
- [x] Massive performance and accuracy increases using itertools instead of double for loops reducing O(n^2) time complexity.
---

## Installation

Install rust

```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

Install pathbuster

```bash
cargo install pathbuster
```

## Usage

```bash
pathbuster -h
```

This command will show the tool's help information and present a list of all the switches that are available.

```
USAGE:
pathbuster [OPTIONS] --urls --payloads --wordlist

OPTIONS:
-u, --urls
the url you would like to test

-r, --rate
Maximum in-flight requests per second

[default: 1000]

--skip-brute
skip the directory bruteforcing stage

--drop-after-fail
ignore requests with the same response code multiple times in a row

[default: 302,301]

--int-status
the internal web root status

[default: 404,500]

--pub-status
the public web root status

[default: 400]

-p, --proxy
http proxy to use (eg http://127.0.0.1:8080)

-s, --skip-validation
this is used to bypass known protected endpoints using traversals

-c, --concurrency
The amount of concurrent requests

[default: 1000]

--timeout
The delay between each request

[default: 10]

--header
The header to insert into each request

[default: ]

-w, --workers
The amount of workers

[default: 10]

--payloads
the file containing the traversal payloads

[default: ./payloads/traversals.txt]

--wordlist
the file containing the wordlist used for directory bruteforcing

[default: ./wordlists/wordlist.txt]

-o, --out
The output file

-h, --help
Print help information

-V, --version
Print version information
```

## Flags

| Flag | Description |
| ----------------- | ------------------------------------------------------------------ |
| --urls | the file containing the urls to test make sure it contains a path
| --payloads | file containing the payloads to test |
| --int-status | used to match the status codes for identifying the internal web root |
| --pub-status | used to match the status codes for identifying broken path normalization |
| --drop-after-fail | specify a status code to ignore if it reoccurs more than 5 times in a row |
| --rate | used set the maximum in-flight requests per second |
| --workers | number of workers to process the jobs |
| --timeout | the delay between each request |
| --concurrency | number of threads to be used for processing |
| --wordlist | the wordlist used for directory bruteforcing |
| --proxy | http proxy to use (eg http://127.0.0.1:8080) |
| --header | The header to insert into each request |
| --skip-brute | use to skip the directory brute forcing stage |
| --skip-validation | this is used to bypass known protected endpoints using traversals |
| --out | save output to a file |
| --help | prints help information |
| --version | prints version information |

## Examples

Usage:

```rust
$ pathbuster --urls crawls.txt --payloads traversals.txt --wordlist wordlist.txt -o output.txt
```

![Screenshot](screenshots/screenshot.png)

If you find any cool bugs, it would be nice if I have some sorta appreciation such as shouting me out on your Twitter, buying me a coffee or donating to my Paypal.

[![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/SBhULWm) [![PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://www.paypal.com/paypalme/cyberlixpty)

I hope you enjoy

## Contributing

Pull requests are welcome. For major changes, please open an issue first
to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

Pathbuster is distributed under [MIT License](https://github.com/ethicalhackingplayground/pathbuster/blob/main/LICENSE)