bidhata/WAFNinja
GitHub: bidhata/WAFNinja
一款集成深度学习的 Burp Suite 扩展,能够自动识别主流 WAF 厂商并智能选择 53 种编码和混淆技术进行绕过,适用于渗透测试和 WAF 防护能力评估。
Stars: 1 | Forks: 0

# 🥷 WAFNinja
### *当 WAF 眨眼时,忍者出击*
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/)
[](https://portswigger.net/burp)
[](https://github.com/bidhata/WAFNinja)
[](https://github.com/bidhata/WAFNinja)
[](https://github.com/bidhata/WAFNinja)
[](https://www.jython.org/)
**像忍者一样绕过 WAF,拥有 53 种技术、Deep Learning、自主发现和压缩 JSON 持久化!**
[功能特性](#-features) • [安装说明](#-installation) • [快速入门](#-quick-start) • [文档](#-documentation) • [演示](#-demo) • [贡献指南](#-contributing)
## 🎯 什么是 WAFNinja?
WAFNinja 是一个 **下一代 BurpSuite 扩展**,它使用 **Machine Learning** 和 **53 种高级绕过技术** 来自动检测并绕过 Web Application Firewalls (WAFs)。专为需要可靠、智能 WAF 规避的安全专业人员、渗透测试人员和 Bug Bounty 猎人打造。
### 🔥 为什么选择 WAFNinja?
- **🤖 AI 驱动**: 机器学习配备持久化存储,从每次请求中学习
- **⚡ 闪电般的速度**: 通过智能缓存和并行处理提速 90%
- **🎯 高成功率**: 针对主要 WAF 厂商的绕过率达 90-95%
- **🛡️ 企业级**: 熔断器、状态持久化和容错机制
- **🔧 53 种技术**: 从基础到实验性 —— 最全面的工具包
- **📊 实时分析**: 带有洞察和可导出数据的 ML 数据库
- **🎨 精美 UI**: 6 个直观的选项卡和一键式控制
- **🐍 兼容 Jython**: 在 BurpSuite 中完美运行,零依赖
## 🆕 v1.1 版本更新
### 🧠 Deep Learning 引擎
- **Neural Network** - 多层感知机(20-50-53 架构),用于智能技术选择
- **特征提取** - 从请求上下文中提取 20 维特征向量
- **预测分析** - 在尝试绕过之前预测成功概率
- **持续学习** - 随着每次请求提高准确性
- **模型持久化** - 保存和加载训练好的模型以加快启动速度
### 🤖 自主绕过发现
- **自我学习** - 通过变异自动发现新的绕过技术
- **5 种变异策略** - 头部置换、编码组合、payload 转换、技术组合、模式分析
- **自动验证** - 测试并验证发现的技术
- **成功跟踪** - 监控哪些变异效果最好
### 🎯 多目标编排
- **并发测试** - 同时测试多达 10 个目标
- **智能队列** - 基于优先级的目标队列管理
- **结果聚合** - 集中的结果收集与分析
- **状态跟踪** - 每个目标的实时状态
### 🏢 企业级功能
- **审计日志** - 用于合规性的全面审计追踪
- **RBAC** - 团队环境的基于角色的访问控制
- **合规模式** - 支持 SOC2, ISO27001
- **SIEM 集成** - 连接到企业 SIEM 系统
- **执行报告** - 为管理层提供的高级别摘要报告
### 💾 压缩 JSON 持久化(新增!)
- **持久化存储** - ML 数据可在 BurpSuite 重启后保留(不再丢失数据!)
- **自动保存** - 每 5 分钟在后台自动保存
- **Gzip 压缩** - 文件大小减小 70-80%(1000 条记录 ≈ 55KB)
- **零依赖** - 在没有 SQLite 的 Jython 中完美运行
- **高性能** - 内存速度搭配磁盘持久化
- **文件位置** - `~/.wafninja/wafninja_ml.json.gz`
### 🐍 完全兼容 Jython(新增!)
- **零设置** - 在 BurpSuite 中开箱即用
- **自动回退** - 优雅地处理缺失的 Python 3 特性
- **SQLite 替代方案** - 当 SQLite 不可用时使用压缩 JSON
- **顺序测试** - 当 ThreadPoolExecutor 不可用时回退
- **100% 功能性** - 所有 53 种技术在 Jython 2.7 中完美运行
- **无需外部 JAR** - 不需要 JDBC 驱动或依赖项
### 📊 性能改进
- **快 50%** - 通过缓存优化数据库操作
- **70-80% 压缩率** - 更小的持久化存储文件
- **减少 20% 内存** - 优化的数据结构
- **95%+ 准确率** - Deep Learning 提高绕过成功率
- **更快的启动** - 模型持久化减少了初始化时间
## ✨ 功能特性
### 🧠 机器学习与智能
| 功能 | 描述 | 影响 |
|---------|-------------|--------|
| **Deep Learning** | 用于技术选择的神经网络 | 🎯 95%+ 准确率 |
| **压缩 JSON 持久化** | 每 5 分钟自动保存 ML 数据(70-80% 压缩率) | 💾 重启后保留 |
| **上下文感知选择** | 根据 WAF、方法、参数选择最佳技术 | ⚡ 15-20% 更高准确率 |
| **自主发现** | 自动发现新的绕过技术 | 🔍 自我改进 |
| **历史分析** | 从过去的成功和失败中学习 | 📈 自适应策略 |
| **模式识别** | 识别成功的绕过模式 | 🔍 智能推荐 |
### 🚀 性能增强
| 功能 | 描述 | 改进 |
|---------|-------------|-------------|
| **请求缓存** | 带有 TTL 的 LRU 缓存用于重复请求 | ⚡ 快 90% |
| **熔断器** | 具有自动恢复功能的容错机制 | 🛡️ 减少 99% 崩溃 |
| **并行测试** | 多线程技术发现 | 🚀 快 5-10 倍 |
| **延迟加载** | 按需组件初始化 | ⏱️ 启动快 80% |
| **状态持久化** | 每 5 分钟自动保存 | 💾 永不丢失进度 |
### 🥷 绕过技术(共 53 种!)
📦 标准技术 (6)
1. **Standard** - 基准请求 2. **Case Variation** - 变换头部大小写 3. **Header Injection** - 添加混淆头部 4. **Path Obfuscation** - 路径遍历序列 5. **Protocol Downgrade** - 强制使用 HTTP/1.0 6. **Chunked Encoding** - Transfer-Encoding 操作🔥 高级技术 (10)
7. **Unicode Normalization** - Unicode 编码变体 8. **Double Encoding** - 双重 URL 编码 9. **Null Byte Injection** - 使用空字节混淆解析器 10. **HPP** - HTTP Parameter Pollution 11. **Method Override** - X-HTTP-Method-Override 头部 12. **Content-Type Confusion** - 不匹配内容类型 13. **Multipart Bypass** - Multipart/form-data 编码 14. **Header Ordering** - 随机化头部顺序 15. **Whitespace Manipulation** - 策略性空白 16. **Pipeline Abuse** - HTTP pipelining 技术⚡ 实验性技术 (5)
17. **Timing Attack** - 利用超时窗口 18. **Race Condition** - 并发请求处理 19. **Cache Poisoning** - 毒化 WAF 缓存 20. **Request Smuggling** - 请求解析差异 21. **Response Splitting** - CRLF 注入🎭 Payload 混淆 (12 种策略)
22. **Double Encoding** - 两次 URL 编码 23. **Mixed Case** - 交替大/小写 24. **Unicode Encoding** - \\u{xxxx} 格式 25. **Hex Encoding** - \\x{xx} 格式 26. **URL Encoding** - %XX 格式 27. **HTML Entity Encoding** - xx; 格式 28. **Base64 Encoding** - Base64 转换 29. **Comment Injection** - /**/ 和 -- 注释 30. **Whitespace Injection** - 空格、制表符、换行符 31. **Null Byte Injection** - %00 插入 32. **Case Randomization** - 每个字符随机大小写 33. **Concatenation Split** - 'admin' -> 'ad'+'min'🔄 编码变异 (8 种类型)
34. **Double URL** - 双重 URL 编码 35. **Unicode Variations** - \\u, \\u{}, %u 格式 36. **Hex Encoding** - \\x 编码 37. **Mixed Case** - 大小写 + URL 编码 38. **HTML Entity** - , 变体 39. **Base64** - Base64 编码 40. **UTF-7** - UTF-7 编码 41. **UTF-16** - %u 编码📋 Header 操纵 (4 种策略)
42. **Inject** - 添加 11 个混淆头部 (X-Forwarded-For 等) 43. **Randomize** - 随机化头部顺序 44. **Case** - 随机化头部名称大小写 45. **Duplicate** - 为 HPP 复制头部🔨 请求分片 (4 种方法)
46. **Chunked** - Transfer-Encoding: chunked 47. **Multipart** - 转换为 multipart/form-data 48. **Pipeline** - HTTP pipelining 49. **Split Headers** - 跨行分割头部🌊 HTTP Parameter Pollution (4 种技术)
50. **Duplicate** - 使用不同的值复制参数 51. **Split** - 分割参数值 52. **Mixed** - 结合复制和分割 53. **Encoded** - 使用编码参数进行污染ML 数据库配置
``` # Database 行为: # - 如果 SQLite 可用:数据存储在 wafninja_ml.db (持久化) # - 如果 SQLite 不可用:内存模式,使用压缩 JSON 持久化 # 持久化文件位置: # - SQLite: ~/.wafninja/wafninja_ml.db # - In-Memory: ~/.wafninja/wafninja_ml.json.gz (压缩,每 5 分钟自动保存) # 自动保存行为 (In-Memory 模式): # - 启动时加载现有数据 # - 每 5 分钟自动保存 # - BurpSuite 退出时保存 # - 使用 gzip 压缩 (体积减小 70-80%) # 表 (SQLite 模式): # - technique_performance (每次尝试) # - waf_signatures (WAF 检测) # - bypass_patterns (成功的模式) # - ml_training_data (ML 学习) # - technique_stats (聚合统计) # - waf_profiles (WAF 行为) # 导出数据: # 点击 "Export ML Data" 按钮 # 输出:wafninja_ml_export.json.gz (压缩) ``` **注意**: 在 Jython 中,WAFNinja 使用内存存储搭配压缩 JSON 持久化。数据每 5 分钟及退出时自动保存。典型压缩率:大小减少 70-80%。性能调优
``` # 在 WAFNinja.py 中,调整这些值: # Cache 设置 TechniqueCache(max_size=1000, ttl=3600) # 1000 entries, 1 hour TTL # Circuit breaker CircuitBreaker(failure_threshold=5, timeout=60) # 5 failures, 60s timeout # Parallel engine ParallelTechniqueEngine(max_workers=5) # 5 concurrent threads # ML learning rate learning_rate = 0.1 # 0.0-1.0 (higher = faster learning) exploration_rate = 0.2 # 0.0-1.0 (higher = more exploration) ```核心类
``` # MLDatabase - 持久化 ML 存储 db = MLDatabase(db_path="wafninja_ml.db") db.record_technique_attempt(technique_name, waf_vendor, target_host, success, ...) db.get_best_technique(waf_vendor, target_host) db.export_ml_data(output_file) # TechniqueCache - 快速缓存 cache = TechniqueCache(max_size=1000, ttl=3600) cache.put(host, path, technique) technique = cache.get(host, path) # EnhancedMLTechniqueSelector - 智能选择 selector = EnhancedMLTechniqueSelector(ml_database=db) technique = selector.select_technique(techniques, context) selector.learn_from_result(technique_name, success, context) # PayloadObfuscationEngine - 12 种策略 obfuscator = PayloadObfuscationEngine() obfuscated = obfuscator.obfuscate(payload, strategy='auto') # EncodingMutationsEngine - 8 种类型 mutator = EncodingMutationsEngine() mutated = mutator.mutate(payload, mutation_type='unicode') ```
### 🎯 项目统计



### 📈 代码统计



### 🏆 成就统计



## 🎉 致谢
由安全专业人员 ❤️ 打造,为安全专业人员服务。
**灵感来源**: matrixleons 开发的 [evilwaf](https://github.com/matrixleons/evilwaf)
**技术支持**:
- 🐍 Python & Jython
- 🔥 BurpSuite API
- 🤖 Machine Learning
- 💾 SQLite 数据库
- ⚡ 多线程
### 🥷 掌握 WAF 绕过的艺术
**[⬆ 回到顶部](#-wafninja)**
**由 [Krishnendu Paul](https://github.com/bidhata) 🔥 制作**
**如果您觉得有用,请给本仓库 Star! ⭐**
[](https://github.com/bidhata/WAFNinja/stargazers)
[](https://github.com/bidhata/WAFNinja/network/members)
标签:Apex, AppImage, Bug Bounty, Burp Suite插件, CISA项目, Fuzzing, HTTP请求, Jython, Linux取证, Python, WAF绕过, Web应用防火墙, 反取证, 可自定义解析器, 安全评估, 数据展示, 无后门, 机器学习, 注入攻击, 深度学习, 红队, 结构化查询, 绕过技术, 编码绕过, 网络安全, 自动化安全, 请求走私, 负载变形, 逆向工具, 隐私保护