Apache Tomcat文件包含漏洞(CNNVD-202002-1052、CVE-2020-1938)

[漏洞描述]

Apache Tomcat文件包含漏洞(CNNVD-202002-1052、CVE-2020-1938):利用此漏洞的攻擊者可以讀取 Tomcat所有webapp目錄下的任意文件。該漏洞影響包括Apache Tomcat 9.x、Apache Tomcat 8.x、Apache Tomcat 7.x、Apache Tomcat 6.x等多個版本的Tomcat。

由於該漏洞影響全版本默認配置下的 Tomcat,因部分tomcat版本過於久遠,因此該漏洞影響範圍至少包含下列版本,但不排除其他版本的Tomcat。影響版本如下:

Apache Tomcat9.x < 9.0.31

Apache Tomcat 8.x < 8.5.51

Apache Tomcat 7.x < 7.0.100

Apache Tomcat 6.x

1,xml配置文件中的修復方法:

要正確修復此漏洞,首先需要確定服務器環境中是否有用到 Tomcat AJP 協議:

1、如果確定未使用 Tomcat AJP 協議,則可以直接將 Tomcat 升級到 9.0.318.5.517.0.100 版本進行漏洞修復。

2、對於確定未使用 Tomcat AJP 協議,但無法進行版本更新、或者是更老版本的用戶,可以考慮直接關閉 AJP Connector,或將其監聽地址改爲僅監聽在本機 localhost。具體步驟:

(1)編輯<CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 爲 Tomcat 的工作目錄):

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

(2)將此行註釋掉(或直接刪掉此行):

<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />-->

(3)更改完畢後,重啓 Tomcat 即可。

來源:【漏洞預警】CNNVD 關於Apache Tomcat文件包含漏洞的通報

2,springboot對應方法:

如果使用的是外置tomcat,參考公告中的對應方法即可。

如果使用的是springboot的內置tomcat,且手動開啓了AJP協議,則需要升級內置tomcat版本。

如果你的springboot(使用默認內置tomcat)並沒有手動開啓AJP,那麼你可以不升級tomcat內置版本。當然你想升級也可以。

springboot開啓AJP方法

springboot默認關閉AJP,如果需要開啓,則需要手動配置,以springboot2爲例:

@Bean
    public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainer() {
      return server -> {
        if (server instanceof TomcatServletWebServerFactory) {
            ((TomcatServletWebServerFactory) server).addAdditionalTomcatConnectors(redirectConnector());
        }
      };
    }
 
    private Connector redirectConnector() {
       Connector connector = new Connector("AJP/1.3");
       connector.setScheme("http");
       connector.setPort(ajpPort);
       connector.setSecure(false);
       connector.setAllowTrace(false);
       return connector;
    }

開啓了AJP的springboot如何升級內置tomcat版本

如果你的springboot項目開啓了AJP,那麼你需要升級內置tomcat版本到公告中指明的版本或以上。
示例:

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <exclusion>
          <artifactId>tomcat-embed-core</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
        <exclusion>
          <artifactId>tomcat-embed-el</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
        <exclusion>
          <artifactId>tomcat-embed-websocket</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-core</artifactId>
      <version>9.0.31</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-el</artifactId>
      <version>9.0.31</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-websocket</artifactId>
      <version>9.0.31</version>
      <exclusions>
        <exclusion>
          <artifactId>tomcat-embed-core</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
      </exclusions>
    </dependency>

這裏列出了tomcat-embed-core,tomcat-embed-el和tomcat-embed-websocket這三個依賴包,實際上應該根據你的具體項目中的依賴來升級版本

來源:SpringBoot2 對應 Tomcat 的 AJP 漏洞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章