WordPressサイトに「/.env」スキャンが来た理由|アクセスログ分析【Security Log #10】

※本記事にはプロモーションが含まれています。

サーバーログを確認していると、次のようなアクセスが記録されていました。

GET /.env
GET /app/.env.production
GET /mail/.env

私のサイトはWordPressです。
WordPressでは通常、.envファイルは使用しません。

それでは、なぜこのようなファイルを探すアクセスが来るのでしょうか。

今回は、実際のアクセスログをもとに.envスキャンの正体と狙いを解説します。

実際に観測された .env スキャンログ

私のサイトで観測されたログの一部です。

www.vivisec.net 172.94.9.245 - - [25/Feb/2026:17:30:29 +0900]
"GET /app/.env.production HTTP/2.0" 403 0 "-"
"Go-http-client/2.0"
vivisec.net 74.161.32.198 - - [12/Mar/2026:17:40:45 +0900]
"GET /.env HTTP/1.1" 403 0 "-"
"Mozilla/5.0 ..."
www.vivisec.net 172.94.9.245 - - [25/Feb/2026:15:54:43 +0900]
"GET /mail/.env HTTP/2.0" 403 0 "-"
"Go-http-client/2.0"

特徴としては次の通りです。

  • .env を直接取得しようとしている
  • app/.envmail/.env など複数のパスを探索
  • User-Agent に Go-http-client が使われている

これは典型的な環境変数ファイル探索スキャンです。


アクセスログの見方

例として、今回観測されたログの1行を見てみます。

www.vivisec.net 172.94.9.245 - - [25/Feb/2026:17:30:29 +0900]
"GET /app/.env.production HTTP/2.0" 403 0 "-"
"Go-http-client/2.0"

このログには、アクセスの詳細な情報が含まれています。

項目内容
ドメインwww.vivisec.net
IPアドレス172.94.9.245
時刻25/Feb/2026 17:30
HTTPメソッドGET
リクエストURL/app/.env.production
HTTPバージョンHTTP/2.0
ステータスコード403
送信バイト0
User-AgentGo-http-client/2.0

攻撃者のIPアドレス

172.94.9.245

これはアクセス元のIPアドレスです。

攻撃ボットやスキャナーは、VPSやクラウドサーバーから実行されることが多くあります。

リクエストされたURL

/app/.env.production

これは .envファイルを取得しようとするアクセスです。

.env.productionは主に、LaravelやNode.jsなどのアプリケーションで使われる環境設定ファイルです。

HTTPメソッド

GET

GETは、サーバーからデータを取得するリクエストです。

つまり、今回のアクセスは、.envファイルをダウンロードできるか確認するためのリクエストです。

HTTPステータスコード

403

403は、アクセス拒否(Forbidden)を意味します。

つまり、ファイルが存在しない、またはサーバー側でブロックされた状態です。

今回、情報漏洩は発生していません。

このように403が返されている場合、サーバー側でアクセスが制御されている可能性があります。

レンタルサーバーによってはWAF(Web Application Firewall)などの機能によって、不審なリクエストが自動的にブロックされることがあります。

エックスサーバー公式サイト

User-Agent(ユーザーエージェント)

Go-http-client/2.0

これはGo言語のHTTPクライアントです。

つまり、ブラウザではなく、自動スキャンツールの可能性が高いです。

.envファイルとは何か

.envは、アプリケーションの環境変数を保存する設定ファイルです。

主に次のようなフレームワークで使用されます。

  • Laravel
  • Node.js
  • Docker環境
  • Pythonアプリケーション

.envには次のような機密情報が保存されることがあります。

DB_PASSWORD=example_password
DB_USERNAME=root
API_KEY=xxxxxxxxxxxx
MAIL_PASSWORD=xxxxxxxxxxxx

もしこのファイルが公開ディレクトリに置かれていると、URLにアクセスするだけで機密情報が漏れる可能性があります。


なぜ攻撃ボットは .env を探すのか

.envは、情報漏洩の宝庫だからです。

攻撃者にとっては非常に価値の高い情報が含まれています。

情報悪用方法
DBパスワードデータベース侵入
APIキー外部サービス悪用
SMTPパスワードスパム送信
JWTシークレット認証突破

特にLaravelアプリの設定ミスでは、.envが公開されてしまう事故が何度も起きています。

そのため、攻撃ボットは次のようなURLを片っ端から試します。

/.env
/.env.production
/.env.local
/app/.env
/mail/.env
/config/.env

これはインターネット全体をスキャンする自動ボットです。


WordPressサイトでも.envスキャンは来る

今回のサイトはWordPressですが、それでも .env スキャンは来ています。

理由はシンプルで、攻撃ボットはサイトの種類を確認せずとりあえず試すからです。

つまり、

  • WordPress
  • Laravel
  • Node.js
  • 静的サイト

関係なくスキャンが飛んできます。


今回のログから分かること

今回のログでは、

403

が返されています。

これは、ファイルが存在しない、またはサーバー側でブロックされている状態です。

つまり、攻撃は成功していません。

WordPressサイトでは.envを使用しないため、基本的には問題ありません。


.env情報漏洩を防ぐ対策

もし.envを使う環境の場合は次の対策が重要です。

公開ディレクトリに置かない

.envは必ず、

/public

より上の階層に置きます。

Webサーバーでアクセス禁止

例(Apache)

<Files ".env">
Require all denied
</Files>

Gitに含めない

.env.gitignore に追加してリポジトリに含めないようにします。


まとめ

今回のアクセスログから分かったことです。

  • .env を探すスキャンは実際に存在する
  • 主に Laravel / Node.js 環境の設定ミスを狙う
  • WordPressサイトでも無差別にスキャンされる
  • .env が公開されると 機密情報漏洩の危険がある

普段は意識しないファイルですが、設定ミスで重大な情報漏洩につながる可能性があります。

サーバーログを確認すると、このようなスキャンが日常的に行われていることが分かります。


このブログの運営環境

  • WordPress
  • GeneratePress
  • エックスサーバー

エックスサーバー公式サイト