Виртуальный хост Tomcat для предотвращения атаки неправильной обработки ввода

В настоящее время я пытаюсь исправить уязвимость сайта, в основном это один из типов атак "Неправильная обработка ввода".

Допустим, мой сайт www.mywebsite.com и есть сайт хакера www.hacker.com

всякий раз, когда есть запрос, отправьте на www.mywebsite.com с измененным Host "заголовок указывает на www.hacker.com, мой сайт создаст редирект на www.mywebsite.com вместе с каким бы ни был URL. Например,

Нормальный:

Host: www.mywebsite.com 
GET  www.mywebsite.com/get/some/resources/
Reponse 200 ok

Hack:

Host: www.hacker.com (#been manually modified) 
GET  www.mywebsite.com/get/some/resources/
Response 302 
Send another Redirect to www.hacker.com/get/some/resources 

Мой сайт работает на Tomcat 7, я попробовал какое-то решение с настройкой виртуального хоста, указав неизвестному хосту defaultlocalhost которые предполагают ничего не делать. но он по-прежнему отправляет редирект по какой-то причине.

Здесь прикреплен мой server.xml конфигурировать хост:

<Engine name="Catalina" defaultHost="defaultlocalhost" jvmRoute="jvm1">  
<Host name="www.mywebsite.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="false" deployOnStartup="true">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>

  <Host name="defaultlocalhost"  >

  </Host>

Итак, мой вопрос: я на правильном пути, чтобы предотвратить такого рода атаки? Если да, то что я сделал не так, что до сих пор не работает? (Конечная цель состоит в том, что, если это не законный хост, который был передан, запрос должен быть отброшен / проигнорирован / возвращен 404, но не перенаправлен с 302)

Заранее спасибо.

Больше ссылок о нападении здесь: http://www.skeletonscribe.net/2013/05/practical-http-host-header-attacks.html

http://projects.webappsec.org/w/page/13246933/Improper%20Input%20Handling

1 ответ

Решение

Ну ладно, в конце концов ответь на мой вопрос.

После присоединитесь к списку рассылки пользователей Tomcat (адрес электронной почты подписки: users@tomcat.apache.org). Один парень по имени Андре помог мне решить эту проблему:

в основном то, что я сделал неправильно, отсутствует appBase в моем defaultlocalhost

  <Host name="defaultlocalhost" appbase="whatever" >

  </Host>

Приведенная выше конфигурация успешно возвращала статус 404 всякий раз, когда был отправлен недопустимый запрос. причина в том, что всякий раз, когда вы не установите appbase это всегда по умолчанию webapps так что по сути он ничего не делал с моей первоначальной конфигурацией.

Надеюсь, что это может помочь любому, кто имел подобную проблему.

Другие вопросы по тегам