В начале октября в http-сервере Apache была обнаружена уязвимость [3], позволяющая при работе mod_proxy в режиме обратного прокси отправить запрос из внешней сети к внутренним серверам в демилитаризованной зоне (DMZ), при наличии определенных rewrite-правил в конфигурации сервера. Разработчики проекта выпустили патч для устранения проблемы, но как оказалось [4] он бесполезен при использовании обходных путей для совершения атаки.
Если в конфигурации сервера, есть примерно такое правило (вместо RewriteRule может быть ProxyPassMatch):
RewriteRule ^(.*) http://www.example.com$1 [P]
Атакующий может отправить запросы (символ "@" будет воспринят как разделитель для параметров аутентификации):
GET @localhost::8880 HTTP/1.0\r\n\r\n GET qualys:@qqq.qq.example.com HTTP/1.0\r\n\r\n
В первом случае запрос будет транслирован в "http://localhost::8880", т.е. вместо сервера www.example.com будет осуществлено обращение по сетевому порту 8880 (Tomcat). Во втором случае запрос будет транслирован в "http://www.example.com@qqq.qq.example.com", и, соответственно, обращение будет к серверу qqq.qq.example.com.
В настоящее время официальных исправлений не выпущено, но один из работников компании Red Hat опубликовал [5] неофициальный патч. Как и в случае прошлой уязвимости проблему решает явное добавление слеша-разделителя в правило ("http://www.example.com/$1" вместо "http://www.example.com$1").
Ссылки:
[1] http://htfl.ru/cat-news-apache
[2] http://htfl.ru/cat-news-uyazvimosti
[3] http://htfl.ru/news/uyazvimost-v-apache-otkryvaet-dveri-k-vnutrennim-resursam-na-drugoi-storone-obratnogo-proksi
[4] /out.php?link=https://community.qualys.com/blogs/securitylabs/2011/11/23/apache-reverse-proxy-bypass-issue
[5] /out.php?link=http://mail-archives.apache.org/mod_mbox/httpd-dev/201111.mbox/%3C20111123142321.GB22547@redhat.com%3E