※Apacheやセキュリティについてそこまで詳しくないため、参考程度でよろしくおねがいします。
Httpヘッダ・インジェクション
動的にHTTPヘッダを生成する機能の不備を突いてヘッダ行を挿入することで不正な動作を行なわせる攻撃手法のこと。また、その攻撃を可能とする脆弱性のこと。
前提
以下のような構成でシステムを構築している場合にApacheの設定を追加することでアプリケーションを改修せずに予防した。
クライアント - Apache(リバースプロキシ) - Webサーバ
ヘッダーを改変することで予期しないURLへ遷移させることができる状態だった。
リダイレクトされるURLへのアクセス時にHostを書き換えることで想定外のURLへリダイレクトさせることができる状態だった。
事象と対応内容
Hostを書き換えていない状態だと想定するURLがヘッダーのLocationに記載されているが、
以下のようにHostヘッダーに改ざん先URLを指定すると変更されていた。(-Lを追加するとリダイレクトまで実行されます。)
curl -v -H "Host: 改ざんURL" "リダイレクトするURL"
Apacheの場合を以下の設定1つを追加することで、一先ず事象抑制できた。
UseCanonicalName On
UseCanonicalName On の場合は、ServerName ディレクティブで指定されている ホスト名とポート番号を使って、その正規名 (自己参照の名前) を生成します。
UseCanonicalName ディレクティブ
http://httpd.apache.org/docs/2.2/ja/mod/core.html#usecanonicalname
ServerNameディレクティブでホスト名を設定することでホスト名を固定できるため、ホスト名改ざんを予防しています。
その他調べる過程で読んだ参考になった記事とか
Apache httpd 2.4 を CentOS 7 に yum でインストールする手順
https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/
攻撃を受ける前に見直すApacheの基本的なセキュリティ10のポイント
https://www.rem-system.com/apache-security01/
ディレクティブ一覧
https://httpd.apache.org/docs/2.4/ja/mod/directives.html
mod_proxy再入門 – ProxyPassとProxyPassReverse
https://dev.classmethod.jp/server-side/server/introduction_mod_proxy/
ProxyPass ディレクティブ
http://httpd.apache.org/docs/2.4/ja/mod/mod_proxy.html#proxypass
ProxyPassReverse ディレクティブ
http://httpd.apache.org/docs/2.4/ja/mod/mod_proxy.html#proxypassreverse
リバースプロキシ(Reverse Proxy)
https://www.atmarkit.co.jp/ait/articles/1608/25/news034.html