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, 上游代理, 主机安全, 安全测试, 密码管理, 对称加密, 批处理, 插件系统, 攻击性安全, 文档结构分析, 无后门, 漏洞管理, 网络安全, 自动化审计, 蓝队分析, 逆向工具, 隐私保护