我目前正在尝试修复网站漏洞,基本上它是“不当输入处理”攻击的一种。
假设我的网站是 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
黑客:
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
defaultlocalhost
我的网站在 Tomcat 7 上运行,我尝试了一些解决方案,通过将未知主机指向一个假设不执行任何操作的主机来设置虚拟主机。但由于某种原因,它仍然会发送重定向。
附件是我的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
答案1
哦,好吧,最后还是回答我自己的问题吧。
加入Tomcat用户邮件列表后(订阅邮件地址:[电子邮件保护])有个叫 Andre 的人帮我解决了这个问题:
基本上我做错的是appBase
我缺少defaultlocalhost
<Host name="defaultlocalhost" appbase="whatever" >
</Host>
每当发送非法请求时,上述配置都会成功返回 404 状态。原因是,只要您不设置它,appbase
它总是默认为,webapps
所以它基本上对我的原始配置没有任何作用。
希望这可以帮助遇到类似问题的人。