1. 程式人生 > 其它 >漏洞復現-CVE-2020-1938-Tomcat 檔案讀取/包含漏洞

漏洞復現-CVE-2020-1938-Tomcat 檔案讀取/包含漏洞

0x00 實驗環境

攻擊機:Win 10

靶場:docker拉的vulhub靶場

0x01 影響版本

受影響版本

  • ApacheTomcat6
  • ApacheTomcat7<7.0.100
  • ApacheTomcat8<8.5.51
  • ApacheTomcat9<9.0.31

不受影響版本

  • Apache Tomcat = 7.0.100
  • Apache Tomcat = 8.5.51
  • Apache Tomcat = 9.0.31

0x02 漏洞復現

描述tomcat預設的conf/server.xml中配置了2個Connector,兩個埠預設均監聽在外網ip:

一個為8080的對外提供的HTTP協議埠

一個預設的8009 AJP協議埠

若web站點存在檔案上傳功能,可配合上傳shell進行伺服器許可權的控制。

(1)探測存活埠為8009,也可能為其他埠:

nmap  -A -v ip

(2)執行命令(exp將不對外提供,此處進行免責宣告,本部落格所有復現類漏洞均用於學習與正義的工作,如產生安全事故概與本人無關

python2 ajp.py x.x.x.x -p 8009 -f WEB-INF/web.xml

0x03 漏洞原理

AJP聯結器可以通過AJP協議和另一個web容器進行互動。它監聽8009埠,負責和其他的HTTP伺服器建立連線。在把Tomcat與其他HTTP伺服器整合時,就需要用到這個聯結器。AJP聯結器可以通過AJP協議和一個web容器進行互動。

0x04 修復建議

1. 如未使用Tomcat AJP協議:

如未使用 Tomcat AJP 協議,可以直接將 Tomcat 升級到 9.0.318.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)儲存後需重新啟動,規則方可生效。

參考文獻:https://cloud.tencent.com/developer/article/1590029