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

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

远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案)_第1张图片 

 

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

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

  
         
          /*  
          PUT  
      DELETE  
      HEAD  
      OPTIONS  
      TRACE  
         
         
         
      
      
      BASIC  
    

 

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漏洞修复及测试方案)_第2张图片 

远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案)_第3张图片 

 

 

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

远程WWW服务支持TRACE请求(tomcat漏洞修复及测试方案)_第5张图片 

 

 

你可能感兴趣的:(springboot,java,linux,java,tomcat,springboot)