MrpasswordTz/acunetix-cli
GitHub: MrpasswordTz/acunetix-cli
Acunetix 漏洞扫描器的 Python CLI 封装工具,内置免费公共实例,支持零配置快速扫描、批量操作、多用户协作和自动化报告生成。
Stars: 0 | Forks: 0
# AcuScan CLI v3.0
### 作者
**MrpasswordTz** — [GitHub](https://github.com/MrpasswordTz)
**技术支持:** MrpasswordTz
## 为什么选择 AcuScan CLI?
**大多数漏洞扫描器都需要您购买许可证并搭建服务器。**
AcuScan CLI 与众不同 —— 它内置了一个**免费的公共 Acunetix 实例**。
```
Install → Scan → Done. No API keys, no accounts, no cost.
```
## 亮点
| 特性 | 描述 |
|---------|-------------|
| **免费公共服务器** | 内置 Acunetix 实例 —— 无需设置,无需 API key |
| **零配置** | 开箱即用,安装后立即扫描 |
| **多用户配置** | 每个用户的命名配置 —— 切换身份/服务器 |
| **扫描归属** | 使用 `--my-scans` 追踪谁启动了哪个扫描 |
| **实时监控** | 带有实时漏洞警报的 `--watch-scan` |
| **批量操作** | 批量扫描 URL,批量生成报告 |
| **丰富报告** | 自动下载 PDF/HTML,跨扫描批量处理 |
| **精美 CLI** | 分类 `--help`,颜色编码的严重性,丰富的仪表板 |
| **弹性 API** | 指数退避自动重试,速率限制处理 |
| **灵活输出** | 每个列表命令支持 Table, JSON, CSV |
## 架构
```
┌──────────────────────────────────────────────────────────┐
│ Acunetix Server │
│ (All scans, targets, reports are instance-level data) │
│ │
│ Users: alice@co.com (admin) · bob@co.com (user) │
└─────────────────────┬────────────────────────────────────┘
│ REST API (HTTPS)
┌───────────┴──────────┐
│ │
┌──────┴──────┐ ┌──────┴──────┐
│ Alice's PC │ │ Bob's PC │
│ acuscanner │ │ acuscanner │
│ profile: │ │ profile: │
│ default │ │ default │
│ (her key) │ │ (his key) │
└─────────────┘ └─────────────┘
```
**关键概念:** Acunetix 是*实例级*的。同一服务器上的所有认证用户
看到相同的目标、扫描和报告。这是设计使然 —— 它是一个共享的安全工具。
AcuScan CLI 添加了一个**本地配置层**,以便每个人存储自己的 API key
并可以筛选他们启动的扫描。
## 安装
### 快速安装
```
git clone https://github.com/MrpasswordTz/acunetix-cli.git
cd acunetix-cli
chmod +x install.sh
sudo ./install.sh
```
支持 **Debian/Ubuntu**、**RHEL/CentOS/Fedora** 和 **macOS** (通过 brew)。
### 手动 / 开发设置
```
git clone https://github.com/MrpasswordTz/acunetix-cli.git
cd acunetix-cli
pip3 install -r requirements.txt
python3 scanner.py --help
```
## 快速开始
安装后,**无需配置**。该工具会自动使用免费的公共服务器:
```
# 立即开始扫描 — 无需设置!
acuscanner --scan -u https://example.com
# 列出扫描
acuscanner --list-scans
# 检查当前连接用户
acuscanner --whoami
```
## 配置(可选)
如果您想使用**您自己的 Acunetix 服务器**而不是公共服务器:
### 连接您自己的服务器
```
acuscanner --setup
```
这会在 `cli/were/.env` 创建一个配置文件:
```
ACUNETIX_URL=https://YOUR_SERVER:3443/api/v1
ACUNETIX_API_KEY=YOUR_API_KEY
ACUNETIX_VERIFY_SSL=false
ACUNETIX_TIMEOUT=30
```
### 测试您的连接
```
acuscanner --test-connection
```
### 查看您认证的身份
```
acuscanner --whoami
```
## 多用户 / 团队设置
这是您处理**多人在不同位置使用同一个 Acunetix 实例**的方法。
### 第一步 — 每个用户获取一个 Acunetix 账户
在 Acunetix Web UI 中,管理员创建用户账户。每个用户从 Acunetix 仪表板的 `Profile → API Key` 获取自己的 **API Key**。
### 第二步 — 每个用户配置他们的 CLI
**在 Alice 的机器上:**
```
acuscanner --setup
# 输入 Alice 的 URL 和 API key
```
**在 Bob 的机器上:**
```
acuscanner --setup
# 输入 Bob 的 URL 和 API key
```
### 第三步 — 两个用户独立工作
```
# Alice 启动扫描
alice$ acuscanner --scan -u https://target.com
# Bob 列出所有扫描(包括 Alice 的) — 这是正常的!
bob$ acuscanner --list-scans
# Bob 仅查看他自己的扫描
bob$ acuscanner --my-scans
```
### 命名配置(高级)
如果一个人管理**多个 Acunetix 实例**或需要在 API key 之间切换:
```
# 创建 profiles
acuscanner --add-profile production
acuscanner --add-profile staging
# 为任何命令使用特定的 profile
acuscanner --use-profile production --list-scans
acuscanner --use-profile staging --scan -u https://staging.app.com
# 列出所有已保存的 profiles
acuscanner --list-profiles-config
# 删除 profile
acuscanner --del-profile-config staging
```
### 扫描共享如何工作
| 场景 | 发生什么 |
|----------|-------------|
| Alice 启动扫描 | Alice 和 Bob 都在 `--list-scans` 中看到它 |
| Bob 运行 `--my-scans` | 只显示 Bob 从他的 CLI 启动的扫描 |
| Alice 运行 `--my-scans` | 只显示 Alice 从她的 CLI 启动的扫描 |
| Bob 对 Alice 的扫描生成报告 | 完美运行 —— 扫描是共享的 |
| Alice 中止 Bob 的扫描 | 如果 Alice 拥有正确的权限则可以运行 |
| 两个用户同时 `--list-scans` | 无冲突 —— API 处理并发读取 |
## 使用方法
### 启动扫描
```
# 基本扫描
acuscanner --scan -u https://example.com
# 使用特定 profile 扫描
acuscanner --scan -u https://example.com --profile-id PROFILE_UUID
# 计划扫描
acuscanner --scan -u https://example.com --schedule "2026-06-01T09:00:00"
# 从文件批量扫描
acuscanner --bulk-scan urls.txt --delay 10
```
### 管理扫描
```
# 列出最近的扫描
acuscanner --list-scans --limit 30
# 仅列出您的扫描
acuscanner --my-scans
# 按状态过滤
acuscanner --list-scans --filter-status completed
acuscanner --list-scans --filter-status processing
# 按目标 URL 过滤
acuscanner --list-scans --filter-target example.com
# 组合过滤
acuscanner --list-scans --filter-status completed --filter-target prod --limit 50
# 实时查看扫描
acuscanner --watch-scan SCAN_ID --interval 10
# 获取详细状态
acuscanner --scan-status SCAN_ID
# 中止正在运行的扫描
acuscanner --abort-scan SCAN_ID
# 删除扫描
acuscanner --del-scan SCAN_ID
```
### 漏洞
```
# 列出扫描的漏洞
acuscanner --scan-vulns SCAN_ID --limit 50
# 获取漏洞的完整详情
acuscanner --vuln-details SCAN_ID RESULT_ID VULN_ID
# 导出为 JSON
acuscanner --export-vulns SCAN_ID -o vulnerabilities.json
# 导出为 CSV
acuscanner --export-vulns SCAN_ID -o vulnerabilities.csv
```
### 报告
```
# 列出报告模板
acuscanner --list-report-templates
# 生成报告(等待完成)
acuscanner --generate-report SCAN_ID --template developer
# 生成并自动下载
acuscanner --generate-report SCAN_ID --template executive --auto-download
# 批量生成多个扫描
acuscanner --batch-report "SCAN_ID1,SCAN_ID2,SCAN_ID3" --template owasp
# 从文件批量生成
acuscanner --batch-report scan_ids.txt --template pci --auto-download
# 列出生成的报告
acuscanner --list-reports
# 下载特定报告
acuscanner --download-report REPORT_ID -o audit_report.pdf
# 删除报告
acuscanner --del-report REPORT_ID
```
可用的模板名称:`developer`、`executive`、`quick`、`hipaa`、`owasp`、`pci`、`iso_27001`、`affected_items`(或使用 `--template-id UUID` 指定自定义模板)。
### 目标管理
```
# 列出所有 targets
acuscanner --list-targets
# 删除 target
acuscanner --del-target TARGET_ID
# 更新 target 属性
acuscanner --update-target TARGET_ID --description "Production API" --criticality 30
```
### 目标组
```
# 列出 groups
acuscanner --list-groups
# 创建 group
acuscanner --create-group "Production Servers" --description "All prod web servers"
# 向 group 添加 targets
acuscanner --add-to-group GROUP_ID "TARGET_ID1,TARGET_ID2"
# 删除 group
acuscanner --del-group GROUP_ID
```
### 扫描配置
```
acuscanner --list-profiles
```
### 用户(仅限管理员)
```
# 列出 Acunetix 实例上的所有用户
acuscanner --users
```
### 仪表板与统计
```
acuscanner --stats
```
显示一个丰富的盒状仪表板,包含:
- 总目标数、扫描数、运行中/已完成/失败数
- 按严重性聚合的漏洞摘要
- 当前配置和服务器信息
## 输出格式
每个列表命令都支持 `--format table|json|csv`:
```
# JSON(用于管道传输到 jq 或其他工具)
acuscanner --list-scans --format json | jq '.[].scan_id'
# CSV(用于电子表格)
acuscanner --list-targets --format csv > targets.csv
# 表格(默认,带颜色的人类可读格式)
acuscanner --scan-vulns SCAN_ID --format table
```
## 完整命令参考
### 配置与用户配置
| 命令 | 描述 |
|---------|-------------|
| `--setup` | 交互式配置向导(默认配置) |
| `--test-connection` | 测试 API 连接和认证 |
| `--whoami` | 显示当前用户身份和活动配置 |
| `--add-profile NAME` | 创建新的命名配置文件 |
| `--list-profiles-config` | 列出所有已保存的配置及 URL |
| `--del-profile-config NAME` | 删除已保存的配置 |
| `--use-profile NAME` | 为任何命令使用指定配置 |
| `--users` | 列出所有 Acunetix 实例用户 |
### 扫描
| 命令 | 描述 |
|---------|-------------|
| `--scan -u URL` | 启动一个新的漏洞扫描 |
| `--bulk-scan FILE` | 从文件批量扫描 URL |
| `--schedule DATETIME` | 计划未来的扫描 (ISO 8601) |
| `--profile-id UUID` | 使用特定的扫描配置 |
| `--delay N` | 批量扫描之间的秒数 |
### 扫描管理
| 命令 | 描述 |
|---------|-------------|
| `--list-scans` | 列出最近的扫描 |
| `--my-scans` | 仅显示您的扫描(按配置) |
| `--filter-status STATUS` | 按状态筛选 |
| `--filter-target URL` | 按目标 URL 筛选(子字符串) |
| `--scan-status SCAN_ID` | 带有严重性的详细扫描状态 |
| `--watch-scan SCAN_ID` | 实时监控 |
| `--abort-scan SCAN_ID` | 停止正在运行的扫描 |
| `--del-scan SCAN_ID` | 永久删除扫描 |
| `--scan-results SCAN_ID` | 列出结果会话 |
### 漏洞
| 命令 | 描述 |
|---------|-------------|
| `--scan-vulns SCAN_ID` | 列出扫描的漏洞 |
| `--vuln-details SCAN RESULT VULN` | 完整的漏洞详情 |
| `--export-vulns SCAN_ID -o FILE` | 导出为 JSON/CSV |
### 报告
| 命令 | 描述 |
|---------|-------------|
| `--list-report-templates` | 可用的模板 |
| `--generate-report SCAN_ID` | 生成报告 |
| `--batch-report IDS_OR_FILE` | 为多个扫描生成报告 |
| `--auto-download` | 生成后自动下载 |
| `--download-report REPORT_ID` | 下载报告 |
| `--list-reports` | 列出生成的报告 |
| `--del-report REPORT_ID` | 删除报告 |
### 目标与组
| 命令 | 描述 |
|---------|-------------|
| `--list-targets` | 列出所有目标 |
| `--del-target TARGET_ID` | 删除目标 |
| `--update-target TARGET_ID` | 更新目标字段 |
| `--list-groups` | 列出目标组 |
| `--create-group NAME` | 创建组 |
| `--add-to-group GID TIDS` | 将目标添加到组 |
| `--del-group GROUP_ID` | 删除组 |
### 全局选项
| 选项 | 描述 |
|--------|-------------|
| `--format table\|json\|csv` | 输出格式 |
| `--limit N` | 列表最大项数 |
| `-o FILE` | 输出文件路径 |
| `--interval N` | 监视轮询间隔 |
| `-v, --verbose` | 详细输出 |
## 故障排除
### 连接失败
```
[-] Connection FAILED. Check ACUNETIX_URL and ACUNETIX_API_KEY.
```
1. 验证您的 URL 包含 `/api/v1`:`https://10.0.0.1:3443/api/v1`
2. 在 Acunetix 仪表板的 Profile → API Key 下检查您的 API key
3. 如果使用 `ACUNETIX_VERIFY_SSL=false`,请确保服务器可达
4. 尝试:`curl -k -H "X-Auth: YOUR_KEY" https://10.0.0.1:3443/api/v1/me`
### 速率限制
```
[!] Rate-limited. Retry 1/3 in 2s …
```
AcuScan CLI 会自动进行指数退避重试。如果持续存在,请增加批量操作的 `--delay`。
### 找不到配置
```
[-] Profile 'alice' not found. Available: default, bob
```
首先创建配置:`acuscanner --add-profile alice`
### 两个用户看到所有扫描
**这是预期行为。** Acunetix 是实例级的 —— 所有认证用户共享扫描数据。使用 `--my-scans` 筛选出由您的 CLI 配置启动的扫描。
### 来自 Web UI 的扫描不显示在 `--my-scans` 中
`--my-scans` 仅追踪通过此 CLI 工具启动的扫描。通过 Acunetix Web 仪表板启动的扫描不会在本地追踪,但会显示在 `--list-scans` 中。
## 项目结构
```
acunetix-cli/
├── scanner.py # Main CLI application (v3.0)
├── install.sh # Cross-platform installer
├── requirements.txt # Python dependencies
├── README.md # This documentation
├── cli/
│ ├── utils.py # Output formatting & banner
│ └── were/
│ ├── .env # Default profile config
│ ├── scan_history.json # Local scan ownership tracker
│ └── profiles/ # Named user profiles
│ ├── alice.env
│ └── bob.env
```
## 更新日志
### v3.0.0 — 多用户与增强报告
- **新增:** 多用户命名配置(`--add-profile`, `--use-profile`)
- **新增:** 扫描归属追踪(`--my-scans`)
- **新增:** 用户管理(`--whoami`, `--users`)
- **新增:** 扫描筛选(`--filter-status`, `--filter-target`)
- **新增:** 批量报告生成(`--batch-report`)
- **新增:** 自动下载报告(`--auto-download`)
- **新增:** 丰富的仪表板(`--stats`)
- **新增:** 带有指数退避和速率限制处理的 API 重试
- **新增:** 分类、美观的 `--help` 输出
- **改进:** 全面的颜色编码状态和严重性
- **改进:** 跨平台安装程序
- **改进:** 带有可操作指导的错误消息
### v2.0.0 — 功能丰富的 CLI
- 扫描,批量扫描,实时监控
- 报告,漏洞,目标组
- JSON/CSV/Table 输出
## 许可证
本项目按原样提供给安全专业人员。
请负责任地使用,并且仅在您被授权测试的目标上进行扫描。
**由 [MrpasswordTz](https://github.com/MrpasswordTz) 开发 · 由 BantuHunters 提供支持**
标签:Acunetix, API封装, DevSecOps, GPT, Python, Web安全, WSL, 上游代理, 主机安全, 安全测试, 密码管理, 对称加密, 批处理, 插件系统, 攻击性安全, 文档结构分析, 无后门, 漏洞管理, 网络安全, 自动化审计, 蓝队分析, 逆向工具, 隐私保护