MaKyOtOx/nuclei-templates-formatter

GitHub: MaKyOtOx/nuclei-templates-formatter

一个用于下载、解析和格式化 Nuclei 模板的安全工具,按 CVE ID 和技术分类生成确定性索引文件以便快速检索。

Stars: 0 | Forks: 0

# Nuclei templates 格式化工具 此脚本会下载配置的 Nuclei 模板仓库,并生成两个确定性的索引文件: - `technologies.json` 包含一个 `vendors` 映射和一个 `vendor_products` 映射。其值是 GitHub 模板页面的 URL 列表。 - `cves.json` 将每个规范化的 CVE 标识符映射到其模板 URL。 技术键名在可用时来自 CPE 2.3/2.2 分类数据,并以 `info.metadata.vendor` 和 `product` 作为后备。CVE 来自 `info.classification.cve-id`、模板 ID 或模板文件名。重复的 URL 会被移除,并且所有输出都会进行排序。 ## 本地运行 需要 Python 3.10+、Git 以及对每个已配置仓库的网络访问权限。 ``` python3 -m venv .venv .venv/bin/pip install -r requirements.txt .venv/bin/python -m unittest discover -s tests -v .venv/bin/python nuclei_templates_formatter.py --strict ``` 使用 `--output-dir DIR` 将文件写入其他位置。如果不使用 `--strict`,格式错误的候选模板将被报告并跳过。 ## 模板来源 来源定义在 `sources.json` 中。要添加另一个仓库,请追加一个条目: ``` { "name": "private-templates", "repository": "https://github.com/example/private-templates.git", "ref": "main", "technology_paths": ["http/technologies"], "token_env": "PRIVATE_TEMPLATES_TOKEN", "template_url_template": "https://github.com/example/private-templates/blob/{ref}/{path}" } ``` `token_env` 是可选的。设置后,其值将通过 HTTP authorization header 传递给 Git,并且不会出现在命令参数或生成的文件中。SSH URL 和现有的 Git credential helpers 同样适用。非 GitHub 仓库必须定义 `template_url_template`;它必须包含 `{ref}` 和 `{path}`。 如果每小时的工作流使用的是私有仓库,请将其 token 添加为 Actions secret,并将其暴露给生成步骤。请注意,从公开仓库发布 release 时,也会同时发布所生成的私有模板 URL。 ## 每小时发布 GitHub Actions 工作流在每小时的第 0 分钟运行,验证解析器,生成这两个文件,并创建一个名为 `YYYY-MM-DD-HH` 的 UTC 标签/release。在同一小时内的手动重新运行将替换该 release 上的两个资产。
标签:CVE索引, Google, Nuclei, 实时处理, 密码管理, 模板整理, 网络安全研究, 网络调试, 自动化