Tomcat爆出高危漏洞
作者:Hu3sky@360CERT
原文鏈接:https://www.anquanke.com/post/id/199448#h2-0
0x01 漏洞背景
2020年02月20日, 360CERT 監測發現 國家信息安全漏洞共享平臺(CNVD) 收錄了 CNVD-2020-10487 Apache Tomcat文件包含漏洞
Tomcat是由Apache軟件基金會屬下Jakarta項目開發的Servlet容器,按照Sun Microsystems提供的技術規范,實現了對Servlet和JavaServer Page(JSP)的支持。由于Tomcat本身也內含了HTTP服務器,因此也可以視作單獨的Web服務器。
CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,攻擊者可利用該漏洞讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,如:webapp 配置文件、源代碼等。
0x02 影響版本
Apache Tomcat 9.x < 9.0.31
Apache Tomcat 8.x < 8.5.51
Apache Tomcat 7.x < 7.0.100
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_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path3.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海量安全大數據和實戰經驗訓練的模型,進行全流量威脅檢測,實現實時精準攻擊告警,還原攻擊鏈。目前產品具備該漏洞/攻擊的實時檢測能力。
0x07 時間線
2020-02-21 360-CERT 發布分析報告
?
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的Tomcat爆出高危漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring 5的最终功能发行版即将来临
- 下一篇: 夺命连环问:一个 TCP 连接可以发多少