官网:http://securitytech.cc/
GitHub Dorking:在公开代码中寻找秘密的猎人指南
GitHub Dorking
副标题:
如何通过高级 GitHub 搜索发现暴露的 API Key、凭据和公司机密
作者:
By N0aziXss | 安全研究员 | HackerOne & BugCrowd 认证
简介:
GitHub —— 暴露秘密的金矿
在 2024 年,超过 1000 万个 API Key 和凭据 被暴露在 GitHub 仓库中。 作为一名安全研究员,我发现 GitHub Dorking 不仅是一项技能——它是揭露全球组织隐藏漏洞的“超级能力”。
第一部分:什么是 GitHub Dorking
GitHub Dorking 是什么?
GitHub Dorking 是利用 GitHub 的高级搜索功能来寻找意外暴露在公共仓库中的敏感信息。 这就像数字考古学家,从代码堆里挖出秘密。
问题的规模
- 12% 的公共仓库含有某种敏感数据
-
- 暴露凭据的平均赏金:5,000
-
- 最常暴露的内容:API Keys、数据库凭据、云服务 Token
第二部分:核心 GitHub 搜索语法
# 基础操作符
filename: # 搜索特定文件名
extension: # 按扩展名过滤
path: # 搜索特定目录
org: # 限定组织
repo: # 限定仓库
# 高级过滤
pushed: # 最近更新时间
created: # 创建时间
language: # 指定语言
# 组合搜索
filename:.env AND "API_KEY"
org:companyname extension:json "password"
第三部分:安全研究关键 Dork
查找配置文件
# 环境变量文件
filename:.env "API_KEY"
filename:.env "DATABASE_URL"
filename:.env "SECRET_KEY"
# 各类配置文件
filename:config.json "password"
filename:settings.py "SECRET_KEY"
filename:application.properties "spring.datasource.password"
查找暴露凭据
# AWS 凭据
"AWS_ACCESS_KEY_ID" AND "AWS_SECRET_ACCESS_KEY"
filename:.aws/credentials
"AKIA" extension:env
# 数据库连接
"mongodb://" "password"
"postgresql://" "username"
"mysql://" "root:@"
# API Keys 和 Token
"api_key" extension:json
"gh_token" OR "github_token"
"x-api-key" filename:.config
公司机密与内部数据
# 公司内部信息
org:targetcompany "internal"
filename:internal "confidential"
"proprietary" extension:md
# 财务信息
"stripe_key" OR "stripe_secret"
"paypal_client_id" "paypal_secret"
"braintree" "merchant_id"
第四部分:高级技巧
时间分析
# 最近泄露
pushed:>2024-01-01 filename:.env "password"
created:>2023-12-01 "API_KEY"
# 历史提交
"remove password" pushed:<2023-01-01
"fix security" created:2022-01-01..2022-12-31
按语言狩猎
# Python
language:python "SECRET_KEY" filename:settings.py
language:python "os.environ.get"
# JavaScript / Node.js
language:javascript "process.env" filename:.js
language:typescript "config.password" filename:.ts
# Java
language:java "getProperty.\*password"
第五部分:真实案例
案例一:AWS Root Key 外泄
查询语句:
filename:.env "AWS_ACCESS_KEY_ID" AND "AWS_SECRET_ACCESS_KEY"
影响:
- AWS 账号完全被接管
-
- 可访问 50+ EC2 实例
-
- S3 中包含用户数据
-
- 赏金:$2,500
案例二:Docker Config 中泄露数据库凭据
查询语句:
filename:docker-compose.yml "MYSQL_ROOT_PASSWORD"
filename:docker-compose "DATABASE_URL"
影响:
- 生产数据库泄露
-
- 10 万用户记录暴露
-
- 支付信息可访问
-
- 赏金:$3,000
第六部分:自动化工具
# GitLeaks
gitleaks detect --source=/path/to/repo --verbose
# TruffleHog
trufflehog filesystem /path/to/repo
# repo-supervisor
npx repo-supervisor --repo https://github.com/user/repo
自定义自动化脚本示例
#!/usr/bin/env python3
import requests
import re
def github_dork_search(query):
headers = {'Authorization': 'token YOUR_GITHUB_TOKEN'}
url = f"https://api.github.com/search/code?q={query}"
response = requests.get(url, headers=headers)
return response.json()
# 示例调用
results = github_dork_search('filename:.env+API_KEY+org:targetcompany')
第七部分:负责任的披露
模板:
主题:安全报告 - GitHub 凭据泄露
## 概要
发现暴露的 [凭据类型]。
## 细节
- 仓库:[URL]
- - 文件:[名称]
- - 数据类型:[具体凭据]
- - 风险等级:[高/中/低]
## 影响分析
- [潜在影响]
## PoC
[截图或代码]
## 修复建议
1. 立即旋转密钥
2. 2. 从 Git 历史中删除敏感文件
3. 3. 实现 pre-commit 钩子
4. ```
---
# **第八部分:开发者防御**
## `.gitignore` 必备:
.env .key .pem config/*.json
## pre-commit hook:
```bash
#!/bin/bash
if git diff --cached --name-only | grep -E '\.env|config.json'; then
echo "提交中存在潜在秘密,已终止。"
exit 1
fi
第九部分:法律与伦理
- 仅搜索公共仓库
-
- 不要访问暴露系统
-
- 严格遵守披露流程
-
- 尊重平台规则
第十部分:GitHub Dorking 的未来
- AI 自动检测秘密
-
- 实时监控暴露
-
- 结合 SDLC
-
- 自动化修复
结语:知识的力量
GitHub Dorking 既是风险,也是机会。 对组织来说,它是警钟;对研究员来说,它是提升网络安全的武器。
关键要点:
- GitHub Dorking 是安全人员的重要技能
-
- 合规与负责任披露必须遵守
-
- 自动化能提升效率
-
- 不断学习才能走在前沿