【发布时间】:2017-10-18 16:07:02
【问题描述】:
我目前正在尝试修复站点漏洞,基本上它是一种“输入不当”攻击。
假设我的网站是 www.mywebsite.com 还有黑客的网站www.hacker.com
只要有一个请求发送到 www.mywebsite.com 并修改了“Host”标头指向 www.hacker.com,我的网站就会创建一个重定向到 www.mywebsite.com 以及它的任何网址。
例如
正常:
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>
所以,我的问题是,我是否在正确的轨道上防止这种攻击?如果是,我做错了什么仍然无法正常工作? (最终的目标是,如果传入的不是合法的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
【问题讨论】:
-
我使用你的代码,但它总是给我响应 200 OK。
-
你可能想发布你的配置,没有更多细节,我不能肯定地说出了什么问题。