akha-security/akha-xss
GitHub: akha-security/akha-xss
AKHA-XSS 检测框架通过上下文感知与浏览器验证,提供低误报的自适应 XSS 漏洞发现能力。
Stars: 0 | Forks: 0
🎯 AKHA XSS 扫描器
AKHA-XSS 检测框架
专为安全研究人员、漏洞赏金猎人以及 DevSecOps 流水线设计。AKHA 提供高影响力的跨站脚本(XSS)漏洞检测能力,采用近乎零误报率的设计,并依托无头浏览器验证与智能载荷变异器提供可靠保障。
[PROBE]
`
* **HTML 属性**:``
* **JavaScript 上下文**:``
* **CSS 上下文**:``
* **URL/动作上下文**:``
### 3. 🛡️ 净化与 WAF 画像
通过检查探测中哪些特殊字符存活、是否被 URL/HTML 编码或完全剥离,AKHA 构建实时净化画像。它能立即知晓 `<` 是否被过滤而 `"` 是否允许。
### 4. 🧮 智能载荷生成
AKHA 引用其载荷数据库并应用 **自适应载荷智能**。若上下文为 JavaScript 且 `"` 被拦截而 `'` 允许,则动态生成类似 `'-alert(1)-'` 的载荷。它利用 UCB(上置信界)算法选择历史上已知可绕过类似上下文或特定 WAF(如 Cloudflare、Akamai)的载荷。
### . 🎯 多阶段验证
当载荷被反射时,AKHA 验证其执行潜力:
* **标记追踪**:检查解析 DOM 中的确定性载荷标记。
* **原始反射匹配**:确保关键执行字符绕过了编码。
* **浏览器仿真**:如配置启用,引擎会启动 Chromium、注入载荷并监听 `alert()` 事件循环。
### 6. ⚖️ 置信度评分
发现结果根据验证期间留下的加密痕迹被赋予复杂的 **置信度评分(0–100%)**。
| 分数 | 严重等级 | 描述 |
| :--- | :--- | :--- |
| **80 - 100%** | **已确认** | 执行已得到绝对证明。通过无头浏览器或无编码 DOM 解析验证。 |
| **50 - 79%** | **潜在** | 在危险上下文中反射强烈,但未能自动触发执行。需优先人工审核。 |
| **0 - 49%** | **低** | 反射较弱或仅部分。可能已被框架编码缓解,但值得记录。 |
## ⚙️ 安装
### 先决条件
- Python 3.9+
- pip
### 标准安装
推荐用于快速、基于 CLI 的 CI/CD 环境。
```
git clone https://github.com/akha-security/akha-xss.git
cd akha-xss
pip install -e .
```
### 🏆 完整安装(推荐)
包含 Playwright 依赖,启用零误报执行验证器。
```
pip install -e .[browser]
playwright install chromium
```
## 🚀 使用指南
通过 `akha-xss` 命令调用该工具。
### 基础扫描
```
# 针对单个目标的快速测试
akha-xss scan --url https://domain.com
# 从文件测试多个目标
akha-xss scan --file targets.txt
```
### 扫描配置(深度与速度)
控制 AKHA 模糊测试参数的激进程度以及尝试的载荷变体数量。
```
# 🏎️ 快速:最小模糊化,高度定向的有效载荷。最佳用于初始分类。
akha-xss scan --url https://domain.com --profile quick
# ⚖️ 平衡(默认):深度发现与扫描持续时间的最佳平衡点。
akha-xss scan --url https://domain.com --profile balanced
# 🕵️ 深度: exhaustive 参数发现和重型有效载荷变异。
akha-xss scan --url https://domain.com --profile deep
# 💥 激进:最大化线程,禁用 SSL 检查,目标全部。
akha-xss scan --url https://domain.com --deep-scan --aggressive
```
### 认证与头部信息
```
# 基于 Cookie 的身份验证
akha-xss scan --url https://domain.com --cookie "SESSIONID=xyz123; UID=99"
# Bearer 令牌
akha-xss scan --url https://domain.com --bearer-token "eyJhbGci..."
# 自定义标头
akha-xss scan --url https://domain.com -H "X-Custom-Auth: supersecret"
```
### 认证插件集成指南
当简单的 `--auth-url` + `--auth-data` 不足时使用认证插件。
- `csrf-preflight`:适用于每次请求动态 CSRF 令牌的经典表单登录。
- `bearer-refresh`:适用于访问令牌过期并需刷新的 API 会话。
推荐流程:
1. 先使用基础认证标志(`--auth-url`、`--auth-data`、`--cookie`、`--bearer-token`)。
2. 若登录成功一次但后续出现 401/403,启用 `--auth-plugin`。
3. 通过 `--auth-plugin-options` 添加插件选项并仅调整必要字段。
示例(CSRF 表单登录):
```
akha-xss scan --url https://domain.com \
--auth-url https://domain.com/login \
--auth-data '{"username":"admin","password":"pass"}' \
--auth-plugin csrf-preflight \
--auth-plugin-options '{"preflight_url":"https://domain.com/login","token_fields":["csrf_token","_token"]}'
```
示例(Bearer 刷新流程):
```
akha-xss scan --url https://api.domain.com \
--bearer-token "eyJhbGci..." \
--auth-plugin bearer-refresh \
--auth-plugin-options '{"refresh_url":"https://api.domain.com/auth/refresh","payload_json":{"refresh_token":"xyz"}}'
```
操作提示:
- 使用 `--no-reauth` 时请保持禁用。
- 优先提供尽可能小的插件选项载荷以避免登录漂移。
- 在 JSON 报告 `auth` 部分(`reauth_count`、`auth_failures`、`last_event`)中验证认证生命周期。
快速故障排查:
- 症状:首次尝试即登录失败。
- 修复:使用 `csrf-preflight` 并通过 `token_fields` 设置准确的 CSRF 字段名。
- 症状:扫描过程中反复出现 401/403。
- 修复:启用 `bearer-refresh` 并提供带有刷新载荷的 `refresh_url`。
- 症状:插件已启用但重新认证未递增。
- 修复:检查 JSON 报告中的 `auth.last_event` 以确认插件原因与详情。
### 范围与过滤
防止爬虫落入注销 URL 或管理黑名单。
```
akha-xss scan --url https://domain.com \
--include "/api/v1/.*" \
--exclude "/logout" --exclude "/admin/.*"
```
### 模块切换
自定义攻击面。
```
# 强制 API 模式(专注于 POST 正文、JSON 有效载荷、标头)
akha-xss scan --url https://api.domain.com --api-mode --test-post
# 启用 WebSockets 与标头,禁用重型 DOM 检查
akha-xss scan --url https://domain.com --websockets --test-headers --no-dom-xss
```
### 盲打 XSS 配置
自动注入会在数周后由工作人员触发并回拨的 OAST 载荷。
```
# 使用您自己的协作方 / XSS Hunter URL
akha-xss scan --url https://domain.com --blind-xss-url https://your-id.oastify.com
# 或使用内置的 Interactsh OAST 客户端(无需配置)
akha-xss scan --url https://domain.com --oast
```
### 代理轮换与隐身
通过代理池轮换避免 IP 封禁与 WAF 限流。
```
# 单个代理(例如 Burp Suite)
akha-xss scan --url https://domain.com --proxy http://127.0.0.1:8080
# 代理池轮换(文件中每行一个 URL)
akha-xss scan --url https://domain.com --proxy-list proxies.txt
```
### 会话管理
```
# 会话过期时自动重新登录
akha-xss scan --url https://domain.com \
--auth-url https://domain.com/login \
--auth-data '{"username": "admin", "password": "pass"}'
# 需要时禁用自动重新身份验证
akha-xss scan --url https://domain.com --no-reauth
```
### 报告与通知
```
# 输出 JSON 以用于漏洞管理平台
akha-xss scan --url https://domain.com --format json --json-output results.json
# 发现高置信度结果时触发 Discord Webhook
akha-xss scan --url https://domain.com \
--webhook-url https://discord.com/api/webhooks/your-hook \
--webhook-platform discord
```
## 🚀 核心能力集
AKHA 默认搭载完整的自适应扫描栈。
### 验证与证据质量
- **结构化 DOM 证据**与**可复现比率**是置信度评分的一部分。
- **可利用性评分**与置信度并列报告,便于实际优先级划分。
- **多浏览器执行验证**:除 Chromium 外还支持 Firefox。
- 发现的报告包含 **浏览器证据矩阵**,用于查看执行可见性。
### 发现与优先级
- **基于风险的端点优先级**指导爬取与发现顺序。
- **规范去重**:合并语义上等价的端点。
- **有状态 SPA 发现**:在有限的状态转移预算内运行。
- **发现配置**:提供 `auto`、`anonymous`、`authenticated`、`admin` 等模式。
### WAF 与流量适配
- **每主机**与**每路径**限流独立于全局限制。
- 代理池支持 **隔离 + 冷却恢复** 生命周期。
- **挑战感知目标回退**:应用自适应惩罚。
- **端点类别回退配置**:内置(`default`、`api_read`、`api_write`、`auth`),支持 CLI/配置覆盖。
- WAF 检测暴露更丰富的 **置信度分数**与**证据**结构。
### 载荷智能
- 学习追踪 **失败分类**(`blocked`、`encoded`、`stripped`、`inert`)。
- 载荷排名采用 **端点配置感知 UCB** 策略。
- **语法引导的最小载荷生成**:优先选择短且符合上下文的候选。
- **相似性热启动**:减少冷启动差距。
- 学习导出聚合 **失败原因**用于调优。
### 性能、规模与可观测性
- **硬扫描预算**:支持时长、请求数、载荷尝试次数限制。
- **每参数**与**每端点**载荷上限。
- **类似租约/确认分布式就绪任务队列**:支持可恢复的工作调度。
- **周期性恢复检查点**:适用于长时间运行扫描。
- 报告包含 **HTTP 遥测**(延迟百分位、状态桶、池利用率)。
- **预算压力自动降级**:可禁用可选重型模块。
- 工作调度支持 **动态任务租约**与**退信队列**行为。
- 报告包含 **模块级耗时指标**。
### 质量与发布保障
- **流水线契约测试**:验证分析器/执行器/报告器边界。
- **黄金目标回归固件**:保持报告输出稳定。
- 报告包含 **证据链**字段(探测 -> 反射 -> 验证 -> 执行)。
- **范围保护措施**:确保更安全的全扫描默认设置。
- `tools/quality_gate.py` 提供 CI 质量门控,对照基准报告。
### 关键 `scan --help` 选项
```
# 验证
--execution-verify-firefox
# 身份验证
--auth-plugin csrf-preflight
--auth-plugin-options '{"preflight_url":"https://domain.com/login"}'
# 发现
--no-stateful-spa
--spa-state-budget 8
--discovery-profile auto
--no-risk-prioritization
--risk-top-k 300
# WAF 和流量适配
--no-per-host-rate-limit
--no-per-path-rate-limit
--path-rate-multiplier 0.75
--proxy-cooldown-seconds 60
--no-endpoint-backoff-profiles
--endpoint-backoff-overrides '{"auth": {"penalty_mult": 2.2}}'
# 有效载荷智能
--no-payload-failure-taxonomy
--no-payload-context-bandit
--no-payload-minimal-grammar
--no-payload-similarity-warm-start
--ucb-exploration 1.4
--payload-context-weight 0.25
--payload-encoding-weight 0.15
--payload-waf-weight 0.10
# 预算和时间安排
--max-scan-seconds 900
--max-requests 20000
--max-payloads 8000
--max-payloads-per-param 20
--max-payloads-per-endpoint 120
--task-lease-seconds 120
--task-worker-id worker-a
--no-distributed-task-queue
--resume-checkpoint-seconds 30
--no-dynamic-task-lease
--task-max-retries 3
--no-budget-auto-fallback
--budget-fallback-trigger 0.85
# 安全
--no-scope-guard
--scope-guard-max-pages 8000
```
### 示例:高级自适应扫描
```
akha-xss scan --url https://domain.com \
--profile deep \
--execution-verify-firefox \
--discovery-profile authenticated \
--spa-state-budget 12 \
--risk-top-k 500 \
--path-rate-multiplier 0.6 \
--proxy-cooldown-seconds 120 \
--no-payload-context-bandit \
--no-payload-similarity-warm-start \
--max-scan-seconds 1800 \
--max-requests 50000 \
--resume-checkpoint-seconds 30 \
--endpoint-backoff-overrides '{"auth":{"penalty_mult":2.4,"backoff_extra":6}}'
### CI 质量门禁示例
```bash
python tools/quality_gate.py \
--baseline output/baseline_report.json \
--current output/scan_report_latest.json \
--max-duration-regression 20 \
--max-request-regression 25 \
--min-confirmed-ratio 40 \
--max-p95-latency-regression 30 \
--max-confirmed-ratio-drop 20
```
### 示例:认证插件流程
```
# CSRF 预检辅助登录表单身份验证
akha-xss scan --url https://domain.com \
--auth-url https://domain.com/login \
--auth-data '{"username":"admin","password":"pass"}' \
--auth-plugin csrf-preflight \
--auth-plugin-options '{"preflight_url":"https://domain.com/login","token_fields":["csrf_token","_token"]}'
# Bearer 令牌刷新插件用于 API 会话
akha-xss scan --url https://api.domain.com \
--bearer-token eyJhbGci... \
--auth-plugin bearer-refresh \
--auth-plugin-options '{"refresh_url":"https://api.domain.com/auth/refresh","payload_json":{"refresh_token":"xyz"}}'
```
## 🏛️ 架构与可扩展性
AKHA 采用严格解耦架构,便于安全工程师轻松编写自定义模块。
* `akha.core`:处理编排、分布式线程池、自适应 `HTTPClient`(支持异步 httpx 批量、代理轮换、自动重新认证)以及会话持久化机制。
* `akha.modules.xss`:包含上下文感知执行引擎(`XSSEngine`、`Injector`、`SmartValidator`、`Verifier`)。
* `akha.modules.interactsh_client`:内置 Interactsh OAST 客户端,用于自动化盲打 XSS 回调检测。
* `akha.payloads`:管理本地 SQLite/JSON 载荷数据库、WAF 排列逻辑以及自适应学习引擎。
若需新增引擎(如 SSRF 或 SQLi),可简单扩展 `akha.core.pipeline` 中的抽象 `Pipeline` 类,并通过 CLI 插件注册进行注册。
## ⚠️ 免责声明与伦理使用
**AKHA XSS 扫描器仅限用于教育与授权的专业安全测试。**
* 不得对未获得明确书面许可的系统、网络或应用使用本工具。
* 鉴于 `--deepcan` 与参数模糊测试的激进性质,该工具可能导致拒绝服务、未预期数据库修改或运营中断。
* 请尽可能在预发布环境中使用。开发者不承担任何责任与风险,因使用该软件而导致的任何误用、损害或法律后果均由使用者自行承担。标签:Adaptive Learning, Bug Bounty, DevSecOps, DOM XSS, False Positive Reduction, Headless Browser, LNA, Payload Mutators, Payload变异, Probe-First Methodology, WAF绕过, Web安全, XSS检测, 上下文感知, 上游代理, 前端安全, 反射型XSS, 可自定义解析器, 存储型XSS, 安全扫描, 无头浏览器, 时序注入, 特征检测, 自动化分析, 自动化探针, 蓝队分析, 跨站脚本, 运行时操纵, 逆向工具, 零误报