我目前正在尝试修复网站漏洞,基本上它是"错误输入处理"攻击。
我们的网站是 www.mywebsite.com 并且有黑客的网站 www.hacker.com
每当有请求发送到 www.mywebsite.com 时,修改后的" Host
"标题指向 www.hacker.com ,我的网站将创建一个重定向到 www.mywebsite.com 以及它的网址。
e.g。
正常:
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上运行,我尝试了一些解决方案,通过将未知主机设置为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 "%r" %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
答案 0 :(得分:2)
哦,最后回答我自己的问题。
加入Tomcat用户邮件列表(订阅电子邮件地址:users@tomcat.apache.org)。 有一个名叫安德烈的人帮我解决了这个问题:
基本上我错误的是在appBase
defaultlocalhost
<Host name="defaultlocalhost" appbase="whatever" >
</Host>
上述配置在发送非法请求时成功返回404状态。原因是,只要您不设置appbase
,它始终默认为webapps
,因此它基本上不会对我的原始配置执行任何操作。
希望这可以帮助任何有类似问题的人。