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, 实时处理, 密码管理, 模板整理, 网络安全研究, 网络调试, 自动化