Basic認証のログインIDとパスワードを盗聴する方法

Basic認証がかかったディレクトリにアクセスしたときに、入力したログインIDとパスワードはいくつかの方法で覗き見ることができる。

Basic認証の弱点

Basic認証の脆弱性についてはよく言われるところだが、ログインIDとパスワードは盗み見ることができる。

Basic認証を扱う中で、ログインIDとパスワードが漏洩する可能性のある仕様をまとめる。

暫定条件でBasic認証を設定する

サーバにtestフォルダを設置し、その直下に.htaccessをアップロードした。.htpasswdは任意のディレクトリにアップロードしたとする。

  • test
    • index.html
    • .htaccess

.htpasswdにはログインIDとパスワードを下記のように入力したとする。

ログインIDtestuser
ログインパスワードninsyoutest
ハッシュ値testuser:W5VZAMcxgh5.E

以上の条件でBasic認証を設定したtestフォルダのindex.htmlにアクセスする。

Basic認証のログイン情報はURLに記録される

index.htmlのBasic認証を通過するため、認証パスをURLに含めていたとする。

index.htmlのアドレス欄のURLをコピーし、メモ帳などに貼り付けると…。

http://testuser:ninsyoutest@XXXXXX/test/index.html

認証情報が保存されているのがわかる。

Basic認証のログイン情報はリクエストヘッダーに記録される

Basic認証を通過したとする。

Chromeの開発者ツールを開き、ネットワークタブのindex.htmlをクリックする。

ヘッダータブが表示されるので、リクエストヘッダーを確認する。

Authorization: Basic dGVzdHVzZXI6bmluc3lvdXRlc3Q=

上記のAuthorization行にブラウザが保持した認証情報が保存され、Basic認証のログイン情報が記録されている。

dGVzdHVzZXI6bmluc3lvdXRlc3Q=をBase64でデコードすると、

testuser:ninsyoutest

.htpasswdに記入したBasic認証のログインIDとパスワードを解析できる。

逆説的に、Basic認証にログインしたブラウザのヘッダーリクエスト情報を見れば、ログイン情報を取得できてしまう。

具体的な危険性とは

ブラウザに認証情報が残留する現象について理解できたが、これらによりどんな脆弱性・危険性が考えられるのだろうか。

  • ブックマークにIDのとPWが残り見られてしまう
  • アクセスログにIDのとPWが記録されてしまう
  • サーバ側で漏洩を幇助してしまう理由として、ブラウザがリクエストを生成する際にRefererヘッダに遷移元のURLを付与してしまう