远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案)

时间:2024-04-09 10:09:58

近期主机安全扫描除了安全漏洞,如图

远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案) 

 

看到该问题的第一思路,找到具体端口号对应的应用。主机配置httpd服务信息。最终发现主机上并未开启httpd服务。应用是基于tomcat发布的,并且为springboot的内嵌tomcat。意思就是说跟主机侧无关,需要调整应用侧代码。于是百度

tomcat传统形式通过配置web.xml达到禁止不安全的http方法

<security-constraint>  
       <web-resource-collection>  
          <url-pattern>/*</url-pattern>  
          <http-method>PUT</http-method>  
      <http-method>DELETE</http-method>  
      <http-method>HEAD</http-method>  
      <http-method>OPTIONS</http-method>  
      <http-method>TRACE</http-method>  
       </web-resource-collection>  
       <auth-constraint>  
       </auth-constraint>  
    </security-constraint>  
    <login-config>  
      <auth-method>BASIC</auth-method>  
    </login-config>

 

Spring boot使用内置tomcat,2.0版本以前使用如下形式

@Bean
public ConfigurableServletWebServerFactory configurableServletWebServerFactory() {
    TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
    factory.addContextCustomizers(context -> {
        SecurityConstraint securityConstraint = new SecurityConstraint();
        securityConstraint.setUserConstraint("CONFIDENTIAL");
        SecurityCollection collection = new SecurityCollection();
        collection.addPattern("/*");
        collection.addMethod("HEAD");
        collection.addMethod("PUT");
        collection.addMethod("DELETE");
        collection.addMethod("OPTIONS");
        collection.addMethod("TRACE");
        collection.addMethod("COPY");
        collection.addMethod("SEARCH");
        collection.addMethod("PROPFIND");
        securityConstraint.addCollection(collection);
        context.addConstraint(securityConstraint);
    });
    return factory;
}

 

然后把以上代码放在启动类中,把这个内嵌tomcat的配置用以下代码修改了,重新装配到spring容器。

测试过程:做了以上修改并不知道怎么去模拟请求测试。TRACE请求没听说过,网上没有具体测试方法,如果用其他方法测试,最大可能就是报405错误。最终想到的测试方法--反测,既然代码已经支持了POST请求,那么把POST请求也放入到tomcat的禁用请求类型中测试。看看POST请求支持的效果。以下没禁用POST,响应结果正常。

远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案) 

远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案) 

 

 

禁用POST后,发现请求已经被拒绝了。就说明该代码配置能达到禁用请求类型的效果。远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案) 

远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案)