- http://seclists.org/fulldisclosure/2011/Oct/232
- http://www.contextis.com/research/blog/reverseproxybypass/
RewirteRule [P] / ProxyPassMatch の記述(変数のキャプチャ($1)の書き方)次第では、攻撃者にproxy先を任意のhostに変更されるという脆弱性。
攻撃を受ける設定例
(こんな書き方しないと思うけど。。。)
- www.example.com
RewriteEngine On RewriteRule (.*) http://app.example.com$1 [P]
この状態で
$ telnet www.example.com 80 GET @10.0.0.1/index.html HTTP/1.0
とrequestを投げると、URIがhttp://app.example.com@10.0.0.1/index.html になる。URIのschemeでは@の前はuser:pass / @の後ろがhostになるため、proxy先が10.0.0.1 になって設定者が予想外のサーバにアクセスされてしまう。
port変更する場合は":@" で。
$ telnet www.example.com 80 GET :@10.0.0.1:8080/index.html HTTP/1.0
対応
- 1. 設定を変える
proxy先のURLをスラッシュまで書く
RewriteEngine On RewriteRule /(.*) http://app.example.com/$1 [P]
- 2. patchあてる
http://www.apache.org/dist/httpd/patches/apply_to_2.2.21/CVE-2011-3368.patch
- 3. 次のapache 2.2.22 を待つ?