關於tomcat不安全的http方法漏洞的處理方法


網上處理方法基本千篇一律。就是在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版本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM