露出した .git ディレクトリを最初にスキャンした後、露出した .env ファイルをもう一度スキャンしました。このスキャン中に、公開された .env ファイルが 200 個以上見つかりました。無害な構成設定に加えて、135 のデータベース ユーザーとパスワード、パスワード付きの 48 の電子メール ユーザー アカウント、支払いプロバイダー (Stripe や Paypal など) の 11 のライブ資格情報、さまざまな API の 98 のシークレット トークン、および 128 のアプリ シークレット (セッションを安全に生成するためのシークレット) が見つかりました。 ID、CSRF トークン、および JWT トークン) と、いくつかのハードコードされた管理者資格情報。
TLDR : デプロイ プロセスの間違いに注意してください。非表示の .env ファイルを公開しないでください。
私はソフトウェア開発者の SDCat であり、ボンネットの下のあらゆる場所を調べるのが大好きな好奇心旺盛です。露出した .git ディレクトリをスキャンした後、このうさぎの穴をさらに深く掘り下げることにしました。そして、公開された .env ファイルをチェックすることにしました。
この投稿では、.env ファイルとは何か、ドメインをスキャンした方法、およびこれらのファイルで見つかった内容に関する統計について説明します。このデータの分析により、さまざまなサービスやアカウントの多くの資格情報が明らかになることもありました。
すべてのソフトウェアにはいくつかの構成が必要であり、さまざまな設定があります。メール クライアントなどのユーザー ソフトウェアの場合、電子メール アドレス、ユーザー名、パスワードなどの設定は、ソフトウェアの初回起動時にユーザーに要求されます。サーバー上で実行され、多くの場合自動的にインストールされるソフトウェアの場合、ユーザーの操作は不可能です。一部のソフトウェア フレームワークでは、これらの設定を環境変数で指定し、.env という名前のファイルで構成できます。 .env ファイルは隠しファイルであるため、デフォルトではこれらのファイルは表示されません。
.env ファイルの例:
ENV= "PRODUCTION"
LOG_LEVEL= "INFO"
SMTP_HOST= "email.example.com"
SMTP_PORT= 25
SMTP_USER= "[email protected]"
SMTP_PASS= "SuperSecurePassword2022"
SMTP_TLS= 1
SMTP_CONNECTION_TIMEOUT_SECONDS= 2
DB_HOST= "dbserver.example.com"
DB_DATABASE_NAME= "important_database"
DB_USER= "my-app-db-user"
DB_PASSWORD= "2022SuperVerySecurePassword"
PAYMENT_GATEWAY= "payment.example.com"
PAYMENT_SECRET= "super-secure-payment-api-secret"
注: 上記の例に記載されているパスワードよりも安全なパスワードをお勧めします。
ほとんどすべての Web アプリケーションはデータベースにアクセスするか、いくつかの API を使用して通信するため、これらの資格情報をアプリケーションに渡す必要があります。これが .env ファイルを使用して行われる場合、資格情報はこのファイル内のプレーン テキストです。 Web サーバーが正しく構成されておらず、この .env ファイルが Web サーバーによって配信されると、誰でもこのデータを照会できます。これを行うには、ブラウザでhttps://example.com/.env などの URL にアクセスするだけです。
危険な側面は、パスワードとシークレットが暗号化されていない形式で .env ファイルにあることです。
この国のすべてのドメインを取得するために、DNS ゾーン転送を許可する国を選択しました。完全なゾーン ファイルをダウンロードするには、しばらく時間がかかります。簡単な Python スクリプトを使用して、NS レコードを抽出し、これらのレコードからドメイン名を抽出しました。
別の Python スクリプトを使用して、ドメインを読み取り、 http://<domain>/.envにリクエストを送信します。また、http://www.<ドメイン>/.env、https://<ドメイン>/.env、および https://www.<ドメイン>/.env も確認しました。
SSL 証明書チェックを無視することが重要です。 https 経由で多くのファイルが見つかりましたが、証明書が無効であることがわかりました。無効な SSL 証明書を無視することで、これらのディレクトリにアクセスできます。
260 万のドメインをスキャンしたところ、次のことがわかりました。
これらは主なドメインのみの結果です。すべてのサブドメインをスキャンするとどうなるか想像してみてください。私はあなたがそこにもっと多くを見つけることは間違いありません.
nuclei テンプレートを使用してドメインとサブドメインをスキャンするか、 scan.nan.ioなどのサービスを使用して、機密ファイルが公開されていないかドメインとサブドメインを自動的にチェックできます。
要点: サーバーとデプロイメントを確認して、非表示の.envファイルを公開しないようにします。
ここにも掲載されています。