CVE-2020-1938:Apache Tomcat服務器任意文件讀取/包含漏洞通告
近日檢測到CNVD發佈了CNVD-2020-10487漏洞通告,360靈騰安全實驗室判斷漏洞等級爲嚴重,利用難度中,威脅程度高,影響面大。建議使用用戶及時安裝最新補丁,以免遭受黑客攻擊。
0x00 漏洞概述
Tomcat是由Apache軟件基金會屬下Jakarta項目開發的Servlet容器,按照Sun Microsystems提供的技術規範,實現了對Servlet和JavaServer Page(JSP)的支持,並提供了作爲Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全局管理和Tomcat閥等。由於Tomcat本身也內含了HTTP服務器,因此也可以視作單獨的Web服務器。
攻擊者通過Ajp協議端口利用該漏洞進行文件讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,如:webapp 配置文件、源代碼等。
0x01 漏洞詳情
查看 Github 上 tomcat commit 歷史記錄可以看到有許多對AJP協議的代碼提交
在其中一條 commit 中,發現了AJP白名單的添加
對代碼塊進行分析,發現 java/org/apache/coyote/ajp/AbstractAjpProcessor.java
中的 prepareRequest()
函數的功能是對 AJP 協議進行解析
通過對該函數的調試,可以發現在處理 Constants.SC_A_REQ_ATTRIBUTE 這部分內容時,代碼中未進行內容校驗,盲目的將請求的內容進行復制
因此,我們可以修改AJP請求的屬性,進行能夠控制任意 request.setAttribute
的key和value,通過控制request對象中這三個屬性的值實現文件讀取
javax.servlet.include.request_uri javax.servlet.include.path_info javax.servlet.include.servlet_path
利用效果:
0x02 影響版本
- Tomcat 6.*
- Tomcat 7.* < 7.0.100
- Tomcat 8.* < 8.5.51
- Tomcat 9.* < 9.0.31
0x03 漏洞檢測
相關用戶可通過版本檢測的方法判斷當前應用是否存在漏洞風險:
在web管理頁面左上方可查看當前所使用的Tomcat版本
若當前版本在受影響範圍內,則可能存在安全風險。
0x04 處置建議
1.Apache官方已發佈9.0.31、8.5.51及7.0.100版本針對此漏洞進行修復,Apache Tomcat 6 已經停止維護,請升級到最新受支持的 Tomcat 版本以免遭受漏洞影響:
https://tomcat.apache.org/download-70.cgi https://tomcat.apache.org/download-80.cgi https://tomcat.apache.org/download-90.cgi
2.使用AJP協議的臨時處置方法:爲AJP Connector配置secret來設置 AJP 協議的認證憑證,且注意口令強度
3.未使用AJP協議的臨時處置方法:禁用AJP協議端口,在conf/server.xml配置文件中註釋,並重啓Tomcat服務
<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
0x05 關於我們
靈騰安全實驗室(REDTEAM)正式成立於2020年,隸屬於360政企-實網威脅感知部;主攻研究方向包括紅隊技術、物理攻防、安全狩獵等前瞻技術,爲 360AISA全流量威脅分析系統 、 360天相資產威脅與漏洞管理系統 、 360虎安服務器安全管理系統 、 360蜃景攻擊欺騙防禦系統 核心產品提供安全賦能。
0X06 Reference
https://www.cnvd.org.cn/flaw/show/CNVD-2020-10487?spm=a2c4g.11174464.0.0.48a21051t59uVP