SergioMazo/WB-vuln-auditor

GitHub: SergioMazo/WB-vuln-auditor

一款基于 Python 和 Shodan 的专项审计工具,用于在授权范围内检测互联网暴露的 WattBox 设备是否仍接受文档默认凭据。

Stars: 0 | Forks: 0

# WB Vulnerability Auditor [![测试](https://img.shields.io/github/actions/workflow/status/SergioMazo/WB-vuln-auditor/tests.yml?branch=main&label=tests)](https://github.com/SergioMazo/WB-vuln-auditor/actions) [![Python 质量](https://img.shields.io/github/actions/workflow/status/SergioMazo/WB-vuln-auditor/python-quality.yml?branch=main&label=python%20quality)](https://github.com/SergioMazo/WB-vuln-auditor/actions) [![Markdownlint](https://img.shields.io/github/actions/workflow/status/SergioMazo/WB-vuln-auditor/markdownlint.yml?branch=main&label=markdownlint)](https://github.com/SergioMazo/WB-vuln-auditor/actions) [![密钥扫描](https://img.shields.io/github/actions/workflow/status/SergioMazo/WB-vuln-auditor/secret-scan.yml?branch=main&label=secret%20scan)](https://github.com/SergioMazo/WB-vuln-auditor/actions) [![许可证: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-3776AB.svg)](https://www.python.org/) [![状态: 实验性](https://img.shields.io/badge/status-experimental-orange.svg)](ROADMAP.md) WB Vulnerability Auditor 是一个专注于授权 WattBox 安全评估的 Python 实用工具。它使用 Shodan 定位匹配的 HTTP 服务,检查记录在案的默认凭据是否会暴露 `wattbox_info.xml`,记录报告的硬件版本,并将确认的结果写入 CSV。 它的存在是为了使一项高价值的凭据清理检查变得可重复。它不会进行密码暴力破解、 利用设备漏洞、扫描任意端口,也不会提供通用的漏洞评估。 ## 为什么使用它? - 范围狭窄,易于审查和解释 - 基于环境变量处理 Shodan API key - 设备检查之间有一秒的延迟 - 简短的设备超时和有界的结果处理 - 无实时扫描的离线测试 - 适用于授权修复工作流的 CSV 输出 ## 架构 ``` Authorized operator | | SHODAN_API_KEY v Shodan host search "wattbox port:80" | | IP and port pairs v HTTP GET /wattbox_info.xml with documented default credentials | | HTTP 200 + hardware_version v Terminal summary + wattbox_vulnerables.csv ``` 当前的扫描不会执行主动的 CVE 丰富,因为设备 响应未映射到可靠的 CPE。请参阅 [架构](docs/architecture.md) 和 [局限性](docs/limitations.md)。 ## 快速开始 ``` git clone https://github.com/SergioMazo/WB-vuln-auditor.git cd WB-vuln-auditor python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements.txt export SHODAN_API_KEY="replace_with_your_shodan_api_key" python Wattbox_vulnerability_comentado.py ``` 应用程序不会自动加载 `.env` 文件。如果你根据 `.env.example` 创建了该文件,请显式加载它,并且永远不要提交它。 ## 安装 要求: - Python 3.10 或更高版本 - 你自己的具有主机搜索访问权限的 Shodan API key - 可访问 Shodan 和明确授权的目标设备的网络 每个操作员必须使用他们自己的 Shodan 账户和 API key。本仓库 不包含、共享或支付任何 key。Shodan 在创建 账户时会提供一个 API key,但本项目的筛选主机搜索会使用查询额度。 因此,实际的搜索访问权限、配额和结果限制取决于 操作员当前的 Shodan 账户和套餐。 仅安装两个运行时依赖项: ``` python -m pip install -r requirements.txt ``` 用于开发和本地验证: ``` python -m pip install -r requirements-dev.txt make check ``` ## 配置 目前仅 API key 可在外部进行配置。 | 设置 | 来源 | 当前值或用途 | | --- | --- | --- | | `SHODAN_API_KEY` | 环境变量 | 必需的 Shodan 凭据 | | 搜索查询 | 代码常量 | `wattbox port:80` | | 结果上限 | 代码常量 | 最多来自一次 API 响应的 150 个匹配项 | | 设备超时 | 代码常量 | 3 秒 | | 延迟 | 代码常量 | 检查之间间隔 1 秒 | | 输出路径 | 代码常量 | `wattbox_vulnerables.csv` | 有关 shell 示例和密钥处理指导,请参阅 [配置](docs/configuration.md)。 ## 用法示例 运行授权审计: ``` export SHODAN_API_KEY="replace_with_your_shodan_api_key" python Wattbox_vulnerability_comentado.py ``` 在没有 API key 的情况下运行离线测试套件: ``` make test ``` 检查代码、文档、shell 工具和 Git 历史: ``` make check ``` ## 输出示例 以下示例使用了为文档保留的地址: ``` [INFO] Searching Shodan for exposed WattBox devices... [INFO] Testing 203.0.113.42:80 with default credentials... [VULNERABLE] 203.0.113.42:80 (WB-700) [INFO] Total tested: 1 [WARN] Devices accepting the default credentials: IP Port Model Status CVEs 203.0.113.42 80 WB-700 Vulnerable - [INFO] Results saved to wattbox_vulnerables.csv ``` CSV 包含: ``` IP,Port,Model,Status,CVEs 203.0.113.42,80,WB-700,Vulnerable,- ``` 某一行数据意味着 endpoint 在使用文档中的默认值时返回了 HTTP 200 以及预期的硬件版本元素。这并不能证明存在 特定的 CVE。`CVEs` 字段目前为 `-`,因为 CPE 映射未 激活。在将结果用于报告之前,请阅读 [解读输出](docs/output.md)。 ## 安全与数据处理 - 永远不要提交真实的 API key 或生成的 CSV。 - 将发现的 IP 地址、模型数据和身份验证结果视为 敏感评估数据。 - 每次运行前确认范围;Shodan 查询并不代表授权。 - 如果 Shodan API key 出现在日志或版本控制中,请立即轮换。 - 通过 [安全策略](SECURITY.md) 报告漏洞,而不是通过公开的 issue。 该仓库包含针对完整 Git 历史的 Gitleaks 扫描,以及一个 拒绝跟踪 RFC 1918 地址字面量的测试。请参阅 [安全模型](docs/security-model.md)。 ## 常见问题 ### 我需要自己的 Shodan API key 吗? 是的。该仓库永远不会提供或共享 Shodan 凭据。创建或使用 你自己的 Shodan 账户,获取其 API key,并确认该账户具有 主机搜索访问权限和足够的查询额度。免费账户可以提供 API key,但其当前的权限是否足够用于此筛选 搜索由 Shodan 控制并且可能会发生变化。 ### 这会利用 WattBox 设备的漏洞吗? 不会。它使用记录在案的默认凭据对已知的信息 endpoint 执行一次 HTTP 请求。 ### CSV 中的一行是否意味着设备存在已知的 CVE? 不是。它意味着默认凭据被接受并且返回了预期的硬件 字段。CVE 丰富未激活。 ### 为什么失败的 Shodan 请求最终会显示“未找到设备”? 扫描器保留了其原始的简单结果模型。它会针对 请求失败打印一条警告,然后报告一个空的结果集。在 解读最后一行结果之前,请先查看警告。 ### `.env.example` 会自动加载吗? 不会。请在当前的 shell 中导出 `SHODAN_API_KEY` 或者显式加载本地 `.env`。 ### 我可以从命令行更改查询、速率或输出路径吗? 在当前版本中不行。这些值是脚本中的常量。CLI 配置可能是未来的改进,而不是现有功能。 ## 路线图 近期的工作重点是更好的打包、更清晰的机器可读错误, 以及在不扩大扫描器的授权或 攻击面的情况下扩大测试覆盖率。请参阅 [路线图](ROADMAP.md)。 ## 许可证 WB Vulnerability Auditor 采用 [MIT 许可证](LICENSE)。 ## 鸣谢 - [Shodan](https://www.shodan.io/) 提供了该项目引用的 主机搜索和 CVEDB 服务。 - 提及 WattBox 仅是为了描述该工具检查的设备。本 项目是独立的,未获得 Shodan 或 WattBox 的认可。 - MiniOps 为仓库结构、文档、测试 和 CI 纪律提供了质量基准;没有任何 MiniOps 文件被原样 复制。
标签:Python, StruQ, 插件系统, 无后门, 漏洞审计, 物联网安全, 逆向工具, 默认凭据检测