27
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nginxの設定ミスで起こるHostヘッダフォージェリ

Last updated at Posted at 2018-06-09

はじめに

この記事は下記リンクの日本語翻訳記事です

翻訳が誤っている場合はコメントか@no1zy_secまでお知らせいただけると幸いです。

[host_spoofing] Request's Host header forgery

多くの場合、Nginxの後方に位置するアプリケーションはURLを生成する(リダイレクト、リソース、電子メール内のリンクなど)ために適切なHostヘッダを必要とします。このヘッダのなりすましは、フィッシングからSSRFまでの様々な問題を引き起こす可能性があります。

注: アプリケーションはこの機能にX-Forwarded-Host リクエストヘッダを使用することもできます。この場合、ヘッダが適切に設定されていることを確認する必要があります。

どうやって見つけるか

ほとんどの場合、$hostの代わりに$http_host変数を使用した結果、脆弱になっています。

$host$http_host にはかなりの違いがあります。

  • $host - 次の優先順位でホストが決まります。

    1. リクエストライン
    2. Host リクエストヘッダフィールド
    3. リクエストに一致するサーバー名
  • $http_host - Host リクエストヘッダ

設定のサンプル

location @app {
  proxy_set_header Host $http_host;
  # Other proxy params
  proxy_pass http://backend;
}

対策

幸いにも、全てが自明です。

  • server_nameディレクティブに正しいサーバー名を全てリストしてください。
  • 常に $http_host の代わりに $host を使用してください。
  • 認識できないホスト名を持つ全てのリクエストをキャッチするための専用の仮想ホストを作成してください。 Server blocks

追加情報

Host of Troubles Vulnerabilities
Practical HTTP Host header attacks

関連リンク

[Hostヘッダフォージェリの対策について]
(https://qiita.com/no1zy_sec/items/718cb9a51da7c6d5a9a5)
nginxの設定ミスで起こるHTTP Splitting
nginxの設定ミスで起こるSSRF
nginxの設定ミスで起こるパス トラバーサル
nginxの設定ミスで起こるMultiline response headers
nginxの設定ミスで起こるレスポンスヘッダの出力不備
nginxの設定ミスで起こるreferer/origin検証の問題
nginxの設定ミスで起こるリファラの検証不備

27
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?