security - 防止输入处理不当攻击的 Tomcat 虚拟主机

标签 security tomcat tomcat7

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

假设我的网站是 www.mywebsite.com 并且有黑客的网站 www.hacker.com

每当有请求发送到 www.mywebsite.com,修改后的“Host” header 指向 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 

我的网站在 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 &quot;%r&quot; %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

最佳答案

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

加入Tomcat用户邮件列表后(订阅邮箱:users@tomcat.apache.org)。 有一个叫安德烈的人帮我解决了这个问题:

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

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

  </Host>

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

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

2020 年 7 月 10 日更新 可以通过添加 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>

关于security - 防止输入处理不当攻击的 Tomcat 虚拟主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44054591/

相关文章:

java - 将 Spring MVC 应用程序发布到 tomcat 服务器时找不到 404 Controller

java - 如何使用 Tomcat 8.0 从 WSDL 生成 Java 客户端? WSDL 文件有多个 xsd 导入

java - Apache CXF 和 tomcat

java - CDI Beans 模块部署失败 - 部署 web 应用程序时出现 LifecycleException

tomcat - 将 relaxedQueryChars 添加到 tomcat 7.0.82 HTTP 连接器会生成无匹配属性警告

没有 SSL 的 WCF 身份验证

PHP登录系统,如何保护它

security - 从 Internet 访问 tomcat(安全条款)

delphi - 通过互联网与多个客户端使用 firebird 服务器的经验?

Tomcat:禁用启用数据源