漏洞復現-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.31、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)儲存後需重新啟動,規則方可生效。
參考文獻:https://cloud.tencent.com/developer/article/1590029