puck-security/geiger-nuclei-templates

GitHub: puck-security/geiger-nuclei-templates

一套 Nuclei 模板,用于检测暴露的敏感文件并提取凭据值,配合 geiger 工具实现机密的自动验证与威胁排名。

Stars: 0 | Forks: 0

# geiger-nuclei-templates 通过将 nuclei 直接管道传输至 [`geiger`](https://github.com/puck-security/geiger),在集群中查找暴露的文件、提取其中的机密信息,并对真正具有威胁的内容进行分诊(triage)。 ``` nuclei -t templates/ -l targets.txt -j -irr | geiger --from-nuclei - --live ``` 这一条命令即可实现:nuclei 检查每台主机上的 50 多个暴露文件和端点 (`.env`、`.git/`、云密钥、框架配置、SSRF 到元数据等),并 提取出任何具有凭据特征的数据值;接着 geiger 对每个值进行类型分类,验证哪些处于活跃状态,并按影响范围(blast radius)对它们进行排名—— 因此你得到的反馈将是“这个生产环境的 AWS 密钥有效,且可访问 12 个服务,在 3 台主机的 /.env 上暴露”, 而不是仅仅提示“200 OK on /.env”。 ## 为什么需要它 大多数暴露扫描器在检测到“文件存在”时就会停止,给你留下大量需要手动检查的 200 状态码响应。而这个模板包会从响应中提取出实际的机密值,并将其传递给验证器,从而将单纯的检测转化为一项经过排名且经验证为活跃的待办工作清单。 ## 涵盖范围 包含 52 个模板。每个模板都将严格的检测(探测哪些路径)与一个共享提取器(涵盖 gitleaks 已知的所有凭据特征)结合在一起。 | 类别 | 示例 | |---|---| | 应用与环境配置 | `.env`(及变体)、`appsettings.json`、`web.config`、`config.json`、Spring `application.properties`、`secrets.json/yaml`、前端 `env.js`、sourcemaps | | 云与容器 | `.aws/credentials` 和 `config`、GCP/Firebase SA 密钥、Azure `local.settings.json`、`.s3cfg`、`.boto`、`rclone.conf`、`docker-compose`、`.docker/config.json` | | 版本控制 | `.git/config`、`.git/`(HEAD/index/logs)、`.git-credentials`、`.svn`、`.hg` | | 框架与 CMS | WordPress、Joomla、Drupal、MediaWiki、Django、Rails、Symfony、Laravel logs、`phpinfo()` | | 包管理器 | `.npmrc`、`.pypirc`、`pip.conf`、Composer `auth.json`、`gradle.properties`、Maven `settings.xml`、`NuGet.Config` | | 数据库与备份 | `.my.cnf`、`redis.conf`、SQL dumps、`terraform.tfstate` | | IaC 与编排 | `kubeconfig`、Helm `values.yaml`、`.tfvars`、Ansible vars、CI configs | | 密钥与部署 | SSH 私钥、`.netrc`、`.htpasswd`、SFTP/deploy 配置 | | SSRF | 通过常见的 SSRF 参数获取云实例元数据 (cloud instance-metadata) | 每个模板都标记了 `geiger` 以及对应的技术标签(`git`、`aws`、`php`、`ssrf` 等), 因此你可以限定运行的范围: ``` nuclei -t templates/ -tags aws,gcp -l targets.txt -j -irr | geiger --from-nuclei - ``` ## 工作原理 每个模板分为两层: - **检测**(纯手工编写,规则严格)—— 包含需探测的路径以及用于确认其为真实文件(而非对所有请求均返回 200 的 SPA)的主体关键词(body words)。 - **提取**(自动生成,范围广泛)—— 一个包含约 220 种 gitleaks 凭据特征的正则表达式代码块。它故意进行广撒网式的匹配:**geiger 是最终的判定权威**,它会重新验证提取出的每一个值,因此错误的猜测会被直接丢弃。 使用 `-irr` 参数时,geiger 还会解析完整的响应主体,并重组平铺的值列表无法表示的多字段凭据(例如 AWS 密钥+密钥对,或是数据库连接字符串)。 提取器是**根据 gitleaks 代码生成的**——零手工编写的正则表达式,因此它永远不会与 geiger 重新验证时所用的检测器产生脱节。唯一需要手动维护的部分是位于 `internal/detections/specs.go` 中的检测规则(detection-spec)列表。 ## 机密信息处理 提取操作意味着活跃的机密值会出现在 nuclei 的输出中。默认建议使用上述的流式管道传输方式,以避免任何数据触及磁盘;仅在刻意需要留存结果时才添加 `-o` 参数(`geiger -o` 会以 `0600` 权限写入文件,并对机密信息进行脱敏处理)。 ## 维护与更新 ``` go run ./cmd/gen # regenerate templates/ from the pinned gitleaks version go test ./... # drift guard: fails if templates/ is hand-edited or stale nuclei -validate -t templates/ ``` 如需添加目标,只需向 `internal/detections/specs.go` 中追加一个 `Spec` 并重新生成即可。当 geiger 升级了 gitleaks 版本时,请同步更新 `go.mod` 中的 `require` 以及 `cmd/gen/main.go` 中的 `gitleaksVersion` 常量,然后重新生成——以确保此模板包始终能提取出与 geiger 重新验证时完全一致的凭据目录。
标签:EVTX分析, Nuclei模板, StruQ, 凭据提取, 安全助手, 数据处理, 日志审计