Shikata Ga Nai

Private? There is no such things.

情報漏洩の診断マニュアル(Information Disclosure)

Hello there, ('ω')ノ

🎯 1. 情報漏洩とは?

情報漏洩(Information Disclosure)は、本来公開されていないはずの機密情報や内部情報がユーザに見える状態を指します。 これにより、攻撃の足がかり認証バイパスなど、他の脆弱性と連携した悪用が可能になります。


🧭 2. チェックすべき対象・ページ

種類 チェックポイント 備考
📄 エラーメッセージ スタックトレース・DBエラー・ファイルパス ページ操作中の異常系に注目
🔍 デバッグ情報 開発者用ログ・バージョン表示など 特にベータ・ステージング環境
🔐 認証情報 Cookie, Authorization, APIキーの露出 JavaScriptやHTTPレスポンスに埋め込まれていないか
📂 ディレクトリリスト index.htmlがないディレクトリ サーバの設定ミスで表示されることがある
📜 ソースコード .git, .svn, .env, config.js など 公開サーバにアップロードされていないか
📦 APIレスポンス 不要なフィールドが含まれていないか password_hash, is_admin, token など
🌐 robots.txt 非公開ページの記載がないか 検索エンジンに見せたくないページをリスト化しているが…

🔍 3. 確認ポイント(UIとリクエスト両方)

対象 確認内容
ページ遷移時のエラー画面 内部構造やSQLが漏れていないか
JavaScriptコード APIキーや内部URL、環境名(dev/stage)など
APIレスポンス ユーザに見せるべきでない情報が含まれていないか
HTMLコメント 機密情報、テスト用URL、未使用コードが含まれていないか
HTTPヘッダ サーバ種別(Server: Apacheなど)・デバッグ情報

🛠️ 4. 診断方法(手順)

  1. 通常操作 + 異常操作(入力値ミス・URL改変など)を実施
  2. 表示されたエラーメッセージを観察
  3. ブラウザの開発者ツールでHTML / JS / リクエストの中身を調査
  4. APIやファイルURLに直接アクセス
  5. 漏洩していそうな項目があれば記録して確認

🧪 5. よくある情報漏洩例

対象 内容
エラーメッセージ SQLException at line 45, NullPointerException, in /var/www/html/...
JSファイル const apiKey = "sk_live_...", isAdmin: true
HTMLコメント <!-- TODO: 管理者ページは /admin/secure.html -->
.git ディレクトリ .git/config, .git/logs/HEAD などでソース追跡可能
robots.txt Disallow: /secret-admin/ などの隠しページが発見される

🧾 6. サンプルケース

例1:SQLエラーの情報漏洩

https://example.com/user?id=abc'  
→ 画面に「You have an error in your SQL syntax」などが表示
→ DBの種類や構文が漏洩(MySQL特有のエラーならMySQL確定)

例2:APIレスポンスで余計な情報が漏洩

{
  "username": "testuser",
  "email": "test@example.com",
  "password_hash": "$2y$10$..."
}

→ 本来返してはいけないハッシュ情報が含まれている


⚠️ 7. 注意点・ベストプラクティス

  • 🔒 スタックトレースは絶対に出してはいけない
  • 🔎 JSやHTMLに管理ページの情報やAPIキーが含まれていないか確認
  • 🛠️ 開発者用のコードやコメントが残っていないかもチェック
  • 📜 .git.envなどの開発系ファイルは絶対に公開しない

🧰 8. 補助ツール

  • Burp Suite(Logger, Repeater)
  • 開発者ツール(F12) → Network/Source
  • Dirbuster / gobuster:隠しファイルの探索
  • wfuzz, ffuf:ファイル・ディレクトリ列挙

🔑 見つけやすいキーワード・兆候

  • Exception, Traceback, SQLException, stack trace
  • .git, .env, config, password, debug, admin
  • JavaScript内に apiKey, token, auth, secret など

Best regards, (^^ゞ