GitHub Dorking:在公开代码中寻找秘密的猎人指南

51 阅读4分钟

官网: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% 的公共仓库含有某种敏感数据
    • 暴露凭据的平均赏金:500500 - 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 是安全人员的重要技能
    • 合规与负责任披露必须遵守
    • 自动化能提升效率
    • 不断学习才能走在前沿

公众号:安全狗的自我修养

vx:2207344074

Gitee:gitee.com/haidragon

GitHub:github.com/haidragon

Bilibili:haidragonx