recon
GitHub Dorks
GitHub Dorks ค้นหา secret ที่รั่วใน public repository — API key, password, token, config ที่ developer เผลอ commit นักพัฒนามักรั่ว credential โดยไม่ตั้งใจ บทนี้ลงลึก GitHub search syntax, dork หา secret, เครื่องมือ scan (TruffleHog/Gitleaks), การดู commit history, และการ pivot (เนื้อหาเพื่อ recon ที่ได้รับอนุญาต)
Intermediate#github-dorks#recon#osint#secrets#api-keys#leaked-credentials#ctf
1. หลักการ
นักพัฒนาเผลอ commit secret ลง public repo บ่อยมาก — API key, database password, AWS credential, private key, .env file การค้น GitHub อย่างเจาะจงเผย credential เหล่านี้ ที่อันตรายคือ secret อยู่ใน commit history แม้ถูกลบจากไฟล์ปัจจุบันแล้ว (ยังอยู่ใน git history) — เป็น recon ที่ให้ผลตรงและรุนแรง
เนื้อหานี้เพื่อการ reconnaissance ในงานที่ได้รับอนุญาต (CTF, bug bounty, pentest) เท่านั้น — รายงาน secret ที่พบตามกระบวนการที่เหมาะสม ไม่นำไปใช้โดยไม่ได้รับอนุญาต
2. GitHub search syntax
search qualifiers
# ค้นในชื่อ org/user เป้าหมาย
org:targetcompany password
user:targetuser api_key
# ค้น filename เฉพาะ
filename:.env DB_PASSWORD
filename:config.json api_key
filename:id_rsa # private key
# ค้นใน path/extension
path:config extension:yml password
extension:sql password
# รวมกับ keyword + org
org:targetcompany "api_key"
org:targetcompany filename:.env
org:targetcompany "BEGIN RSA PRIVATE KEY"
# ค้น secret pattern เฉพาะ
"AKIA" # AWS access key prefix
"-----BEGIN PRIVATE KEY-----"
"xoxb-" # Slack bot tokenorg:/user: จำกัดเป้าหมาย; filename:.env / id_rsa = jackpot; pattern เช่น AKIA (AWS), xoxb (Slack)
3. Dork หา secret ยอดนิยม
| dork | หา |
|---|---|
| org:X filename:.env | .env file (มักมี DB/API creds) |
| org:X "api_key" OR "apikey" | API keys |
| org:X "AKIA" | AWS access keys |
| org:X filename:id_rsa | SSH private keys |
| org:X "password" extension:yml | password ใน config |
| org:X "BEGIN RSA PRIVATE KEY" | private keys |
| org:X filename:.npmrc _auth | npm tokens |
| org:X "jdbc:mysql" | database connection strings |
4. เครื่องมือ scan + commit history
TruffleHog / Gitleaks / GitDorkerLinux
# TruffleHog — scan repo/org หา secret (รวม history + verify ว่า key ยังใช้ได้)
trufflehog github --org=targetcompany
trufflehog git https://github.com/target/repo --only-verified
# Gitleaks — scan git repo หา secret (รวม commit history)
gitleaks detect --source=. -v # ใน repo ที่ clone มา
git clone https://github.com/target/repo && cd repo && gitleaks detect
# GitDorker — รัน dork จำนวนมากกับ target อัตโนมัติ
python3 GitDorker.py -tf tokens.txt -q targetcompany -d dorks.txt
# ดู commit history เอง (secret ที่ถูกลบยังอยู่)
git log -p | grep -iE 'password|api_key|secret'
git log --all --full-history -- "*.env"TruffleHog --only-verified กรอง key ที่ยังใช้ได้จริง; Gitleaks scan history; secret ที่ลบจากไฟล์ยังอยู่ใน git log
5. Pivot + การใช้
- หา repo ขององค์กร: GitHub org page, หรือค้น email โดเมนใน commit (
@example.com) - หา developer: employee ที่มี personal repo อาจ leak company secret ใน repo ส่วนตัว
- commit history: เช็คทุก commit ไม่ใช่แค่ไฟล์ปัจจุบัน (secret ที่ 'ลบแล้ว' ยังอยู่)
- verify secret: TruffleHog verify ว่า key ยังใช้ได้ — รายงานเฉพาะที่ยัง active
- pivot จาก secret: API key → เข้า service; DB cred → database; AWS key → cloud (ในงานที่อนุญาต)
- เชื่อม email: commit author email → ไป OSINT (ดู Email Investigation)
6. Quick Reference
- หา secret ที่ developer เผลอ commit (รวม history)
- syntax: org:X / user:X / filename:.env / extension:yml
- dork: org:X filename:.env; "AKIA"; filename:id_rsa
- เครื่องมือ: trufflehog --only-verified, gitleaks, GitDorker
- commit history: git log -p | grep secret (ลบแล้วยังอยู่)
- pivot: secret → service; email author → OSINT
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติโจทย์บอกชื่อองค์กร/repo แล้วให้หา credential ที่รั่ว มีแค่ Kali + browser ทำตามนี้ทีละขั้น
- 1หา GitHub org ของ target ก่อน: เปิด github.com ค้นชื่อบริษัท หรือดูจาก LinkedIn/website ว่าใช้ org อะไร
- 2ลอง search แบบง่ายในเว็บ github.com/search:
org:targetorg filename:.env - 3ลองต่อด้วย pattern secret ที่พบบ่อย:
org:targetorg "AKIA"(AWS key),org:targetorg "BEGIN RSA PRIVATE KEY" - 4ถ้ามี personal access token ตั้งค่า GitDorker เพื่อรัน dork จำนวนมากอัตโนมัติ:
python3 GitDorker.py -tf tokens.txt -q targetorg -d dorks.txt - 5เจอ repo ที่น่าสงสัย clone มาสแกนลึก:
git clone&& cd repo - 6สแกนด้วย gitleaks หา secret ทั้ง commit history:
gitleaks detect --source=. -v - 7หรือสแกนทั้ง org ด้วย trufflehog พร้อม verify ว่า key ยังใช้ได้จริง:
trufflehog github --org=targetorg --only-verified - 8ถ้าไฟล์ที่มี secret ถูกลบไปแล้ว ลองดู commit history ตรงๆ:
git log -p | grep -iE 'password|api_key|secret' - 9เจอ secret ที่ verified แล้ว ห้ามนำไปใช้เกินขอบเขต — บันทึกไว้รายงานตามกระบวนการที่ได้รับอนุญาต
- 10ถ้าไม่เจออะไรใน GitHub ลองขยายไป pastebin/gitlab หรือกลับไป Google Dorks หา config ที่หลุดทางเว็บแทน
เจอ secret ใน GitHub ไหม? ทำอะไรต่อ
หา GitHub org ของ target
search dork: org:X filename:.env / "AKIA" / id_rsa
✅ เจอไฟล์/pattern น่าสงสัย→→ clone แล้วสแกนลึก
❌ ไม่เจอเลย→→ ขยาย dork/สลับแหล่ง
gitleaks / trufflehog --only-verified
รวม commit history ด้วย ไม่ใช่แค่ไฟล์ปัจจุบัน
✅ เจอ secret ที่ verified→→ บันทึก/รายงานตามขอบเขตที่อนุญาต
❌ scan ไม่เจอ secret จริง→→ กลับไปหา repo อื่น
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| ค้น dork ใน GitHub | - | - | github.com/search |
| รัน dork จำนวนมากอัตโนมัติ | python3 | git clone https://github.com/obheda12/GitDorker | - |
| scan secret ใน repo | gitleaks (ถ้ามี) | sudo apt install gitleaks หรือ go install | - |
| scan + verify key ยังใช้ได้ | trufflehog (ถ้ามี) | pipx install trufflehog หรือ go install | - |
| ดู commit history เอง | git | - | - |
| หา secret pattern เพิ่ม | grep | - | regex101.com (ทดสอบ pattern) |
🚑 ถ้าตันสนิท ลองท่าถัดไป: Google Dorks (ถ้า GitHub ไม่มีอะไรเลย ลองหา config/backup file ที่หลุดบนเว็บ target แทน), Email Investigation (commit author email → ต่อยอด OSINT หาข้อมูลพนักงาน), Info Gathering (secret ที่ได้ เช่น API key/DB cred อาจใช้ยืนยัน service ที่เจอในขั้น recon อื่น), Web Methodology (ถ้าเจอ API key/endpoint จาก repo ให้เอาไปทดสอบสิทธิ์บนเว็บแอปต่อ)
หัวข้อที่เชื่อมโยง
Google Dorksอยู่ใน workflowInformation Gatheringเกี่ยวข้องโดยตรงWHOISเทคนิคเดียวกันShodanเทคนิคเดียวกันCensysเทคนิคเดียวกันDNS EnumerationเทคนิคเดียวกันSubdomain EnumerationเทคนิคเดียวกันASN EnumerationเทคนิคเดียวกันAmassเทคนิคเดียวกันAssetfinderเทคนิคเดียวกันSubfinderเทคนิคเดียวกันUsername Enumerationเทคนิคเดียวกัน
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้