网上处理方法基本千篇一律。就是在tomcat的web.xml或者工程目录下的web.xml下配置下面的代码。

<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>

加过之后,使用curl -v -X OPTIONS http://你的地址,如果不出现下面的ALLOW,基本就OK了。

 

或者将地址复制到火狐浏览器打开,然后点击按键F12,选择网络,随便选择一个响应,点击编辑和重发,将类型改为大写的OPTIONS,点击发送,然后再点这个请求看下,返回的响应头里没有ALLOW中的那些参数,基本就OK了。

 

 

 

 

 

 

按照这种处理方法,屡试不爽,天有不测风云,某天某个项目按照这种方法处理漏洞后,并没有生效,研究了好几天,最终在百度的某个不知道第几页找到了一个相同的情况,并且对方给出初步解决方法

查看工程目录下的web.xml

看下是否有类似的error-page的配置,有的话注释掉就可以了,测试就能完美通过。

 突然有一天做渗透测试时,又发现了存在了不安全的http方法,我就给跪了,上次是存在OPTIONS,这次是存在TRACE,解决方法是先按照上面在web.xml上添加配置,然后在tomcat的conf/server.xml中的connector下增加下面红色参数配置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"  allowTrace="true"/>

 

 上面这些error-page主要是为了在打开页面错误的情况下,掩饰所使用的tomcat版本号(然并卵,测试工具还是可以抓包分析到版本号),解决办法就是直接修改tomcat的lib目录下catalina.jar配置。

在catalina.jar解压缩目录下org\apache\catalina\util 中的ServerInfo.properties

#server.info=Apache Tomcat/7.0.103
server.info=I won't tell you
server.number=7.0.103.0
server.built=Mar 16 2020 08:34:15 UTC

同时在conf里的server.xml配置Connector中增加一个server参数,参数值自定义。

<Connector port="9099" protocol="HTTP/1.1"
               connectionTimeout="5000" server="ipi" 
               redirectPort="8443" URIEncoding="UTF-8" />

以上两步就可完美隐藏tomcat版本。

 

posted on 2020-05-18 11:28  牛肉丨火锅  阅读(2059)  评论(0编辑  收藏  举报