⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⡿⢿⡿⠃⠀⡐⠀⠘⡻⠿⠋⠛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡏⠈⣤⡝⠛⢻⣷⡆⠀⠀⠀⠀⠀⣤⣧⠀⠀⠀⠀⠚⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡇⡀⠀⢴⣮⡀⠉⠁⠀⠀⠀⠀⠁⣹⠛⠋⠉⣰⢄⣠⣿⣿⣿⣿⣿⡿⡿⠿⢿⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⡿⠿⢇⣗⠀⢈⠙⣷⠀⡐⢀⠀⡀⠀⢀⣴⣦⡄⢂⢀⣺⣿⣿⣿⣿⠏⠁⣠⣤⣤⣤⣭⣕⡲⣌⡋⠻⠿⠿⠿⠛⠛⣛ ⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠾⢯⡙⢇⠀⢃⢀⣀⠢⡿⠋⢐⠶⠇⣿⣿⣿⣿⠟⠁⣺⣿⣿⣿⣿⣿⣿⣿⣷⣵⡛⣃⣀⣠⣀⣠⣾⣿ ⣿⣿⣿⣿⣿⣷⠀⠀⢸⣦⠀⠀⠉⠂⠁⢆⣌⠆⡆⢷⡍⠹⠷⠸⠿⠿⠏⠁⣤⡌⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣆⠀⠀⠻⣷⣦⡀⠀⢠⠂⢾⠀⠀⠀⠀⢀⠂⠀⣤⣶⣾⣿⣿⣿⣶⣤⣤⣤⣨⡙⢿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠚⠋⢠⣾⣿⡼⣹⣮⣤⣰⡶⠏⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣼⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⡿⢡⣏⡇⠀⠀⠀⢀⢰⣰⢿⡛⠣⠆⢿⣿⣿⠇⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⡇⣸⡇⠿⠀⠀⠀⡀⠸⡀⠘⠃⠀⠀⢾⢿⠇⠀⠀⠀⢀⢰⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⢃⣿⡻⡀⣣⠀⠀⠀⠂⠁⠈⠈⠀⠘⠀⠄⣽⠐⠃⠀⠈⡈⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⠸⣿⣷⢄⠀⠱⡄⠀⠀⠀⢿⣷⣷⠀⠔⠈⠁⠀⠀⠀⣘⠁⠘⠻⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⠋⠴⣬⣨⠣⣾⣷⣥⡽⠆⠀⠀⠁⠉⠀⠀⠀⠀⢀⠀⠀⣼⠁⠀⢀⣄⡦⠭⠤⠶⠤⣬⣍⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣧⣤⣿⡟⢄⡙⠛⠉⠁⢃⠐⠀⠀⠀⠀⠀⠜⠀⠈⣀⡿⠋⠀⣸⡿⠛⠁⠀⠀⠘⠀⢉⠉⠹⢿⢟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⡿⣿⣿⣿⣎⠀⠀⠀⠀⠘⠀⠁⠀⠀⠀⠀⠀⠀⠀⠟⠑⠀⠀⠈⠀⠀⠀⠀⠠⢤⠤⣨⣷⡀⠀⣚⡋⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
PhantomFuzzer is an advanced security testing toolkit that combines traditional fuzzing techniques with machine learning capabilities to detect vulnerabilities in web applications, APIs, protocols, and files.
- Comprehensive Fuzzing: Multiple fuzzer types for API, protocol, and input fuzzing
- Advanced Scanning: Web application, API, and file scanning capabilities
- Payload Generation: Extensive library of attack payloads for various vulnerability types
- Machine Learning Integration: Enhanced detection using ML algorithms (in development)
- Extensible Architecture: Modular design for easy extension with new capabilities
- Docker (version 19.03 or higher)
- Git (for cloning the repository)
- Bash shell
-
Clone the repository:
git clone https://github.com/ghostsec420/PhantomFuzzer.git cd PhantomFuzzer
-
Run the installation script:
./install.sh
This script will:
- Build the Docker image with all dependencies
- Create a wrapper script that allows you to use the
phantomfuzzer
command - Set appropriate permissions
-
Verify the installation:
phantomfuzzer --help
PhantomFuzzer has three main command groups:
scanner
: Run various types of scanners against targetsfuzzer
: Test applications for vulnerabilities by sending unexpected inputspayload
: Generate attack payloads for security testing
PhantomFuzzer provides several global options to control output verbosity and formatting:
# Show minimal output (only critical messages and results)
phantomfuzzer --quiet [command]
# Show more detailed output
phantomfuzzer --verbose [command]
# Show all debug information
phantomfuzzer --debug [command]
# Disable colored output
phantomfuzzer --no-color [command]
You can combine these options as needed:
phantomfuzzer --verbose --no-color scanner web --url https://example.com
PhantomFuzzer allows you to scan web applications for vulnerabilities:
phantomfuzzer scanner web --url https://example.com
phantomfuzzer scanner web --url https://example.com --auth '{"username":"user","password":"pass"}'
phantomfuzzer scanner web --url https://example.com --depth 2
phantomfuzzer scanner web --url https://example.com --output web_results.json --format json
Scan your APIs for potential vulnerabilities:
phantomfuzzer scanner api --url https://api.example.com
phantomfuzzer scanner api --url https://api.example.com --spec openapi.json
phantomfuzzer scanner api --url https://api.example.com --auth '{"token":"your-api-token"}'
phantomfuzzer scanner api --url https://api.example.com --output api_results.json --format json
Scan files and directories for vulnerabilities:
phantomfuzzer scanner file --path ./target/file.php
phantomfuzzer scanner file --path ./target --recursive
phantomfuzzer scanner file --path ./target --recursive --pattern "*.php"
phantomfuzzer scanner file --path ./target --ml-enhanced
phantomfuzzer scanner file --path ./target --output file_results.json --format json
PhantomFuzzer provides the ability to fuzz APIs by sending crafted requests. Here's how to perform API fuzzing:
phantomfuzzer fuzzer api --target https://api.example.com/v1/users --method GET
phantomfuzzer fuzzer api --target https://api.example.com/v1/users --method POST --data '{"username":"test"}'
phantomfuzzer fuzzer api --target https://api.example.com/v1/users --headers '{"Authorization":"Bearer token"}'
phantomfuzzer fuzzer api --target https://api.example.com/v1/users --auth '{"username":"user","password":"pass"}'
phantomfuzzer fuzzer api --target https://api.example.com/v1/users --iterations 200 --delay 0.2 --timeout 10
phantomfuzzer fuzzer api --target https://api.example.com/v1/users --output results.json --format json
You can fuzz different protocols like TCP, SSH, and FTP. Below are examples:
phantomfuzzer fuzzer protocol --target example.com --port 80 --protocol tcp
phantomfuzzer fuzzer protocol --target example.com --port 22 --protocol ssh
phantomfuzzer fuzzer protocol --target example.com --port 21 --protocol ftp
phantomfuzzer fuzzer protocol --target example.com --port 80 --protocol http --iterations 100 --delay 0.5 --timeout 15
You can fuzz various types of inputs, including files, stdin, and command-line arguments.
phantomfuzzer fuzzer input --target ./target/application --input-type file
phantomfuzzer fuzzer input --target ./target/application --input-type argument
phantomfuzzer fuzzer input --target ./target/application --input-type file --output input_results.json --output-format json
PhantomFuzzer allows you to generate different types of attack payloads for various categories. Here's how you can use it:
phantomfuzzer payload list
phantomfuzzer payload generate --category sql_injection --subcategory basic
phantomfuzzer payload generate --category xss --count 5 --output xss_payloads.txt
phantomfuzzer payload generate --category command_injection --format json
phantomfuzzer payload random --count 3
You can chain multiple operations for more comprehensive testing:
# Generate payloads and use them for API fuzzing
phantomfuzzer payload generate --category sql_injection --output sql_payloads.txt
phantomfuzzer fuzzer api --target https://api.example.com/query --method POST --data @sql_payloads.txt
# Scan and then fuzz discovered endpoints
phantomfuzzer scanner api --url https://api.example.com --output discovered_apis.json
phantomfuzzer fuzzer api --target https://api.example.com/query --method POST --data @discovered_apis.json
Enable debug logging for more detailed output:
phantomfuzzer --debug scanner web --url https://example.com
Enable debug logging for more detailed output:
phantomfuzzer --debug scanner web --url https://example.com
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.