⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⡿⢿⡿⠃⠀⡐⠀⠘⡻⠿⠋⠛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡏⠈⣤⡝⠛⢻⣷⡆⠀⠀⠀⠀⠀⣤⣧⠀⠀⠀⠀⠚⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡇⡀⠀⢴⣮⡀⠉⠁⠀⠀⠀⠀⠁⣹⠛⠋⠉⣰⢄⣠⣿⣿⣿⣿⣿⡿⡿⠿⢿⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⡿⠿⢇⣗⠀⢈⠙⣷⠀⡐⢀⠀⡀⠀⢀⣴⣦⡄⢂⢀⣺⣿⣿⣿⣿⠏⠁⣠⣤⣤⣤⣭⣕⡲⣌⡋⠻⠿⠿⠿⠛⠛⣛ ⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠾⢯⡙⢇⠀⢃⢀⣀⠢⡿⠋⢐⠶⠇⣿⣿⣿⣿⠟⠁⣺⣿⣿⣿⣿⣿⣿⣿⣷⣵⡛⣃⣀⣠⣀⣠⣾⣿ ⣿⣿⣿⣿⣿⣷⠀⠀⢸⣦⠀⠀⠉⠂⠁⢆⣌⠆⡆⢷⡍⠹⠷⠸⠿⠿⠏⠁⣤⡌⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣆⠀⠀⠻⣷⣦⡀⠀⢠⠂⢾⠀⠀⠀⠀⢀⠂⠀⣤⣶⣾⣿⣿⣿⣶⣤⣤⣤⣨⡙⢿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠚⠋⢠⣾⣿⡼⣹⣮⣤⣰⡶⠏⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣼⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⡿⢡⣏⡇⠀⠀⠀⢀⢰⣰⢿⡛⠣⠆⢿⣿⣿⠇⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⡇⣸⡇⠿⠀⠀⠀⡀⠸⡀⠘⠃⠀⠀⢾⢿⠇⠀⠀⠀⢀⢰⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⢃⣿⡻⡀⣣⠀⠀⠀⠂⠁⠈⠈⠀⠘⠀⠄⣽⠐⠃⠀⠈⡈⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⠸⣿⣷⢄⠀⠱⡄⠀⠀⠀⢿⣷⣷⠀⠔⠈⠁⠀⠀⠀⣘⠁⠘⠻⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⠋⠴⣬⣨⠣⣾⣷⣥⡽⠆⠀⠀⠁⠉⠀⠀⠀⠀⢀⠀⠀⣼⠁⠀⢀⣄⡦⠭⠤⠶⠤⣬⣍⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣧⣤⣿⡟⢄⡙⠛⠉⠁⢃⠐⠀⠀⠀⠀⠀⠜⠀⠈⣀⡿⠋⠀⣸⡿⠛⠁⠀⠀⠘⠀⢉⠉⠹⢿⢟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⡿⣿⣿⣿⣎⠀⠀⠀⠀⠘⠀⠁⠀⠀⠀⠀⠀⠀⠀⠟⠑⠀⠀⠈⠀⠀⠀⠀⠠⢤⠤⣨⣷⡀⠀⣚⡋⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
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
phantomfuzzercommand - 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.comPhantomFuzzer allows you to scan web applications for vulnerabilities:
phantomfuzzer scanner web --url https://example.comphantomfuzzer scanner web --url https://example.com --auth '{"username":"user","password":"pass"}'phantomfuzzer scanner web --url https://example.com --depth 2phantomfuzzer scanner web --url https://example.com --output web_results.json --format jsonScan your APIs for potential vulnerabilities:
phantomfuzzer scanner api --url https://api.example.comphantomfuzzer scanner api --url https://api.example.com --spec openapi.jsonphantomfuzzer 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 jsonScan files and directories for vulnerabilities:
phantomfuzzer scanner file --path ./target/file.phpphantomfuzzer scanner file --path ./target --recursivephantomfuzzer scanner file --path ./target --recursive --pattern "*.php"phantomfuzzer scanner file --path ./target --ml-enhancedphantomfuzzer scanner file --path ./target --output file_results.json --format jsonPhantomFuzzer 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 GETphantomfuzzer 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 10phantomfuzzer fuzzer api --target https://api.example.com/v1/users --output results.json --format jsonYou can fuzz different protocols like TCP, SSH, and FTP. Below are examples:
phantomfuzzer fuzzer protocol --target example.com --port 80 --protocol tcpphantomfuzzer fuzzer protocol --target example.com --port 22 --protocol sshphantomfuzzer fuzzer protocol --target example.com --port 21 --protocol ftpphantomfuzzer fuzzer protocol --target example.com --port 80 --protocol http --iterations 100 --delay 0.5 --timeout 15You can fuzz various types of inputs, including files, stdin, and command-line arguments.
phantomfuzzer fuzzer input --target ./target/application --input-type filephantomfuzzer fuzzer input --target ./target/application --input-type argumentphantomfuzzer fuzzer input --target ./target/application --input-type file --output input_results.json --output-format jsonPhantomFuzzer allows you to generate different types of attack payloads for various categories. Here's how you can use it:
phantomfuzzer payload listphantomfuzzer payload generate --category sql_injection --subcategory basicphantomfuzzer payload generate --category xss --count 5 --output xss_payloads.txtphantomfuzzer payload generate --category command_injection --format jsonphantomfuzzer payload random --count 3You 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.jsonEnable debug logging for more detailed output:
phantomfuzzer --debug scanner web --url https://example.comEnable 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.