0x01 漏洞背景
2020年02月20日, 360CERT 監測發現 國家信息安全漏洞共享平臺(CNVD) 收錄了CNVD-2020-10487Apache Tomcat文件包含漏洞html
Tomcat是由Apache軟件基金會屬下Jakarta項目開發的Servlet容器,按照Sun Microsystems提供的技術規範,實現了對Servlet和JavaServer Page(JSP)的支持。因爲Tomcat自己也內含了HTTP服務器,所以也能夠視做單獨的Web服務器。java
CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,攻擊者可利用該漏洞讀取或包含Tomcat上全部webapp目錄下的任意文件,如:webapp配置文件、源代碼等。git
0x02 影響版本
Apache Tomcat 9.x < 9.0.31web
Apache Tomcat 8.x < 8.5.51apache
Apache Tomcat 7.x < 7.0.100tomcat
Apache Tomcat 6.x安全
0x03 漏洞分析
3.1 AJP Connector
Apache Tomcat
服務器經過Connector
鏈接器組件與客戶程序創建鏈接,Connector
表示接收請求並返回響應的端點。即Connector
組件負責接收客戶的請求,以及把Tomcat服務器的響應結果發送給客戶。在Apache Tomcat
服務器中咱們平時用的最多的8080
端口,就是所謂的Http Connector
,使用Http(HTTP/1.1)
協議服務器
在conf/server.xml
文件裏,他對應的配置爲微信
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
而 AJP Connector
,它使用的是 AJP
協議(Apache Jserv Protocol
)是定向包協議。由於性能緣由,使用二進制格式來傳輸可讀性文本,它能下降 HTTP
請求的處理成本,所以主要在須要集羣、反向代理的場景被使用。網絡
Ajp
協議對應的配置爲
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Tomcat服務器默認對外網開啓該端口 Web
客戶訪問Tomcat
服務器的兩種方式:
3.2 代碼分析
漏洞產生的主要位置在處理Ajp
請求內容的地方 org.apache.coyote.ajp.AbstractAjpProcessor.java#prepareRequest()
這裏首先判斷
SC_A_REQ_ATTRIBUTE
,意思是若是使用的Ajp
屬性並不在上述的列表中,那麼就進入這個條件
SC_A_REQ_REMOTE_PORT
對應的是AJP_REMOTE_PORT
,這裏指的是對遠程端口的轉發,Ajp13
並無轉發遠程端口,可是接受轉發的數據做爲遠程端口。因而這裏咱們能夠進行對
Ajp
設置特定的屬性,封裝爲request
對象的Attribute
屬性 好比如下三個屬性能夠被設置
javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path
3.3 任意文件讀取
當請求被分發到
org.apache.catalina.servlets.DefaultServlet#serveResource()
方法
調用getRelativePath
方法,須要獲取到request_uri
不爲null
,而後從request
對象中獲取並設置pathInfo
屬性值和servletPath
屬性值
接着往下看到getResource
方法時,會把path
做爲參數傳入,獲取到文件的源碼漏洞演示:讀取到
/WEB-INF/web.xml
文件
3.4 命令執行
當在處理 jsp
請求的uri
時,會調用
org.apache.jasper.servlet.JspServlet#service()
最後會將pathinfo
交給serviceJspFile
處理,以jsp
解析該文件,因此當咱們能夠控制服務器上的jsp文件的時候,好比存在jsp的文件上傳,這時,就可以形成rce漏洞演示:
形成rce
0x04 修復建議
更新到以下Tomcat 版本
Tomcat 分支 | 版本號 |
---|---|
Tomcat 7 | 7.0.0100 |
Tomcat 8 | 8.5.51 |
Tomcat 9 | 9.0.31 |
Apache Tomcat 6 已經中止維護,請升級到最新受支持的 Tomcat 版本以避免遭受漏洞影響。
請廣大用戶時刻關注 Apache Tomcat® - Welcome! 獲取最新的 Tomcat Release版本,以及 apache/tomcat: Apache Tomcat 獲取最新的 git 版本。
0x05 相關空間測繪數據
360安全大腦-Quake網絡空間測繪系統經過對全網資產測繪,發現 Apache Tomcat 在國內存在大範圍的使用狀況。具體分佈以下圖所示。
0x06 產品側解決方案
6.1 360城市級網絡安全監測服務
360安全大腦的QUAKE資產測繪平臺經過資產測繪技術手段,對該類 漏洞/事件 進行監測,請用戶聯繫相關產品區域負責人獲取對應產品。
6.2 360AISA全流量威脅分析系統
360AISA基於360海量安全大數據和實戰經驗訓練的模型,進行全流量威脅檢測,實現實時精準攻擊告警,還原攻擊鏈。
目前產品具有該漏洞/攻擊的實時檢測能力。
0x06 時間線
2020-02-21 360-CERT 發佈分析報告
推薦閱讀:
一、CNVD-2020-10487: Apache Tomcat文件包含漏洞通告
長按下方二維碼關注360CERT!謝謝你的關注!
注:360CERT官方網站提供《CVE-2020-1938 : Tomcat-Ajp 協議漏洞分析》完整詳情,點擊閱讀原文
本文分享自微信公衆號 - 三六零CERT(CERT-360)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。