iluaii/IluskaX
GitHub: iluaii/IluskaX
一个基于 Go 的 Web 安全扫描框架,整合爬取与多阶段漏洞检测,支持 CLI 与 TUI 模式。
Stars: 3 | Forks: 0
# IluskaX
基于 Go 的 Web 安全扫描器,包含两个二进制文件:
- `luska`:用于爬取、JS 解析、站点地图生成,以及可选的安全测试交接
- `pentest`:用于对爬取文件进行漏洞检查
它可以作为简单的 CLI 扫描器运行,也可以在渗透测试阶段使用 Bubble Tea TUI。
## 仅限授权使用
IluskaX 严格仅用于:
- 授权的漏洞赏金研究
- 实验室环境中的安全测试
- 扫描您拥有的网站、主机和应用程序
- 扫描您已获得明确书面许可的测试目标
未经授权,请勿对第三方基础设施、网站、API 或网络使用 IluskaX。
本项目不适用于未授权访问、对随机目标的大规模扫描、破坏行为或非法活动。
## 构建
```
git clone https://github.com/iluaii/IluskaX
cd IluskaX
go mod tidy
go build -o luska ./main.go
go build -o pentest ./cmd/pentest/main1.go
```
## 需求
核心爬取逻辑为纯 Go 编写,但部分渗透测试阶段依赖 `$PATH` 或特定路径下的外部工具:
- `subfinder`:用于子域名枚举
- `httpx`(位于 `~/go/bin/httpx`):用于子域名探测(阶段 0.1)
- `nuclei`:基于模板的检查
- `sqlmap`:用于 SQL 注入测试
- `dalfox`:用于 XSS 测试
如果某个工具缺失,仅对应阶段会失败或跳过。
## 快速开始
### 仅爬取
```
./luska -u https://example.com
```
### 爬取并使用自定义头部(漏洞赏金)
```
./luska -u https://example.com -H 'X-Bug-Bounty: yourhandle' -H 'X-Forwarded-For: 127.0.0.1'
```
### 爬取并运行渗透测试
```
./luska -u https://example.com -ps
```
### 爬取并使用自定义头部进行渗透测试
```
./luska -u https://example.com -ps -H 'X-Bug-Bounty: yourhandle' -cookie 'session=abc123'
```
### 爬取并导出报告进行渗透测试
```
./luska -u https://example.com -ps -o report.txt
```
### 爬取并使用独立的内外网速率限制进行渗透测试
```
./luska -u https://example.com -ps -rate 10 -ext-rate 2
```
### 对现有爬取文件进行渗透测试
```
./pentest -f 'output/example.com|2026-04-08_11-30-00.txt' -host example.com
```
### 在 TUI 模式下运行渗透测试
```
./pentest -f 'output/example.com|2026-04-08_11-30-00.txt' -host example.com -ui tui
```
### 运行完整流程并在渗透测试阶段使用 TUI
```
./luska -u https://example.com -ps -ui tui
```
### 使用 httpx 探测进行子域名枚举
```
./luska -u https://example.com -sd -ps
```
注意:当 `luska` 以 `-ps -ui tui` 启动时,爬取仍保持普通 CLI 模式,仅子进程 `pentest` 使用 TUI。
## `luska` 参数
| 参数 | 默认值 | 描述 |
|---|---|---|
| `-u` | 必需 | 目标 URL |
| `-H` | 空值 | 自定义头部 `名称: 值`(可重复) |
| `-r` | `false` | 启用递归爬取 |
| `-rd` | `0` | 最大递归深度 |
| `-ps` | `false` | 爬取后运行渗透测试 |
| `-sd` | `false` | 爬取前运行子域名枚举 |
| `-rate` | `10` | IluskaX 内置爬取和渗透测试 HTTP 探针的请求速率(每秒) |
| `-ext-rate` | `0` | 外部工具的请求速率,`0` 表示无限制 |
| `-c` | `5` | 最大并发协程数 |
| `-ignore-robots` | `false` | 忽略 `robots.txt` 限制 |
| `-sqlmap-level` | `0` | SQLMap 起始级别,`0 = 自动` |
| `-sqlmap-risk` | `0` | SQLMap 起始风险,`0 = 自动` |
| `-cookie` | 空值 | 认证扫描用的 Cookie 头 |
| `-burp` | 空值 | 用于 SQLMap 的 Burp 请求文件路径 |
| `-skip` | 空值 | 爬取期间跳过的路径模式(逗号分隔) |
| `-skip-phase` | 空值 | 跳过的阶段(逗号分隔) |
| `-timeout` | `0` | 总爬取超时(分钟),`0` 表示无限制 |
| `-o` | 空值 | 输出报告路径 |
| `-json-out` | 空值 | 输出 JSON 报告路径 |
| `-ui` | `cli` | UI 模式:`cli` 或 `tui` |
## `pentest` 参数
| 参数 | 默认值 | 描述 |
|---|---|---|
| `-f` | 必需 | 爬取输出文件 |
| `-H` | 空值 | 自定义头部 `名称: 值`(可重复) |
| `-host` | `target` | 输出/报告命名的主机标签 |
| `-date` | 当前时间 | 输出命名的日期标签 |
| `-skip-phase` | 空值 | 跳过的阶段(逗号分隔) |
| `-sqlmap-level` | `0` | SQLMap 起始级别,`0 = 自动` |
| `-sqlmap-risk` | `0` | SQLMap 起始风险,`0 = 自动` |
| `-cookie` | 空值 | 认证扫描用的 Cookie 头 |
| `-burp` | 空值 | 用于 SQLMap 的 Burp 请求文件路径 |
| `-rate` | `10` | 渗透测试内置 HTTP 探针的请求速率(每秒) |
| `-ext-rate` | `0` | 外部工具的请求速率,`0` 表示无限制 |
| `-o` | 空值 | 导出最终报告到自定义路径 |
| `-json-out` | 空值 | 导出最终报告为 JSON |
| `-ui` | `cli` | UI 模式:`cli` 或 `tui` |
## 自定义头部
`-H` 参数会将头部注入到 IluskaX 内置扫描器发起的每个 HTTP 请求中。这对于需要标识头部的漏洞赏金项目非常重要。
```
./luska -u https://example.com -ps \
-H 'X-Bug-Bounty: yourhandle' \
-H 'User-Agent: Mozilla/5.0 (custom)' \
-H 'X-Forwarded-For: 127.0.0.1'
```
自定义头部适用于:
- 爬虫页面获取
- robots.txt 获取
- 端点发现期间的 JS 文件获取
- 快速 SQL 注入检查
- POST 和 Cookie 注入探测
- 头部和 Cookie 分析请求
启动 `luska -ps` 时,自定义头部会自动转发给 `pentest`。
## 速率限制
- `-rate` 控制 IluskaX 直接生成的 HTTP 流量
- `-ext-rate` 控制外部工具,默认为 `0`,表示无限制
内置流量包括:
- 爬虫页面获取
- `robots.txt`
- 端点发现期间的 JS 获取
- 快速 SQL 注入检查
- POST 和 Cookie 注入探测
- 头部和 Cookie 分析
外部工具速率限制应用于:
- `subfinder`
- `httpx`
- `nuclei`
- `sqlmap`
- `dalfox`
示例:
```
./luska -u https://example.com -ps -rate 10 -ext-rate 2
./pentest -f 'output/example.com|2026-04-08_11-30-00.txt' -host example.com -rate 10 -ext-rate 1
```
## UI 模式
- `cli`:打印纯终端输出和最终表格
- `tui`:在渗透测试执行期间使用 Bubble Tea
在 TUI 模式下:
- 包含一个全局导航层,包括 `Dashboard`、`Findings`、`Targets`、`History` 和 `New Scan`
- 选择一个扫描会打开详细视图,包含 `Logs`、`Findings`、`Targets` 和 `Control`
- 实时日志在视口中滚动
- 屏幕填满时,较旧的行会从可见区域消失
- 从 TUI 启动的后台扫描会通过轮询日志文件实时显示当前阶段和进度
- 扫描完成后,TUI 保持打开并显示完成消息
- 按 `Esc` 退出已完成的 TUI 并打印最终发现表格和摘要
## 爬取输出
爬虫收集:
- 范围内的链接
- GET 和 POST 表单
- JS 文件和内联 JS 块
- 从 JavaScript 模式(如 `fetch`、XHR、axios、模板字符串和 API 赋值)中提取的端点
同时:
- 默认遵守 `robots.txt`
- 范围限制在目标主机名下
- 过滤常见静态资源
- 按路径和查询参数名称对端点去重
爬取结果写入:
```
output/|.txt
```
## 渗透测试阶段
### 阶段 0:子域名
使用 `subfinder` 发现子域名。发现的子域名不会直接写入爬取文件,而是先传递给阶段 0.1 进行验证。
如果设置了ext-rate`,会将其转发给 `subfinder`。
### 阶段 0.1:httpx 探测
对阶段 0 中发现的子域名运行 `httpx`(位于 `~/go/bin/httpx`)。只有返回有效 HTTP 响应的子域名才会被写入爬取文件并加入扫描范围。
如果设置了 `-ext-rate`,会将其转发给 `httpx`。
### 阶段 1:快速 SQL 注入测试
对参数化 URL 和表单进行快速检查:
- 基于时间的有效载荷
- 布尔型响应比较
- POST 表单检查
- 存在 Cookie 时的 Cookie 探测
如果发现可疑情况,SQLMap 设置会自动升级。
### 阶段 2:Nuclei
对发现的 URL 运行 `nuclei`。
如果设置了 `-ext-rate`,会将其转发给 `nuclei`。
### 阶段 3:SQLMap
对参数化 URL 和 POST 表单运行 `sqlmap`。
支持:
- 在可疑的 Phase 1 结果后自动升级
- 通过 `-burp` 使用 Burp 请求文件
- 通过 `-cookie` 转发 Cookie 头
- 通过 `-ext-rate` 进行可选的外部速率限制
### 阶段 4:Dalfox
对带参数的 URL 运行 `dalfox` 以检测 XSS。
如果设置了 `-ext-rate`,IluskaX 会降低 Dalfox 吞吐量以接近该速率。
### 阶段 5:头部和 Cookie 分析
检查与安全相关的响应头部和 Cookie 设置。
重要说明:
- 缺失的头部被视为建议或信息性发现
- 实际的头部或 Cookie 配置错误会与已确认的漏洞分开显示
## 报告
默认文件:
```
output/|.txt
Poutput/|_report.txt
Poutput/sqlmap/
```
如果提供了 `-o`,IluskaX 还会写入一个自定义导出文件,包含:
- 站点地图
- 发现表格
- 最终摘要
如果提供了 `-json-out`,IluskaX 会写入一个机器可读的 JSON 报告,包含:
- 站点地图
- 包含级别、类型、URL、载荷和详细信息的发现
- 漏洞、警告、信息性发现和耗时的统计计数
## TUI 概览
### 仪表盘
显示活动扫描列表及每个扫描的当前状态:
- 目标
- 状态徽章
- 当前阶段(从日志轮询获取,针对后台扫描)
- 进度百分比
- 发现计数
在选定的扫描上按 `Enter` 打开详细视图。
### 发现
显示在运行扫描期间收集到的问题,与原始日志分离。
你可以在 TUI 中直接过滤和搜索:
- `0`:所有发现
- `1`:仅漏洞
- `2`:仅警告
- `3`:仅信息
- `/`:进入搜索模式
### 目标
在全局 TUI 视图中,`Targets` 显示按扫描分组的发现目标,并在每个扫描内按主机分组。
在扫描详细视图中,`Targets` 仅显示为该扫描收集的目标。
示例:
```
localhost [FINISHED]
http://localhost:3000
├─ /
├─ /?q=1
└─ /xss?q=test
```
### 历史记录
显示在当前 TUI 会话中启动或完成的扫描,以及排队项。
已完成和已启动的扫描历史记录会持久化到 `Poutput/tui_history.json`,因此在 TUI 启动之间保持可用。
在 `History` 标签页中按 `x` 可在不手动删除文件的情况下清除保存的历史记录。
### 新扫描
允许在 TUI 内部准备新命令。
你可以:
- 输入目标 URL
- 添加额外参数(包括 `-H 'X-Bug-Bounty: handle'`)
- 选择 `立即运行` 以启动后台 `luska` 进程
- 选择 `排队` 以将扫描存储在本地会话队列中
- 在执行前确认所选操作
`立即运行` 会启动一个新的后台进程,并将输出写入 `Poutput/` 中的日志文件。
### 控制
对于从 TUI 启动的后台扫描,`Control` 标签页可以:
- 暂停或恢复选定的扫描
- 重新启动选定的扫描
- 停止选定的扫描
- 在执行操作前显示确认提示
## TUI 控件
- `Tab` 和 `Shift+Tab` 切换标签页
- `←` 和 `→` 也可以切换标签页
- `↑` 和 `↓` 移动选择或滚动
- `Enter` 打开扫描详细信息或确认当前 `新扫描` 中的操作
- `Esc` 从扫描详细信息返回到全局标签页
- 扫描完成后,按 `Esc` 退出 TUI 并返回普通终端输出
- `0`、`1`、`2`、`3` 在 `发现` 标签页中按严重性过滤发现
- `/` 进入发现搜索模式
- `x` 在 `历史记录` 标签页中清除保存的历史记录
- 在 `新扫描` 中,使用 `↑` 和 `↓` 移动焦点到各个字段
- 在 `新扫描` 中,使用 `←` 和 `→` 在 `操作` 字段中切换 `立即运行` 和 `排队`
- 在 `新扫描` 中,使用 `Enter` 在 `操作` 字段上打开确认提示
- 使用 `Enter` 或 `y` 确认操作,使用 `Esc` 或 `n` 取消
- 在 `控制` 中,`p` 暂停或恢复选定的后台扫描
- 在 `控制` 中,`r` 重新启动选定的后台扫描
- 在 `控制` 中,`s` 停止选定的后台扫描
## 跳过阶段
示例:
```
./luska -u https://example.com -ps -skip-phase 2,4
```
阶段映射:
- `0` = 子域名枚举
- `0.1` = httpx 探测(自动在阶段 0 后运行,无法独立跳过)
- `1` = 快速 SQL 注入
- `2` = Nuclei
- `3` = SQLMap
- `4` = Dalfox
- `5` = 头部和 Cookie 分析
对于直接的 `pentest`,支持的跳过值为 `1` 到 `5`。
## 注意事项
- User-Agent:`LuskaScanner/1.0`
- 自定义 `-H` 头部会覆盖 `User-Agent`(如果指定了 `User-Agent`)
- 爬取请求超时较短,针对扫描进行了优化,而非浏览
- JS 解析和端点提取优先追求广度而非完美的语义准确性
- TUI 仅用于渗透测试阶段,而不是作为整个爬取管道的完整屏幕包装器
- 后台 TUI 扫描的阶段显示通过每 250ms 轮询日志文件更新
## 法律声明
IluskaX 仅应用于授权的安全工作,包括漏洞赏金项目、私有实验室以及您拥有或明确获授权测试的基础设施。
您不得使用此项目对系统、端点、API 或网络进行扫描、探测、攻击、压力测试或枚举。
作者不授权此软件的非法使用。该仓库为公共仓库,并不授予测试第三方目标的权限。
通过使用 IluskaX,您单独负责确保您的活动符合所有适用法律、平台规则、合同和项目策略。
标签:Bubble Tea, Bug Bounty, Go, HTTP探测, Ruby工具, SQL注入检测, TUI界面, Web安全扫描, XSS检测, 主机扫描, 云存储安全, 可自定义解析器, 多线程扫描, 子域名枚举, 安全测试, 开源安全工具, 报告导出, 授权测试, 攻击性安全, 日志审计, 模板检测, 渗透测试框架, 系统安全, 网络扫描, 自动化安全评估, 运行时操纵, 逆向工程平台, 防御