Tomcat虚拟主机,以防止不当input处理攻击

我目前正在尝试修复网站漏洞,基本上这是一种“不正确的input处理”攻击。

假设我的网站是www.mywebsite.com ,黑客的网站是www.hacker.com

每当有请求发送到www.mywebsite.com与修改“ Host ”标题指向www.hacker.com ,我的网站将创build一个redirect到www.mywebsite.com以及无论它的url。 例如

正常:

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

哈克:

 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上,我尝试了一些解决scheme,通过将未知主机指向defaultlocalhost主机来设置虚拟主机。 但是由于某种原因它仍然发送redirect。

这里附上的是我的server.xml主机configuration:

 <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,但不能与302redirect

先谢谢你。

有关此处的攻击的更多参考资料: http : //www.skeletonscribe.net/2013/05/practical-http-host-header-attacks.html

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

哦,最后回答我自己的问题。

joinTomcat用户邮件列表(订阅电子邮件地址:[email protected])。 有一个名叫安德烈的人帮我解决了这个问题:

基本上我做错了在我的defaultlocalhost缺less应用程序库

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

上述configuration在发送非法请求时成功返回404状态。 原因是每当你不设置appbase它总是默认为webapps所以它基本上不会对我的原始configuration做任何事情。

希望这可以帮助任何有类似问题的人。