คลัง
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 ที่พบตามกระบวนการที่เหมาะสม ไม่นำไปใช้โดยไม่ได้รับอนุญาต
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 token
org:/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_rsaSSH private keys
org:X "password" extension:ymlpassword ใน config
org:X "BEGIN RSA PRIVATE KEY"private keys
org:X filename:.npmrc _authnpm 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. 1หา GitHub org ของ target ก่อน: เปิด github.com ค้นชื่อบริษัท หรือดูจาก LinkedIn/website ว่าใช้ org อะไร
  2. 2ลอง search แบบง่ายในเว็บ github.com/search: org:targetorg filename:.env
  3. 3ลองต่อด้วย pattern secret ที่พบบ่อย: org:targetorg "AKIA" (AWS key), org:targetorg "BEGIN RSA PRIVATE KEY"
  4. 4ถ้ามี personal access token ตั้งค่า GitDorker เพื่อรัน dork จำนวนมากอัตโนมัติ: python3 GitDorker.py -tf tokens.txt -q targetorg -d dorks.txt
  5. 5เจอ repo ที่น่าสงสัย clone มาสแกนลึก: git clone && cd repo
  6. 6สแกนด้วย gitleaks หา secret ทั้ง commit history: gitleaks detect --source=. -v
  7. 7หรือสแกนทั้ง org ด้วย trufflehog พร้อม verify ว่า key ยังใช้ได้จริง: trufflehog github --org=targetorg --only-verified
  8. 8ถ้าไฟล์ที่มี secret ถูกลบไปแล้ว ลองดู commit history ตรงๆ: git log -p | grep -iE 'password|api_key|secret'
  9. 9เจอ secret ที่ verified แล้ว ห้ามนำไปใช้เกินขอบเขต — บันทึกไว้รายงานตามกระบวนการที่ได้รับอนุญาต
  10. 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 จำนวนมากอัตโนมัติpython3git clone https://github.com/obheda12/GitDorker-
scan secret ใน repogitleaks (ถ้ามี)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 ให้เอาไปทดสอบสิทธิ์บนเว็บแอปต่อ)

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้