API 密钥和令牌泄露 API 密钥和令牌是常见的身份验证形式,通常用于管理对公共和私有服务的权限和访问。这些敏感数据一旦泄露,可能导致未经授权的访问、安全受损以及潜在的数据泄露。 摘要 工具 方法论 泄露的常见原因 验证 API 密钥 减少攻击面 参考文献 工具 aquasecurity/trivy - 通用漏洞和错误配置扫描器,同时可搜索 API 密钥/密钥 blacklanternsecurity/badsecrets - 一个库,可在多个平台上检测已知或弱密钥 d0ge/sign-saboteur - SignSaboteur 是一个 Burp Suite 扩展,用于编辑、签名和验证各种签名的 Web 令牌 mazen160/secrets-patterns-db -
API 密钥和令牌是常见的身份验证形式,通常用于管理对公共和私有服务的权限和访问。这些敏感数据一旦泄露,可能导致未经授权的访问、安全受损以及潜在的数据泄露。
aquasecurity/trivy - 通用漏洞和错误配置扫描器,同时可搜索 API 密钥/密钥
blacklanternsecurity/badsecrets - 一个库,可在多个平台上检测已知或弱密钥
d0ge/sign-saboteur - SignSaboteur 是一个 Burp Suite 扩展,用于编辑、签名和验证各种签名的 Web 令牌
mazen160/secrets-patterns-db - Secrets Patterns DB:最大的开源数据库,用于检测密钥、API 密钥、密码、令牌等
momenbasel/KeyFinder - 一款工具,可在上网时帮助您查找密钥
streaak/keyhacks - 一个仓库,展示了如何快速检查漏洞赏金计划中泄露的 API 密钥是否有效
trufflesecurity/truffleHog - 随处查找凭据
projectdiscovery/nuclei-templates - 使用这些模板,可以针对多个 API 服务端点测试 API 令牌
nuclei -t token-spray/ -var token=token_list.txt
在源代码中硬编码:开发人员可能无意中将 API 密钥或令牌直接写入源代码中。
# Example of hardcoded API key api_key = "1234567890abcdef"
公共代码库:意外地将敏感密钥和令牌提交到 GitHub 等公开可访问的版本控制系统中。
## Scan a Github Organization docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --org=trufflesecurity ## Scan a GitHub Repository, its Issues and Pull Requests docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys --issue-comments --pr-comments
在 Docker 镜像中硬编码:API 密钥和凭据可能被硬编码在托管在 DockerHub 或私有注册表中的 Docker 镜像中。
# Scan a Docker image for verified secrets docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest docker --image trufflesecurity/secrets
日志和调试信息:密钥和令牌可能在调试过程中被无意中记录或打印出来。
配置文件:将密钥和令牌包含在公开可访问的配置文件中(例如 .env 文件、config.json、settings.py 或 .aws/credentials)。
如果需要帮助识别生成该令牌的服务,可以参考 mazen160/secrets-patterns-db。这是最大的开源数据库,用于检测密钥、API 密钥、密码、令牌等。该数据库包含多种密钥的正则表达式模式。
patterns: - pattern: name: AWS API Gateway regex: '[0-9a-z]+.execute-api.[0-9a-z._-]+.amazonaws.com' confidence: low - pattern: name: AWS API Key regex: AKIA[0-9A-Z]{16} confidence: high
使用 streaak/keyhacks 或查阅相应服务的文档,以找到快速验证 API 密钥有效性的方法。
示例:Telegram Bot API 令牌
curl https://api.telegram.org/bot<TOKEN>/getMe
在将更改提交到 GitHub 代码库之前,先检查是否存在私钥或 AWS 凭据。
将以下几行添加到你的 .pre-commit-config.yaml 文件中。
- repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.2.0 hooks: - id: detect-aws-credentials - id: detect-private-key
免责声明:
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准。对于关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。