toxy4ny/cortisol

GitHub: toxy4ny/cortisol

通过多重 URL 编码和规范化变体技术,系统性探测 WAF 与后端解码逻辑的不一致,帮助红队发现潜在绕过。

Stars: 16 | Forks: 2

# 🧪 cortisol — WAF 绕过与规范化压力测试工具(适用于红队) `cortisol` 是一款轻量级的攻击性安全 CLI 工,旨在通过利用 URL 规范化逻辑中的不一致性,对 **Web 应用防火墙 (WAF)** 进行**压力测试**。它可帮助红队和渗透测试人员识别针对 **SQLi、XSS、SSRF 和路径遍历** 等常见防护措施的潜在绕过方法——尤其是当 WAF 仅对 payload 进行**单次解码**,而后端对其进行**多次解码**时。 灵感来源于真实的 Bug Bounty 发现,例如: ``` /api/v1/%2e%2e/%2e%2e/config?id=1%252bUNION%252bSELECT%252bsecrets-- ``` `cortisol` 自动生成并测试**多重编码的 payload**,以检测 WAF 与应用程序响应之间的行为差异。 ## 🔍 工作原理:规范化绕过理论 许多 WAF 在执行**单次 URL 解码步骤后**应用安全规则,而 Web 服务器(例如 Apache、Nginx、Tomcat)在将请求传递给应用程序之前可能会进行**多次解码**。 这种不匹配创造了一个机会: | 编码级别 | WAF 视图 | 后端解码为 | 结果 | |----------------|-------------------------|--------------------------|----------------------------| | 原始 | `'` | `'` | 已拦截(如果 WAF 处于活动状态) | | 单次 (%27) | `%27` | `'` | 通常被拦截 | | **双重 (%2527)** | `%2527` → `%27` | `%27` → `'` | ✅ **可能绕过 WAF!** | 常见的绕过技术包括: - 双重/三重 URL 编码 (`%252f` → `/`) - 大小写混合 (`%2f` vs `%2F`) - 路径混淆 (`..%2f`, `....//`, `%2e%2e/`) - UTF-8 超长序列 (例如,`%c0%af`) `cortisol` 会对这些变体进行系统性测试,并突出显示与良性基线**存在差异**的响应,从而指示潜在的绕过可能。 ## 🚀 特性 - 🔍 **自动 WAF 检测** — 通过 HTTP 标头识别 Cloudflare、AWS WAF、Sucuri、Imperva、ModSecurity、Akamai 等。 - 🧬 **多重编码 Payload** — 针对每个向量的原始、单次、双重和三重 URL 编码。 - 📊 **智能差异分析** — 将状态码和响应大小与干净请求进行比较。 - 🎯 **攻击模板** — 内置的 payload 适用于: - SQL 注入 (`sqli`) - 本地文件包含 (`lfi`) - 服务端请求伪造 (`ssrf`) - 跨站脚本攻击 (`xss`) - 🖥️ **精美的 CLI** — ASCII 标题横幅 + 通过 `rich` 实现的彩色输出。 - 📁 **JSONL 日志记录** — 机器可读的结果,便于与 SIEM 或自定义 pipeline 集成。 ## ⚠️ 仅限道德使用 此工具默认以**实验模式**运行(无授权确认检查),专为受控环境设计,例如: - 内部红队演练 - CTF 和训练实验室(例如,`testfire.net`) - **已签署范围协议**的客户项目 ## 🛠️ 安装 ``` git clone https://github.com/toxy4ny/cortisol.git cd cortisol pip install -r requirements.txt ``` 或者直接安装: ``` pip install requests click rich ``` ## ▶️ 使用示例 ### 基本 XSS 测试 ``` python3 cortisol.py -t https://target.com/search -p q -a xss ``` ### 带输出日志的 SQLi Fuzzing ``` python3 cortisol.py \ --target https://api.client.local/user \ --param id \ --attack sqli \ --output ./logs/cortisol-sqli-20251225.jsonl ``` ### 详细模式(显示完整 URL) ``` python3 cortisol.py -t https://testfire.net/index.jsp -p content -a xss -v ``` ## 📤 输出示例 ``` WAF Bypass & Normalization Stress Tester Lab Mode — Use only in authorized environments Target: https://testfire.net/index.jsp Param: content Attack: XSS 🔍 Probing for WAF... 🛡️ Detected WAF: Unknown or No WAF Detected ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━┓ ┃ Vector ┃ Encoding ┃ Status ┃ Size ┃ Diff? ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━┩ │