CVE-2020-1938 漏洞復現


一、漏洞描述

Tomcat是Apache開源組織開發的用於處理HTTP服務的項目,兩者都是免費的,都可以做為獨立的Web服務器運行。Apache Tomcat服務器存在文件包含漏洞,攻擊者可利用該漏洞讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,如:webapp 配置文件或源代碼等。

二、漏洞危害等級

三、影響版本

Apache Tomcat 6

Tomcat 7 系列 < 7.0.100

Tomcat 8 系列 < 8.5.51

Tomcat 9 系列 < 9.0.31

四、漏洞原理

tomcat默認的conf/server.xml中配置了2個Connector,一個為8080的對外提供的HTTP協議端口,另外一個就是默認的8009 AJP協議端口,兩個端口默認均監聽在外網ip

tomcat在接收ajp請求的時候調用org.apache.coyote.ajp.AjpProcessor來處理ajp消息,prepareRequest將ajp里面的內容取出來設置成request對象的Attribute屬性。可以通過此種特性從而可以控制request對象的下面三個Attribute屬性

javax.servlet.include.request_uri

javax.servlet.include.path_info

javax.servlet.include.servlet_path

再通過控制ajp控制的上述三個屬性來讀取文件,通過操控上述三個屬性從而可以讀取到應用目錄下的任何文件。

五、漏洞復現

 

本地搭建tomcat環境,訪問127.0.0.1:8080。出現如圖內容,至此tomcat環境搭建完成。

 

POC項目地址:https://github.com/hypn0s/AJPy

六、漏洞修復

1如未使用Tomcat AJP協議:

可以直接將 Tomcat 升級到 9.0.318.5.517.0.100 版本進行漏洞修復。

如無法立即進行版本更新、或者是更老版本的用戶,建議直接關閉AJPConnector,或將其監聽地址改為僅監聽本機localhost

具體操作:

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

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

2)將此行注釋掉(也可刪掉該行):

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

(3)保存后需重新啟動,規則方可生效。

 

2如果使用了Tomcat AJP協議:

建議Tomcat立即升級到9.0.318.5.517.0.100版本進行修復,同時為AJP Connector配置secret來設置AJP協議的認證憑證。例如(注意必須將YOUR_TOMCAT_AJP_SECRET更改為一個安全性高、無法被輕易猜解的值):

<Connector port="8009"protocol="AJP/1.3"redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"secret="YOUR_TOMCAT_AJP_SECRET"/>

如無法立即進行版本更新、或者是更老版本的用戶,建議為AJPConnector配置requiredSecret來設置AJP協議認證憑證。例如(注意必須將YOUR_TOMCAT_AJP_SECRET更改為一個安全性高、無法被輕易猜解的值):

<Connector port="8009"protocol="AJP/1.3"redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET"/>


免責聲明!

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



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