防止输入处理不当攻击的Tomcat虚拟主机 [英] Tomcat Virtual Host to prevent Improper-Input-Handling attack

查看:34
本文介绍了防止输入处理不当攻击的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

黑客:

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 

我的网站运行在Tomcat7上,我尝试了一些解决方案,通过将未知主机指向假定不执行任何操作的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

推荐答案

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

之后加入Tomcat用户邮件列表(订阅电子邮件地址:users@tomcat.apache.org)。 有个叫安德烈的家伙帮我解决了这个问题:

基本上我做错的地方是defaultlocalhost中缺少appBase

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

  </Host>
每当发送非法请求时,上述配置都会成功返回404状态。原因是,当您不设置appbase时,它总是默认为webapps,因此它基本上不会对我的原始配置执行任何操作。

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

更新7/10/2020 通过添加RemoteAddrValve并拦截所有IP,可以返回403。该示例基于Tomcat 9。 http://tomcat.apache.org/tomcat-9.0-doc/config/host.html#Request_Filters

<Host name="defaultlocalhost" appbase="whatever">
           <!-- deny all remote addresses to this host -->
            <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                    deny="d+.d+.d+.d+"/>
</Host>

这篇关于防止输入处理不当攻击的Tomcat虚拟主机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆