A comprehensive security testing tool that generates fuzzed test cases to identify vulnerabilities in web applications. This tool is designed for test engineers to perform automated security testing with known good test data and various attack payloads.
- Comprehensive Fuzzing: Tests authentication, input fields, API endpoints, and more
- Multiple Attack Vectors: SQL injection, XSS, command injection, path traversal, LDAP injection, and boundary testing
- Flexible Configuration: YAML/JSON configuration files with customizable settings
- Rich Reporting: Beautiful console output with color-coded severity levels
- Multiple Output Formats: Console output and file export options
- Extensible Architecture: Modular design for easy extension and customization
- Python 3.11 or higher
uvpackage manager (recommended) orpip
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone <repository-url>
cd web-fuzzing-tool
# Install dependencies
uv sync
# Activate the virtual environment
source .venv/bin/activate # On Windows: .venv\Scripts\activate# Clone the repository
git clone <repository-url>
cd web-fuzzing-tool
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e .Create a configuration file (YAML or JSON) with your target application details:
target:
base_url: "https://your-app.com"
auth_endpoint: "/api/login"
endpoints:
- "/api/users"
- "/api/products"
test_data:
valid_credentials:
username: "testuser"
password: "ValidPass123!"
valid_inputs:
email: "user@example.com"
age: 25
fuzzing:
intensity: "medium"
payload_types: ["sql_injection", "xss", "command_injection", "boundary"]
request_delay: 0.1
timeout: 5# Basic usage
web-fuzzer --config config.yaml
# With verbose output
web-fuzzer --config config.yaml --verbose
# Save results to file
web-fuzzer --config config.yaml --output results.txt
# Validate configuration only
web-fuzzer --config config.yaml --validate-config# Create example YAML config
web-fuzzer --create-example example.yaml
# Create example JSON config
web-fuzzer --create-example example.jsonbase_url: Base URL of the target applicationauth_endpoint: Authentication endpoint (optional)endpoints: List of endpoints to testheaders: Default headers to include in requestscookies: Default cookies to include in requests
valid_credentials: Known good authentication credentialsvalid_inputs: Valid input data for testing
intensity: Fuzzing intensity level (low/medium/high)payload_types: Types of payloads to generaterequest_delay: Delay between requests in secondstimeout: Request timeout in secondsmax_retries: Maximum retry attemptsfollow_redirects: Whether to follow HTTP redirects
The tool supports the following payload types:
- SQL Injection: Classic and blind SQL injection attacks
- XSS: Cross-site scripting payloads (reflected, stored, DOM-based)
- Command Injection: Command injection attacks
- Path Traversal: Directory traversal attacks
- LDAP Injection: LDAP injection attacks
- Boundary Testing: Input boundary and edge case testing
- Authentication Bypass: Authentication bypass attempts
web-fuzzer --config config.yamlweb-fuzzer --config config.yaml --verboseweb-fuzzer --config config.yaml --output results.txtweb-fuzzer --config config.yaml --quietweb-fuzzer --config config.yaml --no-colorThe tool provides comprehensive output including:
- Configuration Summary: Target URL, endpoints, and settings
- Progress Updates: Real-time progress during fuzzing
- Vulnerability Table: Summary of found vulnerabilities
- Detailed Results: Individual vulnerability details
- Statistics: Summary statistics by severity and type
- Error Reporting: Any errors encountered during testing
Web Application Fuzzing Tool
Comprehensive security testing for web applications
Configuration
Target URL: https://example.com
Endpoints: 3
Payload Types: sql_injection, xss, command_injection, boundary
Intensity: medium
Timeout: 5s
Starting fuzzing process...
Fuzzing Summary
┌─────────────────┬─────────────────┬────────┐
│ Metric │ Value │ Color │
├─────────────────┼─────────────────┼────────┤
│ Target URL │ https://example.com │ blue │
│ Total Requests │ 150 │ blue │
│ Execution Time │ 45.23s │ blue │
│ Vulnerabilities Found │ 3 │ red │
│ Critical │ 1 │ red │
│ High │ 1 │ red │
│ Medium │ 1 │ yellow │
│ Low │ 0 │ green │
│ Info │ 0 │ blue │
│ Errors │ 0 │ green │
└─────────────────┴─────────────────┴────────┘
# Run all tests
pytest
# Run with coverage
pytest --cov=src/fuzzer
# Run specific test file
pytest tests/test_models.py# Run linting
ruff check src/ tests/
# Fix linting issues
ruff check --fix src/ tests/src/fuzzer/
├── __init__.py
├── cli.py # CLI interface
├── config_loader.py # Configuration loading
├── fuzzer_engine.py # Main fuzzing engine
├── auth_fuzzer.py # Authentication fuzzing
├── input_fuzzer.py # Input field fuzzing
├── api_fuzzer.py # API endpoint fuzzing
├── payloads.py # Payload generators
├── reporter.py # Console reporting
└── models.py # Pydantic models
tests/ # Test suite
config_examples/ # Example configurations
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
This tool is designed for authorized security testing only. Always ensure you have permission to test the target application. Unauthorized testing may violate laws and terms of service.
For issues, questions, or contributions, please:
- Check the existing issues
- Create a new issue with detailed information
- Follow the contribution guidelines
- Initial release
- Basic fuzzing capabilities
- YAML/JSON configuration support
- Rich console output
- Comprehensive test suite