Hello there, ('ω')ノ
1. なぜサブドメインが重要なのか?
理由 | 解説 |
---|---|
攻撃面が広がる | www は堅牢でも、dev. や staging. は手薄なことが多い |
別部署・子会社が運用 | セキュリティ基準が統一されにくく“穴”が生まれやすい |
ドメイン単位でスコープ指定される | バグバウンティでは *.example.com が丸ごと報酬対象になるケース多数 |
“メインよりサブが熱い” ― これがバグハンティング界の常識です。
2. サブドメイン列挙:3段構えの王道フロー
段階 | 手法 | 主なツール・サービス |
---|---|---|
① パッシブ収集 | 既存の公開データベースを横断検索 | Subfinder / crt.sh / SecurityTrails |
② DNS ブルート | ワードリストから辞書攻撃的に照合 | massdns + wordlist(dns-Jhaddix.txt など) |
③ OSINT 追加調査 | GitHub・Pastebin・Wayback などから“文字列漏えい”を抽出 | github-subdomains / gau |
2.1 パッシブ収集(まずはサクッと一覧化)
subfinder -d example.com -o passive.txt curl "https://crt.sh/?q=%25.example.com&output=json" | jq -r '.[].name_value' >> passive.txt sort -u passive.txt > subs_stage1.txt
2.2 DNS ブルート(辞書で穴を掘る)
dnsx -l subs_stage1.txt -w dns-Jhaddix.txt -o subs_stage2.txt
- ポイント:パッシブで得た NS/SOA レコードをヒントにすると命中率UP。
2.3 OSINT 追加調査
gau --threads 20 example.com | awk -F/ '{print $3}' >> subs_osint.txt github-subdomains -d example.com -o github.txt cat subs_stage2.txt subs_osint.txt github.txt | sort -u > all_subs.txt
結果 → all_subs.txt
が “テスト対象候補” になります。
3. robots.txt を侮るなかれ
3.1 robots.txt とは?
- 本来は 検索エンジンにクロール禁止ディレクトリを知らせる ファイル
- 位置:
https://<ドメイン>/robots.txt
- フォーマット例
User-agent: *
Disallow: /admin/
Disallow: /beta/
3.2 攻撃者視点:どこが“おいしい”?
行動 | 理由 |
---|---|
Disallow で隠した URL を直接叩く | 管理画面・開発中機能が眠っている可能性 |
Sitemap 行を探す | XML サイトマップで大量 URL を一気に収集 |
複数 robots.txt を確認 | サブドメインごとに配置されている場合あり → 追加ルート判明 |
3.3 具体的なチェック手順
for sub in $(cat all_subs.txt); do curl -s "https://$sub/robots.txt" | tee -a robots_all.txt done grep -Ei 'Disallow|Sitemap' robots_all.txt | sort -u > juicy_paths.txt
生成された
juicy_paths.txt
をベースに Burp Intruder で一括アクセスして 200/403 の差分をチェック!
4. 実例:robots.txt からの“連鎖発見”
beta-api.example.com
を robots.txt で発見- エンドポイント
/v2/private/
が Disallow 指定 - 認証なしでアクセス → JSON で内部ユーザ一覧が返る
- IDOR → 他人のデータ参照 → High Severity 報告 & 報酬ゲット!
5. 注意点とよくあるミス
ミス | 回避策 |
---|---|
スコープ外サブドメインも収集し触ってしまう | プログラムページを再確認、リストをフィルタ |
DNS ブルートで大量リクエスト → DoS 判定 | -rate 100 など低速モード、分散時間実行 |
検索エンジンキャッシュ経由 URL を不用意に叩く | robots.txt に載っていても内部利用の可能性 → レート制御+最小限確認 |
6. 作業テンプレ(まとめ)
# 1. パッシブ+DNS×OSINTで all_subs.txt 生成 # 2. Live 判定 + ポート確認 httprobe -p https:443,80 < all_subs.txt > live_https.txt # 3. robots.txt 収集 cat live_https.txt | while read url; do curl -s "$url/robots.txt" | \ grep -Ei 'Disallow|Sitemap' | \ sed "s|^|$url |" done > robots_urls.txt # 4. juicy_paths.txt に整理後、手動/Burp Repeater で検証
まとめ:「サブドメイン×robots.txt」=鉄板コンボ
- 列挙 → 絞り込み → robots.txt で“裏口”探し
- 自動化+手動チェックを組み合わせると 短時間で深掘り できる
- 重複報告が増えた現在でも、ロジックの工夫次第で十分当たる
“基本テク+ひと手間” が、他のハンターと差を付ける秘訣です。
Best regards, (^^ゞ