Tomcat AJP 文件包含漏洞(CVE-2020-1938)漏洞復現

漏洞簡介

該漏洞是因爲Tomcat AJP協議存在缺陷而致使,攻擊者利用該漏洞可經過構造特定參數,讀取服務器webapp下的任意文件。若目標服務器同時存在文件上傳功能,攻擊者可進一步實現遠程代碼執行python

影響範圍

Apache Tomcat 6git

Apache Tomcat 7 < 7.0.100github

Apache Tomcat 8 < 8.5.51web

Apache Tomcat 9 < 9.0.31tomcat

漏洞驗證

對目標主機進行端口掃描安全

能夠看到8009端口是打開的,運行AJP服務服務器

進一步使用poc驗證,讀取web.xmlapp

地址 https://github.com/0nise/CVE-2020-1938webapp

命令 python tomcat.py read_file --webapp=ROOT/ /WEB-INF/classes/application.yml 127.0.0.1ui

 

 修復方案

1)如未使用Tomcat AJP協議:

如未使用 Tomcat AJP 協議,能夠直接將 Tomcat 升級到 9.0.3一、8.5.51或 7.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.3一、8.5.51或7.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" />

相關文章
相關標籤/搜索