simple-waf-scanner 0.1.2

OWASP Top 10:2025 aligned WAF bypass scanner with 280+ payloads (XSS, SQLi, RCE, SSTI, XXE, SSRF, NoSQL), 11+ WAF fingerprints, and 7+ evasion techniques
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
# Simple WAF Scanner

[![Crates.io](https://img.shields.io/crates/v/simple-waf-scanner.svg)](https://crates.io/crates/simple-waf-scanner)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT)

A powerful Web Application Firewall (WAF) detection and bypass testing tool written in Rust for authorized security testing.

---

## ⚠️ **LEGAL DISCLAIMER** ⚠️

```
┌─────────────────────────────────────────────────────────────────────────┐
│                          ⚠️  LEGAL WARNING  ⚠️                           │
│                                                                           │
│  This tool is designed for AUTHORIZED SECURITY TESTING ONLY.            │
│                                                                           │
│  Unauthorized access to computer systems is illegal and may result in:   │
│  • Criminal prosecution under the Computer Fraud and Abuse Act (CFAA)    │
│  • Violations of the Computer Misuse Act (UK) and similar laws globally  │
│  • Civil lawsuits and financial penalties                                │
│  • Imprisonment                                                           │
│                                                                           │
│  By using this tool, you acknowledge that:                               │
│  • You have EXPLICIT WRITTEN PERMISSION to test the target system        │
│  • You understand the legal implications of unauthorized testing         │
│  • The authors assume NO LIABILITY for any misuse or damage              │
│                                                                           │
│  Use responsibly. Test ethically. Stay legal.                            │
└─────────────────────────────────────────────────────────────────────────┘
```

---

## Features

✅ **OWASP Top 10:2025 Aligned** - Includes specialized bypass payloads mapped to:
- **A01:2025** - Broken Access Control (SSRF, Path Traversal, IDOR)
- **A02:2025** - Security Misconfiguration (Default Credentials, Debug Endpoints)
- **A05:2025** - Injection (Advanced SQL/NoSQL/XSS/Command Injection WAF Bypasses)
- **A07:2025** - Authentication Failures (Auth Bypass, Session Fixation, JWT Attacks)
- **A10:2025** - Mishandling of Exceptional Conditions (Error Disclosure)

✅ **WAF Fingerprinting** - Detect 11+ popular WAFs (Cloudflare, Azure Front Door, AWS WAF, Akamai, ModSecurity, Imperva, Sucuri, Wordfence, Barracuda, F5, FortiWeb)

✅ **Advanced Evasion Techniques** - 7+ bypass methods including:
- URL encoding & double encoding
- Case variation
- Null byte injection
- Comment injection
- Unicode normalization
- Path traversal variants

✅ **Comprehensive Payloads** - 280+ sophisticated attack payloads across 15 categories:
- **XSS (Cross-Site Scripting)** - 30+ payloads including polyglots, DOM-based, filter evasion, mutation XSS
- **SQL Injection** - 20+ payloads with time-based blind, boolean-based, WAF-specific bypasses
- **Remote Code Execution (RCE)** - 35+ payloads including shellshock, SSTI, expression language injection
- **Local File Inclusion (LFI)** - 20+ payloads with PHP wrappers, double encoding, null bytes
- **Command Injection** - 30+ payloads with IFS bypass, brace expansion, backslash evasion
- **Path Traversal** - Multiple encoding and obfuscation techniques
- **Server-Side Request Forgery (SSRF)** - 25+ payloads targeting cloud metadata, internal services
- **XML External Entity (XXE)** - 12+ payloads for file disclosure and SSRF
- **NoSQL Injection** - 24+ MongoDB-specific payloads including regex and operator injection
- **Server-Side Template Injection (SSTI)** - 30+ payloads for Jinja2, Freemarker, Thymeleaf, etc.
- **OWASP A01** - Broken Access Control bypass techniques
- **OWASP A02** - Security Misconfiguration detection
- **OWASP A05** - Advanced Injection WAF bypasses
- **OWASP A07** - Authentication bypass techniques
- **OWASP A10** - Error handling vulnerabilities

✅ **Structured Payloads** - JSON-based payload system with metadata (severity, category, OWASP references)

✅ **Embedded Defaults** - Ships with all payloads built-in, no external files required

✅ **Custom Payloads** - Load your own payload files in JSON format

✅ **Concurrent Scanning** - Configurable concurrency with rate limiting

✅ **Dual Output Modes** - Pretty terminal tables or JSON export for automation

✅ **Mandatory Consent** - Interactive legal warning prevents accidental misuse

---

## How It Works

### Scan Flow Diagram

```mermaid
sequenceDiagram
    participant User
    participant CLI
    participant Scanner
    participant PayloadManager
    participant WafDetector
    participant EvasionEngine
    participant Target

    User->>CLI: waf-scan https://target.com
    CLI->>User: Display Legal Warning
    User->>CLI: Type "I ACCEPT"
    CLI->>Scanner: Initialize with Config
    
    Scanner->>PayloadManager: Load Payloads
    PayloadManager-->>Scanner: Return Payloads (XSS, SQLi, LFI, etc.)
    
    Scanner->>Target: Send Baseline Request
    Target-->>Scanner: Response (headers, body, cookies)
    
    Scanner->>WafDetector: Detect WAF
    WafDetector->>WafDetector: Match against 11+ signatures
    WafDetector-->>Scanner: WAF Name (or None)
    
    loop For each payload
        Scanner->>EvasionEngine: Apply all techniques
        EvasionEngine-->>Scanner: Transformed payloads
        
        loop For each transformed payload
            Scanner->>Target: Send malicious request
            Target-->>Scanner: Response
            Scanner->>Scanner: Check matchers
        end
    end
    
    Scanner-->>CLI: Scan Results
    CLI->>User: Display findings (table or JSON)
```

### Detection Algorithm

1. **WAF Fingerprinting** - Analyzes response headers, body patterns, status codes, and cookies
2. **Weighted Scoring** - Headers (2 points), other criteria (1 point each)
3. **Threshold** - Score ≥ 2 triggers detection

### Evasion Techniques

Each payload is automatically transformed using:
- **URL Encoding** - `%3Cscript%3E`
- **Double Encoding** - `%253Cscript%253E`
- **Case Variation** - `<ScRiPt>`
- **Null Bytes** - `%00<script>`
- **Comments** - `<scr<!---->ipt>`
- **Unicode** - `\uFF1Cscript\uFF1E`
- **Path Traversal** - `....//`

---

## Installation

### From crates.io

```bash
cargo install simple-waf-scanner
```

### From source

```bash
git clone https://github.com/yourusername/simple-waf-scanner.git
cd simple-waf-scanner
cargo build --release
```

The binary will be at `target/release/waf-scan`.

---

## Usage

### Basic Scan

```bash
waf-scan https://example.com
```

The tool will:
1. Display a mandatory legal warning and require consent
2. Detect any WAF protecting the target
3. Test embedded payloads with all evasion techniques
4. Display results in a formatted table

### Custom Payload File

```bash
waf-scan https://example.com --payload-file custom-payloads.json
```

### Filter Evasion Techniques

```bash
# Only use encoding and case variation techniques
waf-scan https://example.com --techniques encoding,case
```

Available techniques:
- `encoding` - URL encoding
- `double-encode` - Double URL encoding
- `case` - Case variation
- `null-bytes` - Null byte injection
- `comments` - Comment injection
- `unicode` - Unicode normalization
- `path-traversal` - Path traversal variants

### Verbose Mode

Show which specific evasion technique worked for each finding:

```bash
waf-scan https://example.com --verbose
```

### JSON Output

Export results as JSON for integration with other tools:

```bash
waf-scan https://example.com --output-json > results.json
```

### Rate Limiting

Configure request delay (milliseconds):

```bash
waf-scan https://example.com --delay 500
```

### Concurrency Control

```bash
waf-scan https://example.com --concurrency 5
```

---

## Custom Payload Format

Create custom payload files in JSON format:

```json
[
  {
    "id": "custom-xss-1",
    "info": {
      "name": "Custom XSS Test",
      "severity": "high",
      "category": "injection",
      "description": "Custom XSS payload",
      "references": ["https://owasp.org/www-community/attacks/xss/"],
      "tags": ["xss", "custom"]
    },
    "payloads": [
      {
        "value": "<script>alert(1)</script>",
        "encoding": "none",
        "method": "GET"
      }
    ],
    "matchers": [
      {
        "type": "response_body",
        "condition": "contains",
        "patterns": ["<script>alert"]
      }
    ]
  }
]
```

**Severity levels**: `critical`, `high`, `medium`, `low`, `info`

---

## Library Usage

Use as a Rust library in your own projects:

```rust
use simple_waf_scanner::{Config, scan};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut config = Config::new("https://example.com".to_string());
    config.concurrency = 5;
    config.delay_ms = 200;
    
    let results = scan(config).await?;
    
    println!("WAF Detected: {:?}", results.waf_detected);
    println!("Findings: {}", results.findings.len());
    
    Ok(())
}
```

---

## Output Example

```
══════════════════════════════════════════════════════════════════════
  WAF BYPASS SCAN RESULTS
══════════════════════════════════════════════════════════════════════

Target: https://example.com
Timestamp: 2026-02-03T10:30:00Z
WAF Detected: Cloudflare

╔══════════╦════════════╦═══════════════════════════╦════════╗
║ Severity ║ Category   ║ Payload                   ║ Status ║
╠══════════╬════════════╬═══════════════════════════╬════════╣
║ Critical ║ injection  ║ ' OR '1'='1               ║ 200    ║
║ High     ║ injection  ║ <script>alert('XSS')</..  ║ 200    ║
╚══════════╩════════════╩═══════════════════════════╩════════╝

──────────────────────────────────────────────────────────────────────
  SUMMARY
──────────────────────────────────────────────────────────────────────
Total Payloads Tested: 15
Successful Bypasses: 2
Effective Techniques: 3
Scan Duration: 4.52s
══════════════════════════════════════════════════════════════════════
```

---

## OWASP Top 10:2025 Coverage

This scanner includes specialized payloads aligned with the [OWASP Top 10:2025](https://owasp.org/Top10/2025/), the industry-standard list of critical web application security risks:

### 🔴 A01:2025 - Broken Access Control
**Payloads**: SSRF to cloud metadata (AWS, Azure, GCP), path traversal with encoding bypass, IDOR attacks
- AWS EC2 metadata access via IPv6, decimal IP encoding
- Path traversal with double encoding (`..%252f`)
- Directory traversal with Unicode bypass

### 🟠 A02:2025 - Security Misconfiguration  
**Payloads**: Default credentials, exposed debug endpoints, information disclosure
- Common admin credentials (admin/admin, root/root)
- `.env` file exposure
- Debug endpoints (`/debug`, `/phpinfo.php`, `/server-status`)

### 🔵 A05:2025 - Injection
**Payloads**: Advanced SQL/NoSQL/XSS/Command injection with WAF bypass techniques
- SQL injection with comment obfuscation (`/*!50000AND*/`)
- NoSQL operator injection (`{"$ne":null}`)
- XSS polyglots with encoding tricks
- Command injection with IFS and quote evasion

### 🟢 A07:2025 - Authentication Failures
**Payloads**: Authentication bypass, session attacks, JWT manipulation
- SQL injection auth bypass (`admin' OR '1'='1'--`)
- Session fixation tests
- JWT 'none' algorithm attack

### 🟡 A10:2025 - Mishandling of Exceptional Conditions
**Payloads**: Stack trace disclosure, database error messages
- Triggers for Python/Java stack traces
- Database error messages (MySQL, PostgreSQL, MongoDB)

Each finding automatically maps to its corresponding OWASP category for better remediation guidance.

---

## Development

### Run Tests

```bash
cargo test
```

### Check Code Quality

```bash
cargo clippy --all-targets -- -D warnings
cargo fmt --check
```

### Build Optimized Release

```bash
cargo build --release
```

The release build uses aggressive optimization for minimal binary size.

---

## Contributing

Contributions are welcome! Please:

1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass
5. Submit a pull request

---

## License

Licensed under the MIT License.

See [LICENSE-MIT](LICENSE-MIT) for details.

---

## Responsible Disclosure

If you discover security vulnerabilities in this tool itself, please report them responsibly to the maintainers.

---

## Acknowledgments

- OWASP for security testing resources and payload databases
- The Rust community for excellent async and HTTP libraries
- Security researchers who develop and share bypass techniques ethically

---

**Remember: With great power comes great responsibility. Use this tool ethically and legally.**