.htaccess Information Leak
概要
- 脆弱性の名前:
.htaccess Information Leak
- 問題の要点: Webサーバーの設定ファイルである
.htaccess
が、Webブラウザからアクセス可能になっている状態。 - よくある発生シーン: Webサーバーの設定ミス、不適切なファイル配置、アクセス制限の設定漏れなど
背景
.htaccess
ファイルは、Apache Webサーバーで使用される設定ファイルで、ディレクトリごとにアクセス制限、リダイレクト、エラー処理などの設定を記述できます。
このファイルがWebブラウザからアクセス可能になっていると、Webサーバーの構成情報や設定内容が漏洩し、攻撃者に悪用される可能性があります。
特に、クラウド環境では、設定ミスによる情報漏洩が問題視されています。
セキュリティ上のリスク
- Webサーバーの構成情報や設定内容が漏洩し、攻撃者が脆弱性を特定しやすくなる。
- データベースのパスワードやAPIキーなどの機密情報が漏洩する可能性がある。
- Webサイトの改ざんや不正なコンテンツの表示。
対処方法の具体例
Apache2
誤った設定例
.htaccess
ファイルへのアクセス制限が設定されていない例:
# 誤った例: アクセス制限なし
正しい設定例
.htaccess
ファイルへのアクセスを禁止する設定:
# 正しい例: アクセス制限
<Files ".htaccess">
Require all denied
</Files>
または、より厳格な設定として:
<Files ".htaccess">
Order Allow,Deny
Deny from all
</Files>
Nginx
Nginxは.htaccess
ファイルを直接サポートしていませんが、同様の設定をNginxの設定ファイルで行う必要があります。
正しい設定例
.htaccess
ファイルへのアクセスを禁止する設定:
# 正しい例: アクセス制限
location ~ /\.ht {
deny all;
}
WordPress
WordPressサイトの場合、.htaccess
ファイルが重要な役割を果たしています。
WordPressのデフォルト設定では、.htaccess
ファイルへのアクセスは禁止されていますが、設定が変更されている場合は注意が必要です。
正しい設定例
WordPressの.htaccess
ファイルが適切に設定されていることを確認する:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
AWS
正しい設定例
S3バケットに.htaccess
ファイルを保存する場合は、アクセス制限を厳格に設定する:
- バケットポリシーを使用して、
.htaccess
ファイルへのアクセスを特定のIAMロールまたはユーザーに制限する。 .htaccess
ファイルを暗号化して保存する。
検出方法
OWASP ZAPでの出力例
- Alert 名:
.htaccess Information Leak
- リスク: Low
- URL:
.htaccess
ファイルがアクセス可能なURL - パラメータ: なし
- 詳細:
.htaccess
ファイルがダウンロード可能であるという情報
手動再現例
- Webブラウザで
/.htaccess
にアクセスします。 - ファイルがダウンロードできる場合、またはファイルの内容が表示される場合、
.htaccess Information Leak
の脆弱性が存在します。
curl -I https://example.com/.htaccess
上記コマンドを実行し、200 OK
などのステータスコードが返ってくる場合、脆弱性が存在する可能性があります。
まとめ
- CVSS 基本値: 5.3 (Medium)
- 運用チームや開発者が意識すべきポイント:
.htaccess
ファイルへのアクセス制限を適切に設定する。- Webサーバーの設定ファイルを適切に管理する。
- クラウドストレージに設定ファイルを保存する場合は、アクセス制限を厳格に設定する。
- 定期的にセキュリティ監査を実施し、脆弱性を特定する。
- 再発防止:
- Webサーバーの設定に関するドキュメントを整備し、設定ミスを防止する。
- 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
- 開発者向けのセキュリティトレーニングを実施する。
補足資料・参考URL
以上の対策と検出方法を活用して、.htaccess Information Leak
のリスクを低減してください。