Hello there, ('ω')ノ
🧪 なぜソースコードが漏れるのか?
.php
や.jsp
などの拡張子を持つファイルは、Webサーバーが実行してからレスポンスを返す。- そのため通常はファイルを直接取得しても、ソースコードは見えない。
しかし…
テキストエディタやIDEが生成する「一時バックアップファイル」は、以下のようなファイル名になります:
index.php~
index.php.bak
index.php.save
copy of index.php
- これらは通常のテキストファイルと認識され、サーバーがそのまま中身を返してしまう可能性があります。
🔍 ペンテスターが狙う典型的パターン
攻撃手法 | 説明 |
---|---|
GET /index.php~ |
Emacs系エディタのバックアップ |
GET /index.php.bak |
Windowsメモ帳やVisual Studioの自動保存 |
GET /index.php.save |
GeditなどのLinux系エディタ |
GET /index.php.old |
手動で保存された旧バージョン |
GET /.git/config |
バージョン管理情報からパスのヒントを得る |
🧑💻 攻撃者がソースを入手したら?
- パラメータの使い方、認証処理、トークンの構造などが完全に把握できる。
DB_PASSWORD = "admin123"
のようなハードコーディングがあれば 直接データベースにアクセス可能。- CSRFトークン生成方法や署名処理が分かれば 偽造リクエストも可能。
📋 Burp Suite を使った調査手順
- robots.txt, sitemap.xml などからファイル名のヒントを得る。
- Burp Intruder で
.php~
,.php.bak
,.php.save
などの拡張子を試す。 - レスポンスのContent-Type が
text/plain
,text/html
で本文がコードっぽければヒット。 - 抽出されたコードから認証処理やAPIエンドポイントの特定を行う。
🛡 開発者向け防御策
対策 | 内容 |
---|---|
バックアップファイルはアップロードしない | 自動生成ファイルは .gitignore などで除外 |
サーバー設定で拡張子ベースで拒否 | .bak , .~ , .old ファイルへのアクセスを403にする |
CI/CD時に検査ルールを追加 | セキュリティチェックで余計なファイルが含まれていないか確認 |
✅ まとめ
- ソースコードそのものが漏れれば、攻撃は「推測」ではなく「攻略」になる。
- バックアップファイルは人間の操作ミスや開発習慣によってうっかり公開されがち。
- ペンテスト時には
.bak
,.php~
,.save
を必ず試してみよう。
🔐 守るべきは「本番のコード」だけではない。残骸・一時ファイル・古いバージョンもまた攻撃対象になりうるのです。
Best regards, (^^ゞ