Ranveerrrrr/Blind-XSSTrace

GitHub: Ranveerrrrr/Blind-XSSTrace

自托管的 Blind XSS 回调接收与管理面板,支持无限标记路径和 Discord 告警,解决多注入点测试时难以溯源的问题。

Stars: 0 | Forks: 0

# XSSTrace ![Node.js](https://img.shields.io/badge/Node.js-18%2B-339933?logo=node.js&logoColor=white) ![Express](https://img.shields.io/badge/Express-4.x-000000?logo=express&logoColor=white) ![Render](https://img.shields.io/badge/Deploy-Render-46E3B7?logo=render&logoColor=000) ![Discord](https://img.shields.io/badge/Discord-Notifications-5865F2?logo=discord&logoColor=white) ![License](https://img.shields.io/github/license/Ranveerrrrr/XSSTrace) 一个自托管的 Blind XSS payload 服务器和命中控制面板,支持无限标记、页面分组、过滤、导入/导出以及 Discord 警报。 image ## 为什么会有这个项目 当你的回调工具无法提供足够的控制力时,Blind XSS 测试就会变得非常痛苦。 - Burp Collaborator 和 Interactsh 的 payload 是临时的,或者与某个会话绑定。 - 公共回调服务可能会过期、轮换或消失。 - 经典的 XSS Hunter 风格设置很有用,但许多工作流最终都只使用一个通用的 payload 路径。 - 在测试许多字段、表单、endpoint 和角色时,你需要确切地知道哪个 payload 被触发了。 这个项目为你提供了自己的域名和无限的标记路径: ``` ``` `/x/` 之后的所有内容都是标记。当它被触发时,控制面板会显示它的来源、触发时间,并能发送 Discord 通知。 ## 你将获得什么 - Payload 路由:`/x/` - 受密码保护的控制面板:`/dashboard` - 无限标记,例如 `/x/firstname-profile`、`/x/admin-note`、`/x/support-ticket` - 按页面 URL/站点进行命中分组 - 带有针对页面 URL、IP 和标记建议的过滤器 - 三点页面操作:复制 URL、剪切、粘贴到另一个页面组、删除 - 以 `callbacks.jsonl` 格式完整下载命中记录 - 导入旧的命中日志并追加它们,而不会替换当前的命中记录 - 可选的每次命中的 Discord webhook 通知 - 可选的 Render 持久磁盘支持,以便日志在重新部署后依然存在 ## 推荐架构 使用专用的子域名: ``` Main website: https://yourdomain.com Blind XSS server: https://xss.yourdomain.com Dashboard: https://xss.yourdomain.com/dashboard Payload base: https://xss.yourdomain.com/x/ ``` 不要将其放在静态主机后面。它需要一个后端,因为它要接收和存储回调。 ## 第 1 步:Fork 此仓库 1. 在 GitHub 上打开此仓库。 2. 点击 **Fork**。 3. 选择你的 GitHub 账户。 4. 如果你不想让控制面板代码/配置可见,请将你的 fork 保持**私有**。 你的 fork 将如下所示: ``` https://github.com/YOUR_USERNAME/XSSTrace ``` ## 第 2 步:克隆你的 Fork 仅在本地机器上克隆你的 fork,以便你可以更改示例值并推送你自己的副本。 ``` git clone https://github.com/YOUR_USERNAME/XSSTrace.git cd XSSTrace ``` ## 第 3 步:替换示例域名 在仓库中搜索: ``` xss.example.com example.com ``` 在文档或示例中将它们替换为你真实的回调子域名,例如: ``` xss.yourdomain.com ``` 重要的运行时值仍然是 Render 环境变量: ``` PUBLIC_BASE_URL=https://xss.yourdomain.com ``` ## 第 4 步:推送你的 Fork 在你完成 README/示例更改后: ``` git add . git commit -m "Configure dashboard for my domain" git push origin main ``` ## 第 5 步:创建 Render Web Service 1. 打开 [Render](https://render.com/)。 2. 点击 **New +**。 3. 选择 **Web Service**。 4. 连接 GitHub。 5. 选择你 fork 的仓库: ``` YOUR_USERNAME/XSSTrace ``` 6. 使用以下设置: ``` Environment: Node Build Command: npm install Start Command: npm start ``` 7. 创建服务。 Render 会为你提供一个临时域名,例如: ``` https://xsstrace.onrender.com ``` 如果你有自己的域名,请不要将其作为最终的 payload 域名。仅在你连接自定义子域名之前使用它。 ## 第 6 步:设置 Render 环境变量 在 Render 中: ``` Your Web Service -> Environment ``` 添加: | 键 | 示例 | 必需 | | --- | --- | --- | | `PUBLIC_BASE_URL` | `https://xss.yourdomain.com` | 是 | | `DASHBOARD_USERNAME` | `bugatsec` | 是 | | `DASHBOARD_PASSWORD` | `use-a-strong-password` | 是 | | `SESSION_SECRET` | `long-random-string` | 强烈推荐 | | `DISCORD_WEBHOOK_URL` | `https://discord.com/api/webhooks/...` | 可选 | | `DATA_DIR` | `/var/data` | 推荐配合持久磁盘使用 | 然后重新部署服务。 你可以检查控制面板身份验证是否已配置: ``` https://xss.yourdomain.com/health ``` 预期结果: ``` { "authConfigured": true } ``` `/health` endpoint 不会泄露你的用户名、密码、会话密钥或 Discord webhook URL。 ## 第 7 步:添加持久存储 如果你希望命中记录一直保留直到你删除它们,请添加一个持久磁盘。 在 Render 中: 1. 打开你的 Web Service。 2. 转到 **Disks**。 3. 添加一个磁盘。 4. 挂载路径: ``` /var/data ``` 5. 设置此环境变量: ``` DATA_DIR=/var/data ``` 命中日志将存储在: ``` /var/data/callbacks.jsonl ``` 如果没有持久磁盘,Render 可能会在重新部署/重启时丢失日志。 ## 第 8 步:连接你的子域名 使用如下子域名: ``` xss.yourdomain.com ``` 在 Render 中: 1. 打开你的 Web Service。 2. 转到 **Settings -> Custom Domains**。 3. 添加: ``` xss.yourdomain.com ``` 4. Render 将显示一个 DNS 目标。 在你的域名/DNS 控制面板中: 1. 创建 Render 要求你创建的 DNS 记录。 2. 通常这是一个 CNAME 记录,从: ``` xss ``` 指向类似于: ``` your-service.onrender.com ``` 3. 等待 DNS 传播。 4. 等待 Render TLS/HTTPS 生效。 最后,确保 Render 具有: ``` PUBLIC_BASE_URL=https://xss.yourdomain.com ``` 更改后重新部署。 ## 第 9 步:添加 Discord 警报 在 Discord 中: 1. 打开你想要接收警报的频道。 2. 转到 **Edit Channel -> Integrations -> Webhooks**。 3. 创建一个 webhook。 4. 复制 webhook URL。 5. 在 Render 中添加它: ``` DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/... ``` 每次新的命中都会发送一个 Discord 嵌入消息,包含: - 标记 - 来源类型 - IP - 页面 URL/referrer - 用户代理 ## 第 10 步:使用控制面板 打开: ``` https://xss.yourdomain.com/dashboard ``` 使用以下凭据登录: ``` DASHBOARD_USERNAME DASHBOARD_PASSWORD ``` 控制面板为你提供: - Payload 构建器 - 命中总数 - 唯一标记数 - 页面 URL 分组 - 针对页面 URL、IP 和标记的过滤器 - 三点页面操作 - 导入/导出控件 - 清除所有日志 ## Payload 用法 基本标记: ``` ``` 每个注入点的标记: ``` ``` 控制面板按页面 URL 对命中进行分组,并显示标记,以便你确切知道哪个 payload 被触发了。 Payload 构建器还可以生成双脚本变体: ``` "/> ``` 这在某些损坏的 HTML 上下文中很有帮助,因为在这些上下文中,一种注入形式的闭合/转义方式与另一种不同。 ## 记录了什么 应用会记录: - 标记 - 页面 URL 或 referrer - IP 地址 - 用户代理 - 浏览器语言 - 视口 - 来源类型 - 时间戳 来源类型: | 来源 | 含义 | | --- | --- | | `payload-load` | `/x/` JavaScript URL 被请求 | | `script` | JavaScript 已执行并回调 | | `image` | 图片后备方案被触发 | | `import` | 命中来自导入的日志 | ## 控制面板页面操作 每个页面组都有一个三点菜单: - `Copy URL` 复制页面 URL/组键 - `Cut` 选中该页面组中的所有命中记录 - `Paste here` 将剪切的命中记录移动到另一个页面组 - `Delete` 删除该页面组的所有命中记录 ## 导入和导出 `Download hits` 下载当前的后端日志: ``` callbacks.jsonl ``` 选择导入文件会在浏览器中预览它。它不会立即上传。 `Add to logs` 将预览的命中记录追加到后端日志中。它不会替换现有的命中记录。 支持的导入格式: - JSONL,每行一条命中记录 - JSON 数组 - 带有 `callbacks` 数组的 JSON 对象 ## 安全说明 - 如果你不想让别人检查你的设置,请将你的 fork 保持私有。 - 不要提交真实的控制面板密码。 - 不要提交 Discord webhook URL。 - 不要提交 `callbacks.jsonl`。 - 为你的回调域名使用 HTTPS。 - 使用强 `SESSION_SECRET`。 - 如果你不小心暴露了凭据,请立即轮换它们。 ## 许可证 参见 [LICENSE](LICENSE)。
标签:Blind XSS, Bug Bounty, CISA项目, Discord通知, Express, GNU通用公共许可证, Go语言工具, meg, MITM代理, Node.js, Payload生成, Render, Self-hosted, Web安全测试, XSS, 云部署, 代码生成, 仪表盘, 信息安全, 可自定义解析器, 回调服务, 开源安全工具, 攻击负载, 数据展示, 渗透测试工具, 漏洞情报, 红队, 网络安全, 自定义脚本, 逆向工程平台, 隐私保护