akha-security/akha-xss

GitHub: akha-security/akha-xss

AKHA-XSS 检测框架通过上下文感知与浏览器验证,提供低误报的自适应 XSS 漏洞发现能力。

Stars: 0 | Forks: 0

banner

🎯 AKHA XSS 扫描器

AKHA-XSS 检测框架

专为安全研究人员、漏洞赏金猎人以及 DevSecOps 流水线设计。AKHA 提供高影响力的跨站脚本(XSS)漏洞检测能力,采用近乎零误报率的设计,并依托无头浏览器验证与智能载荷变异器提供可靠保障。

功能自适应学习工作原理安装用法架构🇹🇷 Türkçe(土耳其语)

## 📖 概述 传统的静态 XSS 扫描器会盲目地向每个端点喷洒大量嘈杂的载荷列表,导致 IP 被封、数据库损坏以及大量误报。 **AKHA 采取了截然不同的方法。** 它像一个自动化的应用安全工程师,采用 **探测优先(Probe-First)** 策略。在尝试任何利用之前,AKHA 会发送高度特定且无害的探测请求,以动态分析应用行为、识别精确的渲染上下文(例如 HTML、属性、JavaScript、CSS),并绘制出当前活跃的 Web 应用防火墙(WAF)或净化规则。 只有在完全理解目标的防御机制后,AKHA 才会生成并部署一组最小化、针对上下文精确的载荷。 ## ✨ 功能一览 ### 🔍 高级检测与现代攻击面 - **反射型与存储型 XSS**:智能状态跟踪,可捕获跨复杂应用流程的持久化漏洞。 - **深度 DOM 基础分析**:追踪用户输入至客户端接收器,识别 DOM 执行缺陷。 - **带外(盲打)XSS**:与 OAST 服务原生集成(如 Burp Collaborator 或自定义配置),用于延迟执行检测。 - **框架特定接收器**:内置对 **AngularJS CSTI**(客户端模板注入)的检查。 - **现代范式**:为 **GraphQL** 端点、**WebSockets** 以及 **Mutation XSS (mXSS)** 异常提供专用扫描器。 ### 🧠 智能参数发现 - **Arjun 启发式差异模糊测试**:不依赖静态词表,而是建立基准响应模型并通过差异批量测试发现隐藏参数。 - **多向量注入**:同时测试 GET/POST 参数、RESTful 路径片段、HTTP 头部与 Cookie。 ### 🛡️ 企业与 DevSecOps 就绪 - **通过浏览器引擎验证**:集成 Playwright(无头 Chromium)严格执行载荷并捕获实际的 `alert` 事件,确保“已确认”发现的零误报率。 - **自适应速率限制**:在收到 HTTP 429/503 响应时自动降低并发,无缝绕过激进限流器。 - **无缝集成**:将发现结果直接输出为 JSON 以供 CI/CD 使用,生成美观的 HTML 报告,或通过 Webhook(Discord、Slack、Telegram)推送实时告警。 - **会话续传**:中断的扫描可精确从中断处恢复,避免在大型范围上浪费时间。 ### 🌐 动态 SPA 爬取(Playwright 驱动) - **JavaScript 渲染发现**:自动启动无头 Chromium 浏览器以导航并发现 React、Vue、Angular 及其他 SPA 框架背后的端点——这些是传统 HTML 解析器无法看到的链接。 - **默认启用**:每次扫描均开启。可通过 `--no-dynamic` 关闭,仅执行静态爬取。 ### ⚡ 异步批量 HTTP 引擎(httpx) - **高性能网络**:底层使用 `httpx.AsyncClient` 在单个事件循环中发起并发请求,性能堪比 Go 系工具(如 Dalfox)。 - **自动回退**:若未安装 `httpx`,引擎将优雅降级为线程化的 `requests`,无崩溃、无需配置。 ### 🔄 智能会话与认证管理 - **自动重新认证**:当长时间运行扫描遇到会话过期(HTTP 401/403)时,AKHA 会自动使用配置的 `--auth-url` 凭证重新登录并继续扫描,不丢失进度。 - **线程安全**:使用锁机制防止多个工作线程同时触发重复登录风暴。 ### 🔀 IP 轮换与代理池 - **轮询代理轮换**:通过 `--proxy-list proxies.txt` 提供代理列表,AKHA 会在每次请求中自动轮换。 - **自动封禁与恢复**:连续失败的代理会被临时封禁;检测到 429/503 限流时,AKHA 会立即切换到下一个健康代理。 ### 🕵️ 内置盲打 XSS OAST(Interactsh) - **零配置 OAST**:使用 `--oast` 自动注册 Interactsh 服务器,生成唯一回调 URL 并将其注入为盲打 XSS 载荷。 - **实时告警**:后台轮询线程监视 DNS/HTTP 回调,一旦盲打 XSS 被触发,即在终端以红色高亮即时打印。 - **报告集成**:所有捕获的 OAST 回调自动包含在最终扫描报告中。 ## 🧠 自适应载荷学习(为何 AKHA 不同) 大多数扫描器将载荷视为静态列表。AKHA 并非如此。 AKHA 会持续从真实扫描结果中学习,并在 `data/learning/payload_stats.json` 中维护运行中的载荷性能记忆。 对每个载荷,它跟踪: - `success_count`:该载荷导致已验证发现的次数。 - `fail_count`:未能产生有效结果的次数。 - `waf_blocked`:被 WAF 拦截的次数。 这些信息被用于贝叶斯风格的评分(带有平滑与 WAF 惩罚),从而使载荷按实际有效性而非静态顺序进行排名。 AKHA 还采用 UCB 风格策略来平衡: - **利用(Exploitation)**:优先选择在类似上下文中表现良好的载荷。 - **探索(Exploration)**:仍尝试测试不足的载荷以发现新的绕过机会。 实际效果: - 减少浪费的请求 - 更快收敛至可用的载荷家族 - 更好地应对高防御目标 - 随时间推移对每个域/上下文进行更智能的扫描,而不仅限于单次运行 ## 🧠 深入剖析:AKHA 的工作原理(处理管线) AKHA 的真正差异化在于其执行管线。对于每个发现的端点与参数,AKHA 遵循相同的确定性流程: ### 1. 🐣 探测请求(Canary Probing) AKHA 注入一个唯一的、无害的字母数字字符串(例如 `akhaPROBE123`),并附带一组特殊字符(`<`, `>`, `"`, `'`, `/`, `(`, `)`)。随后分析 HTTP 响应以判断输入是否被反射,以及具体 *反射位置*。 ### 2. 🧩 上下文映射 反射本身并不足够。AKHA 解析 DOM 以将注入接收器分类为: * **HTML 正文**:`
[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, 安全扫描, 无头浏览器, 时序注入, 特征检测, 自动化分析, 自动化探针, 蓝队分析, 跨站脚本, 运行时操纵, 逆向工具, 零误报