多数扫描器只能检测。Xalgorix 能实证。自主 LLM 代理执行完整的渗透测试方法论,随后独立的验证器在报告前重新利用每一项发现——因此你获得的是证据,而非一堆需要人工研判的“可能”。支持自托管、私有部署,并可自带 LLM。采用 Go + TypeScript 构建。
🚀 快速开始 · 💡 为什么选择 Xalgorix · ✨ 功能特性 · 🎯 使用场景 · ☁️ 托管云服务 · 📖 文档
🖥️ 自托管仪表盘 — 在本地 127.0.0.1:9137 运行
| 概览仪表盘 | 扫描详情 | 发现结果 |
|---|---|---|
![]() | ![]() | ![]() |
☁️ 托管云仪表盘 — 完全托管版本,位于 www.xalgorix.com
安装(一行命令):```bash curl -sSL https://www.xalgorix.com/install | bash
这会为你的平台(Linux 或 macOS,amd64/arm64)从最新版本下载预构建的二进制文件。然后运行交互式设置向导:```bash
xalgorix --setup
选择你的提供商,确认一个模型,并在提示时输入 API 密钥。为获得最佳效果,请使用具备强大推理能力、长上下文性能和可靠工具调用的当前前沿模型——例如你可用到的最新且能力出众的 GPT、Claude 或 Gemini 模型。较小的或本地模型仍然受支持,但在长时间自主扫描期间可能需要更多监督。Xalgorix 会将密钥私密存储在 ~/.xalgorix.env(权限 0600)中,并可为你启动仪表盘。本地 Ollama 无需 API 密钥。
如果你选择不立即启动,之后可通过 xalgorix --web 启动,并打开 http://127.0.0.1:9137。你可以在任何时间于 设置 → LLM 下更改提供商或高级选项,或重新运行 xalgorix --setup。
或使用 Docker 运行——开箱即用,无需工具链:```bash
docker run --rm -p 9137:9137
--privileged
-v xalgorix-data:/data
xalgord/xalgorix:latest
`--privileged` 赋予工具集与以 root 身份原生运行时相同的主机级访问权限。Docker 的默认沙箱会丢弃能力(如 `NET_ADMIN`)并应用 seccomp 过滤器,这会破坏底层工具(iptables/route 更改、ARP 欺骗/MITM、tun/tap VPN、基于 ptrace 的调试器、masscan 接口调优)。由于镜像无法自行授予这些权限,必须在运行时设置。该容器是一个一次性的、网络隔离的扫描沙箱,以 root 身份运行——privileged 是预期的姿态;切勿在没有认证的情况下公开暴露仪表板。更倾向于最小权限?将 `--privileged` 替换为 `--cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined`。
打开 `http://localhost:9137`。你**无需 LLM 密钥即可开始**——仪表板无需密钥即可启动;在 **设置 → LLM** 下设置模型和 API 密钥(它会持久化到 `/data` 卷)。如果你不传入 `XALGORIX_USERNAME`/`XALGORIX_PASSWORD`,系统会生成一个随机管理员密码,并在首次运行时打印到容器日志中。
**最简单的方式——Docker Compose**(为你映射端口并创建持久卷):```bash
curl -sSLO https://raw.githubusercontent.com/xalgorix/xalgorix/main/docker-compose.yml
docker compose up -d
docker compose logs -f # shows the generated admin password on first start
该镜像预装了一套全面的进攻性安全工具集(nmap、nuclei、httpx、subfinder、katana、ffuf、gobuster、sqlmap、masscan、dalfox、feroxbuster 等),并且保留了所有包管理器(apt、go、cargo、pipx、npm),因此代理仍可在运行时自动安装任何缺失的工具。按设计,它在容器内以 root 身份运行——请将容器视为一次性的、网络隔离的扫描沙箱,切勿在未启用认证的情况下暴露仪表板。镜像同时发布 amd64 和 arm64 版本。
或从源码构建(需要 Go 1.26+ 和 Node.js):```bash git clone https://github.com/xalgorix/xalgorix.git cd xalgorix make build sudo install -m 755 build/xalgorix /usr/local/bin/xalgorix
> [!TIP]
> 想要零配置?托管版本运行在 [www.xalgorix.com](https://www.xalgorix.com/) — 点击即扫,无需安装或 API 密钥。
### 🤖 自动审查拉取请求 — 免费 GitHub App
想要在每个拉取请求上零配置获得安全审查?安装 **[Xalgorix GitHub App](https://github.com/apps/xalgorix)**。它会读取每个 PR 的 diff 并在拉取请求上直接评论安全审查 — 注入、认证缺陷/IDOR、SSRF、密钥泄露、不安全模式。新提交时会就地更新,你可以评论 **`@xalgorix review`** 按需重新运行。无需工作流文件、无需 API 密钥、无需账户 — 而且是免费的。
<div align="center">
[**➕ 将 Xalgorix 添加到 GitHub →**](https://github.com/apps/xalgorix/installations/new)
</div>
如需在 CI 中进行合并门禁和完整漏洞验证的渗透测试,请使用[托管扫描器](https://www.xalgorix.com/)或 GitHub Action。
> [!IMPORTANT]
> 仅在您拥有或获得明确测试许可的系统上使用 Xalgorix。
> [!TIP]
> 不想自托管?托管版本可在 [www.xalgorix.com](https://www.xalgorix.com/) 获取 — 点击即扫,无需安装或 API 密钥。
## 📚 目录
| | | |
| --- | --- | --- |
| 📸 [截图](#-screenshots) | 🔩 [配置](#-configuration) | 🧾 [环境变量](#-environment-variables) |
| 🚀 [快速开始](#-quick-start) | 🆙 [升级](#-upgrading-from-previous-versions) | 🔤 [提供商前缀](#-provider-prefixes) |
| 🔎 [概述](#-overview) | 🏃 [运行](#-running) | 💻 [CLI 参考](#-cli-reference) |
| 💡 [为什么选择 Xalgorix](#-why-xalgorix) | 🧰 [服务模式](#-service-mode) | 📡 [API 摘要](#-api-summary) |
| 🎯 [使用场景](#-use-cases) | 🔁 [Web UI 工作流](#-web-ui-workflow) | 💾 [数据存储](#-data-storage) |
| ✨ [功能特性](#-features) | 🔀 [扫描模式](#-scan-modes) | 🧪 [开发](#-development) |
| 📥 [安装](#-installation) | 📂 [扫描您的代码](#-scan-your-code-no-target-needed) | 🚨 [安全注意事项](#-safety-notes) |
| 🧭 [方法论](#-methodology) | 📄 [报告](#-reports) | 📜 [许可证](#-license) |
| 🔧 [设置](#-settings) | 🔗 [链接](#-links) | |
## 🔎 概述
Xalgorix 是一个自托管的 AI 渗透测试平台,适用于授权安全测试、漏洞评估和漏洞赏金工作流。它结合了 LLM 驱动的自主代理、浏览器自动化、终端工具、全面的 22 阶段测试方法论、实时 WebSocket 遥测、带 CVSS 评分的发现管理、品牌化 PDF 报告生成,以及 AgentMail、Discord 和 Telegram 的集成。
与纯云 DAST 扫描器不同,Xalgorix 完全在您的机器上运行。您自带 LLM 提供商(OpenAI、Anthropic、DeepSeek、Gemini、Groq、Ollama、MiniMax),并控制模型、推理力度、速率限制和代理配置。任何扫描数据、API 密钥或目标信息都不会离开您的基础设施。
默认体验是 Web UI。从一个本地仪表板,您可以启动扫描、监控正在运行的扫描、检查发现、配置模型/提供商设置、管理环境变量、生成品牌化 PDF 报告,以及删除或恢复历史扫描。
## 💡 为什么选择 Xalgorix
大多数扫描器只能**检测**。Xalgorix 能够**证明**。自主代理按照 22 阶段方法论工作,然后独立的验证器在报告前重新测试每个候选发现 — 因此您获得的是带证据的漏洞验证结果,而不是一堆需要人工分类的"可能"。
- 🧠 **AI 代理,而非模板引擎** — 推理认证流程、业务逻辑、IDOR/BOLA 以及签名扫描器无法发现的链式利用。
- ✅ **漏洞验证的发现** — 独立的验证器会单独复现每个发现;不确定的结果会被标记供审查,绝不会伪装成已确认。
- 🔒 **自托管且私密** — 在您的机器上使用您自己的 LLM 密钥运行;目标数据、密钥或发现不会离开您的基础设施。
- 🧩 **自带 LLM** — OpenAI、Anthropic、DeepSeek、Gemini、Groq、Ollama 或 MiniMax — 或任何兼容 OpenAI 的网关,如 [LiteLLM](#-litellm--openai-compatible-gateways-github-copilot-claude-opus-codex-openrouter-azure-local-models)(GitHub Copilot、Codex、OpenRouter、Azure)。您控制模型、推理力度和成本。
- 📄 **可审计的报告** — 带 CVSS 评分、概念验证和修复建议的品牌化 PDF。
### 📊 对比
| | **Xalgorix** | 模板扫描器(如 Nuclei) | 爬虫扫描器(如 OWASP ZAP) | 商业 DAST |
| -------------------------------------------- | ------------------------ | ------------------------------- | ---------------------------------- | ---------------------- |
| 方法 | 自主 AI 代理 | 签名 / 模板 | 爬虫 + 主动规则 | 签名 + 启发式 |
| 业务逻辑 / IDOR / 认证绕过覆盖 | ✅ | 有限 | 有限 | 部分 |
| 漏洞验证(证明影响) | ✅ 独立验证器 | ❌ | ❌ | 部分 |
| 误报负担 | 低(已验证) | 依赖模板 | 高 | 中等 |
| 自托管 / 数据本地保留 | ✅ | ✅ | ✅ | 通常为云 |
| 自带 LLM | ✅ | — | — | ❌ |
| 品牌化 PDF 报告 | ✅ | ❌ | 基础 | ✅ |
| 成本 | 开源 + 您的 LLM | 免费 | 免费 | $$$ |
> 方向性对比 — Nuclei 和 ZAP 在其擅长领域表现出色。Xalgorix 在此基础上增加了重推理的发现和漏洞验证层。
### ☁️ 自托管 vs 托管云
Xalgorix 是免费开源的 — 可永久自托管,无任何附加条件。[托管云](https://www.xalgorix.com/)运行**相同**的漏洞验证引擎;它面向那些不想管理 API 密钥、基础设施和不可预测的 LLM 账单的用户。两者都是一等公民 — 选择适合您的即可。
| | **自托管**(本仓库) | **[托管云](https://www.xalgorix.com/)** |
| ---------------------------------- | ---------------------------------------- | ----------------------------------------------- |
| 起步价格 | 免费,Apache-2.0 | 免费层 · 一次完整扫描 $1 起 |
| LLM API 密钥 | 自带并自行管理 | 已包含 — 无需处理 |
| 每次扫描成本 | 原始 LLM token — 可变,可能飙升 | 每个在线主机 1 积分 — 可预测 |
| 设置与运维 | 您自行安装、更新并运行工具链 | 无需运行 — 约 60 秒内完成扫描 |
| 带外基础设施(SSRF/盲 RCE) | 自行搭建 OOB 服务器 | 包含托管 OOB |
| 调度 · 团队 · RBAC | 自行实现 | 内置 |
| 更新 | `git pull` + 重新构建 | 始终使用最新引擎 |
| 数据驻留 / 离线 | ✅ 保留在您的基础设施上 · 支持隔离网络 | 运行在我们的基础设施上(可提供 DPA) |
**选择自托管**,如果数据必须保留在您的网络中、您想要完全控制,或者您将离线/隔离网络运行 — 这正是它的用途。**选择云**,如果您希望跳过 API 密钥、基础设施和意外的 token 账单,并且只为实际扫描的在线主机付费。
<div align="center">
[**☁️ 免费试用托管云 →**](https://www.xalgorix.com/) · [**⚖️ 比较实际成本(计算器)→**](https://www.xalgorix.com/hosted-vs-self-hosted)
</div>
如果 Xalgorix 为您节省了一次分类周期,请 **[⭐ 给仓库加星](https://github.com/xalgorix/xalgorix)** — 这确实能帮助其他人发现它。
## 🎯 使用场景
| 使用场景 | Xalgorix 如何提供帮助 |
| -------- | ------------------ |
| **渗透测试** | 针对授权目标运行完整的 22 阶段方法论。AI 代理处理侦察、漏洞发现、注入测试、SSRF、IDOR、认证绕过、竞态条件等 — 然后在报告前验证发现。 |
| **漏洞赏金猎捕** | 将 Xalgorix 指向范围内的目标,让代理枚举攻击面、测试常见漏洞类别,并输出带 CVSS 评分和概念验证证据的已验证发现。 |
| **红队行动** | 使用通配符和多目标扫描模式来映射组织的外部攻击面。浏览器辅助 DAST 处理静态扫描器遗漏的认证流程、表单和运行时行为。 |
| **安全研究** | 新型漏洞发现阶段推动代理超越已知模板匹配。自带 LLM(OpenAI、Anthropic、DeepSeek、Gemini、Ollama、MiniMax)以控制推理深度和成本。 |
| **持续安全测试** | 使用 `xalgorix --start` 作为系统服务运行。按计划扫描,将发现流式传输到 Discord 或 Telegram,并为利益相关者生成品牌化 PDF 报告。 |
| **DAST 自动化** | 针对 Web 应用的浏览器驱动测试 — 认证流程、表单、JavaScript 渲染内容和运行时行为。与 Caido 集成以进行代理流量检查。 |
## ✨ 功能特性
| 领域 | 能力 |
| -------------- | --------------------------------------------------------------------------------------------------------------------------- |
| 📊 仪表板 | 默认在 `127.0.0.1:9137` 上的本地 Web UI、扫描管理、实时状态、批量扫描操作和历史扫描恢复。 |
| 🔍 扫描 | 单目标、DAST、通配符和多目标流程,可选择方法论阶段。 |
| 📡 实时遥测 | 通过 WebSocket 传输工具调用、代理消息、发现、错误、HTTP 活动和 LLM 活动。 |
| 🐞 发现 | 扫描详情页、严重性过滤器、CVSS 详情、发现索引和已验证发现工作流。 |
| 📄 报告 | 带目标/公司名称、上传徽标、报告列表、打开/下载/删除操作的功能品牌化 PDF 报告。 |
| 🔔 集成 | AgentMail 测试收件箱、验证邮件、OTP 流程、邮件分类事件、Discord 和 Telegram 通知。 |
| ⚙️ 配置 | 用于 LLM、AgentMail、Discord、Telegram、代理、运行时、浏览器、认证、速率限制和资源的仪表板设置。 |
| 🛡️ 运行时安全 | 资源感知的实例限制和仅回环绑定,除非明确配置了带认证的外部访问。 |
## 📥 安装
最快的路径完全不需要工具链。
### ⚡ 一行安装(预构建二进制)```bash
curl -sSL https://www.xalgorix.com/install | bash
下载适用于您平台的最新发布二进制文件(Linux 或 macOS,amd64/arm64),并将其安装到 /usr/local/bin(或无需 sudo 的 ~/.local/bin)。可通过 XALGORIX_INSTALL_DIR 覆盖安装目录,或使用 XALGORIX_VERSION=vX.Y.Z 固定版本。
以交互方式完成首次配置——无需手动编辑环境文件:```bash xalgorix --setup
向导在重新运行时保留现有设置,在终端中隐藏 API 密钥输入,并可在完成后选择启动 Web UI。
### 🐳 Docker```bash
docker run --rm -p 9137:9137 \
--privileged \
-e XALGORIX_LLM=openai/gpt-5.6 \
-e XALGORIX_API_KEY=your_openai_api_key \
-v xalgorix-data:/data \
ghcr.io/xalgord/xalgorix:latest
--privileged(或更窄的 --cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined)赋予该工具集类似宿主的访问权限。Docker 的默认沙箱会丢弃能力并过滤系统调用,这会破坏底层工具(iptables/route/接口更改、ARP 欺骗/MITM、tun/tap VPN、基于 ptrace 的调试器)。镜像无法自行授予这些权限——它们是运行时决策——因此请传递该标志,或使用随附的 docker-compose.yml,它会为你设置好。
该镜像是开箱即用的:预装了全面的进攻性安全工具集(nmap、nuclei、httpx、subfinder、dnsx、naabu、katana、ffuf、gobuster、dalfox、feroxbuster、sqlmap、masscan、nikto、whatweb、hydra 等),外加用于浏览器辅助 DAST 的 Chromium。它还保留了完整的包管理器集合(apt、go、cargo、pipx、npm),因此代理会在运行时自动安装任何缺失的组件。扫描数据持久化到 /data 卷,服务器在容器内绑定 0.0.0.0——在将其暴露到 localhost 之外前,请设置 XALGORIX_USERNAME/XALGORIX_PASSWORD。
该容器按设计以 root 身份运行(引擎仅为 uid 0 启用运行时自动安装,且 apt/go/cargo 安装需要系统写入权限)。请将其视为一次性的、网络隔离的扫描沙箱。相同的标签会发布 linux/amd64 和 linux/arm64 的多平台清单,因此 Docker 会自动选择原生镜像。
首次运行时,如果你未设置仪表板认证,容器会生成一个随机管理员密码并将其打印到日志中(镜像绑定 0.0.0.0,而引擎在没有认证的情况下不会这样做)。设置 XALGORIX_USERNAME + XALGORIX_PASSWORD(或 XALGORIX_PASSWORD_HASH)以使用你自己的凭据。该二进制文件不会在容器内自行更新(XALGORIX_NO_AUTO_UPDATE=1)——拉取新的镜像标签即可升级。nuclei 引擎及其漏洞模板会在每次镜像构建时刷新到最新版本(发布 CI 和 redeploy.sh 会强制此操作);传递 --build-arg NUCLEI_VERSION=vX.Y.Z 可固定引擎版本,或使用 NUCLEI_REFRESH=0 ./redeploy.sh 以复用 Docker 的缓存。
| 要求 | 说明 |
|---|---|
| 操作系统 | Linux 或 macOS(amd64/arm64)。 |
检查你的 Go 版本:```bash go version
### 🔨 从源码构建```bash
git clone https://github.com/xalgorix/xalgorix.git
cd xalgorix
make build
sudo install -m 755 build/xalgorix /usr/local/bin/xalgorix
make build 会将 React Web UI 构建到 internal/web/static 中,然后构建 Go 二进制文件。
GOPROXY=direct GOSUMDB=off go install github.com/xalgord/xalgorix/v4/cmd/xalgorix@latest
## 🔩 配置
Xalgorix 按以下顺序加载配置。后面的来源会覆盖前面的来源。
| 顺序 | 来源 |
| ----- | -------------------------------------------------------------- |
| 1 | `/etc/xalgorix.env` |
| 2 | 通过 `sudo` 启动时的 `/home/<sudo-user>/.xalgorix.env` |
| 3 | `~/.xalgorix.env` |
| 4 | 进程中已存在的环境变量 |
创建本地环境文件:```bash
nano ~/.xalgorix.env
为获得最强的自主扫描结果,请选择当前前沿模型。下面的模型 ID 是一个具体示例;无需等待 Xalgorix 发布即可输入更新的兼容模型 ID。```bash XALGORIX_LLM=openai/gpt-5.6 XALGORIX_API_KEY=your_openai_api_key
### 🔌 提供商示例
OpenAI:```bash
XALGORIX_LLM=openai/gpt-5.6
XALGORIX_API_KEY=sk-...
自定义兼容 OpenAI 的提供商:```bash XALGORIX_LLM=custom/security-model XALGORIX_API_BASE=https://your-provider.example/v1 XALGORIX_API_KEY=your_provider_api_key
#### 🌉 LiteLLM / OpenAI 兼容网关(GitHub Copilot、Claude Opus、Codex、OpenRouter、Azure、本地模型)
由于 `XALGORIX_API_BASE` 接受任何兼容 OpenAI 的 `/v1/chat/completions` 端点,
Xalgorix 开箱即用地支持 [LiteLLM](https://docs.litellm.ai/) 代理——无需
在 Xalgorix 侧做任何更改。LiteLLM 负责处理上游提供商的认证(Copilot 设备
登录、Azure 密钥、OpenRouter、Ollama 等);Xalgorix 只需通过 OpenAI 协议与网关通信。
运行 LiteLLM(示例 `config.yaml`):```yaml
model_list:
- model_name: claude-opus-5
litellm_params:
model: github_copilot/claude-opus-5 # or openrouter/…, azure/…, ollama/…
general_settings:
master_key: sk-local-litellm-key
将 Xalgorix 指向它——使用 custom/ 前缀,这样模型名称会原样发送,并采用 OpenAI 聊天补全协议:```bash
XALGORIX_LLM=custom/claude-opus-5 # the LiteLLM model_name
XALGORIX_API_BASE=http://localhost:4000/v1 # your LiteLLM proxy
XALGORIX_API_KEY=sk-local-litellm-key # LiteLLM master_key / virtual key
相同的模式也适用于 GitHub Copilot Business/CLI、Claude Opus、Codex 风格的模型、
OpenRouter、Azure OpenAI 以及本地 Ollama 模型——凡是 LiteLLM 能路由的都可以。保留
`custom/`(或 `openai/`)前缀以及非 Anthropic/Gemini 的 `XALGORIX_API_BASE`,这样 Xalgorix
就会使用 LiteLLM 所期望的标准 OpenAI 请求格式。
### 🔔 可选集成```bash
GEMINI_API_KEY=AIza...
AGENTMAIL_POD=am_us_pod_47
AGENTMAIL_API_KEY=ak_...
XALGORIX_DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
XALGORIX_DISCORD_MIN_SEVERITY=high
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this-password
> [!TIP]
> 生产环境部署建议优先使用 `XALGORIX_PASSWORD_HASH`。
## 🆙 从旧版本升级
本次发布带来了一次稳定性与工作区隔离方面的改进,包含一项破坏性变更以及几个值得了解的新配置项。
### 💥 破坏性变更:默认工作区移至 `~/.xalgorix/data/`
扫描输出、笔记、计划及其他生成的产物现在存放于 `~/.xalgorix/data/` 下,而不再位于 `$CWD`(即二进制文件启动时所在的目录)。
如需保留原有行为,请将 `XALGORIX_DATA_DIR` 指向当前工作目录:```bash
export XALGORIX_DATA_DIR=$(pwd)
当在 $CWD 中检测到遗留标记(notes.json、_schedules/、vulnerabilities.json 或 YYYY-MM-DD/scan-* 目录)且 XALGORIX_DATA_DIR 未设置时,启动时会发出 [MIGRATION] 警告。Xalgorix 绝不会自动读取、复制或删除这些遗留文件;该警告仅用于提示,且每个进程只触发一次。
| 变量 | 默认值 | 描述 |
|---|---|---|
XALGORIX_LLM_MAX_INFLIGHT | 4 × EffectiveMaxInstances | 限制所有正在运行的扫描中并发的出站 LLM 调用数量。最小值为 1。已取消的等待者不占用槽位。 |
GET /api/status 现在会暴露以下字段:
xalgorix --web
打开:```text
http://127.0.0.1:9137
使用不同的端口:```bash xalgorix --web --port 8080
### 🌐 外部访问
仅在启用仪表板身份验证后,才绑定到其他接口:```bash
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this xalgorix --web --bind 0.0.0.0
[!WARNING] 服务器拒绝在未进行仪表板身份验证的情况下进行外部绑定。
xalgorix --target https://example.com
根据自定义指令:```bash
xalgorix --target https://app.example.com --instruction "Focus on SQL injection, IDOR, and auth bypass. Avoid destructive tests."
作为系统服务安装并启动:```bash sudo xalgorix --start
管理该服务:```bash
sudo xalgorix --restart
sudo xalgorix --stop
sudo xalgorix --uninstall
查看日志:```bash journalctl -u xalgorix -f
### 🌍 远程服务访问
仅在启用仪表板认证后,才将服务暴露给远程浏览器:```bash
sudo tee -a /root/.xalgorix.env >/dev/null <<'EOF'
XALGORIX_BIND=0.0.0.0
XALGORIX_USERNAME=admin
XALGORIX_PASSWORD=change-this
EOF
sudo xalgorix --restart
然后打开 http://<server-ip>:9137。
如果进程正在监听但页面在远程仍无法加载,请在服务器防火墙或云安全组中放行 TCP 端口 9137。
默认情况下,Xalgorix 拒绝扫描回环地址、localhost、私有网段或
其自身接口地址——这些是 Xalgorix 运行所在的机器,而非
目标。在自托管、单租户的机器上,你可以选择启用扫描
本地托管的演示/预发布应用:```bash
echo 'XALGORIX_ALLOW_LOCAL_TARGETS=true' | sudo tee -a /root/.xalgorix.env
sudo xalgorix --restart
仪表盘自身的监听器**始终**受到保护,即使启用此选项也是如此。
> **⚠️ 共享 / 多租户 / 托管部署:请保持此选项关闭。** 启用它
> 会让用户的扫描触及操作员自己的机器和内部网络。
> 默认情况下它是关闭的,因此无需任何操作即可保持安全 — 请勿设置
> `XALGORIX_ALLOW_LOCAL_TARGETS`(或将 `XALGORIX_ALLOW_LOCAL_TARGETS=false` 固定),
> 也不要将引擎的“设置”页面暴露给不受信任的用户。
## 🔁 Web UI 工作流程
1. 在 `http://127.0.0.1:9137` 打开仪表盘。
2. 前往“设置”,确认 LLM 提供商、API 密钥、速率限制以及可选的集成。
3. 从“新建扫描”创建扫描。
4. 选择扫描模式。
5. 当您需要聚焦运行时,选择方法学阶段。
6. 当只需实时报告特定严重级别时,设置严重级别过滤器。该过滤器仅影响实时仪表盘信息流和通知;PDF 报告和 `/api/findings` 始终包含代理发现的所有漏洞。
7. 添加公司名称并上传徽标,用于生成品牌化报告。
8. 从“概览”、“扫描详情”或“实时信息流”监控进度。
9. 从“扫描与报告”打开发现详情、下载报告或管理历史扫描。
## 🔀 扫描模式
| 模式 | 适用场景 |
| ---------------- | ------------------------------------------------------------------------------- |
| 🎯 单一目标 | 测试一个已知的 URL 或主机。 |
| 🌐 通配符 / 多目标 | 枚举相关目标并扫描发现的攻击面。 |
| 🧭 DAST | 针对 Web 应用、认证流程、表单和运行时行为的浏览器辅助测试。 |
## 📂 扫描您的代码(无需目标)
将 Xalgorix 指向一个代码库 — Git URL、本地路径或上传的 zip — 它
会直接扫描源代码。无需已部署的 URL,也无需搭建任何基础设施。```bash
# Source review (SAST): audit the code, no running target required
xalgorix --source ./my-app --code-scan review
# Provision + DAST: build & run the app locally, then pentest the running instance
xalgorix --source https://github.com/org/app.git --code-scan provision
| 代码扫描模式 | 功能 | 验证级别 |
|---|---|---|
review | 读取源代码,从入口点追踪用户输入 → 危险汇聚点,并报告可达的漏洞。无需实时目标。 | 源码验证 — 在代码中证明可达(明确标注为未经运行时利用)。 |
--source 接受 Git URL(浅克隆)、本地目录或上传/解压归档文件的路径。在 Web UI / 托管应用中,您还可以上传代码库的 .zip 文件(POST /api/upload-source)。Provision 模式会在代理的沙箱中运行应用的构建/启动命令,并且仅对应用启动所在的单个回环端口进行渗透测试——仪表板及机器上的其他一切均不在测试范围内。
Xalgorix 将自主测试组织为 22 个阶段。
Web UI 中的阶段选择允许您运行所有阶段,或仅运行特定参与所需的子集。
报告以 PDF 文件形式生成,可包含:
| 部分 | 包含内容 |
|---|---|
| 📌 摘要 | 执行摘要、目标元数据、扫描元数据和严重性概览。 |
| 🐞 发现 | 已验证的发现、CVSS 详情、技术分析和利用证明。 |
| 🔬 证据 | 概念验证命令、脚本、载荷说明和支持性观察。 |
| 🩹 修复 |
报告可从扫描详情页面和报告页面获取。报告行支持打开、下载和删除。
大多数操作设置可在 Web UI 的“设置”下更改。
某些设置需要重启,因为它们影响进程启动或服务器绑定。UI 会标记这些字段。
当 XALGORIX_API_BASE 为空时,Xalgorix 会根据模型前缀推断提供商默认值。
模型名称并未硬编码到此列表。设置页面接受手动输入的模型 ID,因此无需等待 UI 下拉菜单更新即可使用更新的提供商模型。
Web 模式扫描数据存储在:```text
~/xalgorix-data/
|-- _saved/
|-- logos/
|-- queue_state.json
-- <target>/ -- /
-- <scan-id>/ |-- scan.json -- report.pdf
服务器会将历史扫描记录保存在磁盘上,以便界面在刷新或重启后能够恢复。
## 🧪 开发
| 任务 | 命令 |
| --------------------------- | ----------------------------- |
| 📦 安装 Web UI 依赖 | `make webui-install` |
| 🔨 构建所有内容 | `make build` |
| ✅ 运行测试 | `go test ./...` |
| 🖥️ 从源码运行 Web UI | `go run ./cmd/xalgorix --web` |
| ⚡ 运行前端开发服务器 | `make webui-dev` |
## 🚨 安全注意事项
- 仅对已授权的目标使用 Xalgorix。
- 未经许可,请勿对第三方系统进行主动测试。
- 启动扫描前请先查看扫描说明。
- 根据参与规则配置速率限制和代理设置。
- 对外暴露仪表板需要身份验证。
- 非 root 用户默认禁用自动安装,仅在你信任该环境时才应启用。
## 📜 许可证
Xalgorix 依据 Apache License 2.0 发布。请参阅 [LICENSE](https://github.com/xalgord/xalgorix/blob/main/LICENSE)。
## 🔗 链接
| 资源 | 链接 |
| ------------- | -------------------------------------------------------------------------------- |
| ☁️ 托管(云端) | [www.xalgorix.com](https://www.xalgorix.com/) |
| 📖 文档 | [docs.xalgorix.com](https://docs.xalgorix.com) |
| 🐛 问题 | [github.com/xalgorix/xalgorix/issues](https://github.com/xalgorix/xalgorix/issues) |
| ☕ 支持 | [buymeacoffee.com/xalgord](https://buymeacoffee.com/xalgord) |
| Go | 1.26 或更新版本。 |
| Node.js + npm | 从源码构建捆绑的 React Web UI 时需要。 |
| 安全工具 | 仅在启用自动安装时按需安装。 |
| 字段 | 含义 |
|---|
panics_recovered | 已恢复且未导致崩溃的 Goroutine、HTTP 处理器及工具 panic。 |
path_rejections | 因 Path_Policy(位于 data_dir / ~/.xalgorix/ / /tmp 之外)而被拒绝的文件系统写入。 |
watchdog_kills | 由每个工具的硬超时看门狗终止的子进程。 |
admission_refusals | 因并发上限而被拒绝的扫描准入请求。 |
llm_inflight_cap | 当前进程生效的 XALGORIX_LLM_MAX_INFLIGHT 值。 |
data_dir | 正在使用的已解析 Data_Dir。 |
allow_list | Path_Policy 接受的文件系统根目录。 |
provision |
检查仓库,在回环端口上构建并运行应用,然后对运行中的实例执行白盒引导的 DAST。如果应用无法构建,则回退到 review。 |
| 利用验证 — 已针对运行中的应用复现。 |
| 阶段 | 重点 |
|---|
| 1 | 侦察 |
| 2 | 手动漏洞发现 |
| 3 | 目录和文件发现 |
| 4 | CORS 和 Cookie 分析 |
| 5 | 认证和会话测试 |
| 6 | 注入测试 |
| 7 | SSRF 测试 |
| 8 | IDOR 和越权访问控制 |
| 9 | API 和 GraphQL 测试 |
| 10 | 文件上传测试 |
| 11 | 反序列化和 RCE |
| 12 | 竞态条件和业务逻辑 |
| 13 | 子域名接管 |
| 14 | 开放重定向测试 |
| 15 | 电子邮件安全测试 |
| 16 | 云和基础设施 |
| 17 | WebSocket 测试 |
| 18 | CMS 特定测试 |
| 19 | 失效链接劫持和内容欺骗 |
| 20 | 利用验证 |
| 21 | 新型漏洞发现 |
| 22 | 最终报告 |
| 修复指导和优先处理的下一步措施。 |
| 🎨 品牌 | 公司/目标名称和上传的徽标。 |
| 区域 | 示例 |
|---|
| 🤝 参与 | 仪表板请求速率限制 |
| 🧠 LLM | 模型、API 密钥、API 基础地址、推理力度、重试次数、最大迭代次数 |
| 📬 AgentMail | Pod 和 API 密钥 |
| 🔔 通知 | Discord webhook 和最低严重性、Telegram 机器人令牌、聊天 ID、最低严重性,以及可选的扫描完成摘要 |
| 🕵️ 代理 | 代理 URL、代理文件、轮换、TLS 验证 |
| 🧱 运行时 | 工作区、浏览器路径、自动安装控制 |
| 🔐 安全 | 仪表板用户名、密码、密码哈希、绑定地址 |
| 📈 资源 | CPU/内存/磁盘阈值和扫描并发预算 |
| 变量 | 默认值 | 描述 |
|---|
XALGORIX_LLM | 无 | 用于 LLM 请求的提供商原生模型 ID。 |
XALGORIX_LLM_PROVIDER | 无 | 由仪表板选择的提供商,与模型 ID 分开存储。 |
XALGORIX_API_KEY | 无 | 必需的 LLM 提供商 API 密钥。 |
XALGORIX_API_BASE | 提供商默认值 | 自定义 OpenAI 兼容 API 基础 URL。 |
XALGORIX_REASONING_EFFORT | high | 推理力度:none、low、medium、high 或 xhigh(对于 Ollama,xhigh 映射为 high)。 |
XALGORIX_LANGUAGE | en | AI 生成文本(代理推理、笔记、发现、报告内容、扫描后聊天)的输出语言。en 或 zh-CN。技术标记(载荷、命令、URL、CVE/CWE ID)始终保留原始形式。非拉丁语言会自动在仪表板和 HTML 报告中渲染。 |
XALGORIX_PDF_CJK_FONT | 无 | 包含 CJK 字形的 TrueType (.ttf) 字体的绝对路径,用于在导出的 PDF 报告中渲染非拉丁语言(例如简体中文)。仅支持 .ttf(不支持 .ttc/.otf)。未设置时,PDF 回退到核心字体,非拉丁字形将无法渲染(HTML 报告不受影响)。 |
XALGORIX_OLLAMA_COMPATIBLE | false | 将 Ollama 推理语义应用于非标准端口上的自定义端点。端口 11434 会自动检测。 |
XALGORIX_LLM_MAX_RETRIES | 5 | 临时 LLM 故障的重试次数。 |
XALGORIX_MEMORY_COMPRESSOR_TIMEOUT | 30 | 上下文压缩的超时时间(秒)。 |
XALGORIX_MAX_ITERATIONS | 0 | 代理迭代上限。0 表示无限制。 |
XALGORIX_PPROF_ADDR | 无 | 可选的 Go 分析器。设置后(例如 127.0.0.1:6060),会在该地址的 /debug/pprof/ 启动独立的 pprof 服务器,用于 CPU/堆诊断。默认禁用。会暴露进程内部信息——请绑定回环地址并通过 SSH 隧道访问;切勿公开暴露。 |
GEMINI_API_KEY | 无 | 用于网络搜索增强的可选 Gemini 密钥。 |
| 变量 | 默认值 | 描述 |
|---|
XALGORIX_BIND | 127.0.0.1 | Web 服务器监听地址。 |
XALGORIX_ALLOW_LOCAL_TARGETS | false | 允许在自托管安装中扫描本地托管的应用程序(localhost / 127.0.0.1 / 私有 IP)。仪表板自身的监听器始终受保护。在共享/托管部署中请保持关闭。 |
XALGORIX_USERNAME | 无 | 仪表板用户名。 |
XALGORIX_PASSWORD | 无 | 仪表板密码。 |
XALGORIX_PASSWORD_HASH | 无 | 首选 bcrypt 密码哈希。 |
XALGORIX_WORKSPACE | 当前目录 | 扫描执行的工作区根目录。 |
| 变量 | 默认值 | 描述 |
|---|
AGENTMAIL_POD | 无 | AgentMail pod 标识符。 |
AGENTMAIL_API_KEY | 无 | AgentMail API 密钥。 |
XALGORIX_DISCORD_WEBHOOK | 无 | 全局 Discord webhook。 |
XALGORIX_DISCORD_MIN_SEVERITY | 无 | 发送到 Discord 的最低严重性。 |
XALGORIX_TELEGRAM_BOT_TOKEN | 无 | 来自 @BotFather 的 Telegram 机器人令牌。 |
XALGORIX_TELEGRAM_CHAT_ID | 无 | Telegram 聊天/频道 ID(数字或 @用户名)。 |
XALGORIX_TELEGRAM_MIN_SEVERITY | 无 | 发送到 Telegram 的最低严重性。 |
XALGORIX_NOTIFY_SCAN_COMPLETE | false | 将扫描结束摘要发送到已配置的 Discord/Telegram 目标。这是可选的,不影响单个漏洞警报。 |
CAIDO_PORT | 0 | Caido 代理端口。0 表示自动检测。 |
CAIDO_API_TOKEN | 无 | Caido API 令牌。 |
| 变量 | 默认值 | 描述 |
|---|
XALGORIX_RATE_LIMIT_REQUESTS | 60 | 每个时间窗口的仪表板请求数。 |
XALGORIX_RATE_LIMIT_WINDOW | 60 | 仪表板速率限制窗口(秒)。 |
XALGORIX_RATE_RPS | 10 | 持续出站请求速率。 |
XALGORIX_RATE_BURST | 20 | 出站突发大小。 |
XALGORIX_USE_PROXY | false | 启用代理路由。 |
XALGORIX_PROXY_URL | 无 | 单个代理 URL。覆盖代理文件。 |
XALGORIX_PROXY_FILE | 无 | 每行包含一个代理的文件。 |
XALGORIX_PROXY_ROTATION | roundrobin | 代理轮换策略:roundrobin 或 random。 |
XALGORIX_TLS_SKIP_VERIFY | false | 跳过测试流量的 TLS 验证。 |
XALGORIX_DISABLE_BROWSER | false | 禁用浏览器自动化。 |
XALGORIX_BROWSER_PATH | 自动 | 自定义 Chrome/Chromium 可执行文件路径。 |
XALGORIX_ALLOW_AUTO_INSTALL | 仅 root | 允许自动安装软件包。 |
XALGORIX_AUTO_INSTALL_SUDO | false | 允许带 sudo 前缀的自动安装。 |
| 前缀 | 默认 API 基础地址 |
|---|
openai/ | https://api.openai.com/v1 |
anthropic/ | https://api.anthropic.com |
deepseek/ | https://api.deepseek.com/v1 |
groq/ | https://api.groq.com/openai/v1 |
google/ | https://generativelanguage.googleapis.com/v1 |
gemini/ | https://generativelanguage.googleapis.com/v1 |
ollama/ | http://localhost:11434/v1 |
minimax/ | https://api.minimax.io/v1 |
| 标志 | 别名 | 描述 |
|---|
--web | -w | 启动 Web UI。 |
--port <port> | -p | Web UI 端口。默认值:9137。 |
--bind <addr> | 无 | 绑定地址。默认值:127.0.0.1。 |
--target <target> | -t | 目标 URL、主机、IP 或路径。可重复。 |
--instruction <text> | -i | 自定义扫描指令。 |
--model <model> | -m | 覆盖本次运行的 XALGORIX_LLM。 |
--update | -up | 更新到最新版本。 |
--version | -v | 打印版本。 |
--start | 无 | 安装并启动系统服务。 |
--stop | 无 | 停止系统服务。 |
--restart | 无 | 重启系统服务。 |
--uninstall | 无 | 移除系统服务。 |
--help | -h | 显示帮助。 |
| 方法 | 端点 | 用途 |
|---|
POST | /api/scan | 启动或保存扫描。 |
POST | /api/stop | 停止所有正在运行的扫描。 |
GET | /api/status | 当前全局状态。 |
GET | /api/scans | 列出扫描。 |
GET | /api/scans/:id | 获取扫描详情。 |
DELETE | /api/scans/:id | 删除扫描及其报告数据。 |
GET | /api/findings | 列出所有发现(跨扫描去重)。 |
GET | /api/findings/summary | 跨所有扫描的严重性统计。 |
GET | /api/report/:id | 下载 PDF 报告。 |
GET | /api/instances | 列出实时和历史实例。 |
GET | /api/instances/:id/events | 获取缓冲的事件历史。 |
POST | /api/instances/:id/stop | 停止特定实例。 |
POST | /api/instances/:id/start | 将已保存或已完成的扫描作为新运行启动。 |
POST | /api/instances/:id/restart | 使用相同配置重启。 |
POST | /api/instances/:id/pause | 暂停正在运行的扫描。 |
POST | /api/instances/:id/resume | 恢复已暂停的扫描。 |
POST | /api/upload-logo | 上传报告徽标。 |
POST | /api/upload-targets | 上传目标列表。 |
GET | /api/settings/environment | 列出可编辑的环境设置。 |
POST | /api/settings/environment | 保存环境设置。 |
GET | /api/settings/llm | 获取 LLM 设置。 |
POST | /api/settings/llm | 保存 LLM 设置。 |
GET | /api/settings/agentmail | 获取 AgentMail 设置。 |
POST | /api/settings/agentmail | 保存 AgentMail 设置。 |
GET | /ws | WebSocket 实时事件流。 |