Tomcat被曝重大漏洞,影響過去 13 年的所有版本
一、漏洞背景

近日,國內安全公司長亭科技披露一個在 Tomcat 中潛伏十多年的安全漏洞——Ghostcat (幽靈貓),其編號為 CVE-2020-1938 。
據悉,Ghostcat(幽靈貓)由長亭科技安全研究員發現,它是存在于 Tomcat 中的安全漏洞。
由于 Tomcat AJP 協議設計上存在缺陷,攻擊者通過 Tomcat AJP Connector 可以讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,例如可以讀取 webapp 配置文件或源代碼。
Tomcat Connector 是 Tomcat 與外部連接的通道,它使得 Catalina 能夠接收來自外部的請求,傳遞給對應的 Web 應用程序處理,并返回請求的響應結果。默認情況下,Tomcat 配置了兩個 Connector,它們分別是 HTTP Connector 和 AJP Connector。
安全公告編號:CNTA-2020-0004
2020年02月20日, 360CERT 監測發現 國家信息安全漏洞共享平臺(CNVD) 收錄了 CNVD-2020-10487 Apache Tomcat文件包含漏洞。
CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,攻擊者可利用該高危漏洞讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,如:webapp 配置文件或源代碼等。
受影響的版本包括:Tomcat 6,Tomcat 7的7.0.100以下版本,Tomcat 8的8.5.51以下版本,Tomcat 9的9.0.31以下版本。
CNVD 對該漏洞的綜合評級為“高?!薄?/p>
二、影響版本
1、Apache Tomcat 9.x < 9.0.31
2、Apache Tomcat 8.x < 8.5.51
3、Apache Tomcat 7.x < 7.0.100
4、Apache Tomcat 6.x
三、漏洞分析
3.1 AJP Connector
Apache Tomcat服務器通過Connector連接器組件與客戶程序建立連接,Connector表示接收請求并返回響應的端點。即Connector組件負責接收客戶的請求,以及把Tomcat服務器的響應結果發送給客戶。
在Apache Tomcat服務器中我們平時用的最多的8080端口,就是所謂的Http Connector,使用Http(HTTP/1.1)協議
在conf/server.xml文件里,他對應的配置為:
connectionTimeout="20000" redirectPort="8443"?/> 而 AJP Connector,它使用的是 AJP 協議(Apache Jserv Protocol)是定向包協議。因為性能原因,使用二進制格式來傳輸可讀性文本,它能降低 HTTP 請求的處理成本,因此主要在需要集群、反向代理的場景被使用。 Ajp協議對應的配置為: Tomcat服務器默認對外網開啟該端口 Web客戶訪問Tomcat服務器的兩種方式: 3.2 代碼分析 漏洞產生的主要位置在處理Ajp請求內容的地方org.apache.coyote.ajp.AbstractAjpProcessor.java#prepareRequest() 這里首先判斷SCAREQ_ATTRIBUTE,意思是如果使用的Ajp屬性并不在上述的列表中,那么就進入這個條件 SCAREQREMOTEPORT對應的是AJPREMOTEPORT,這里指的是對遠程端口的轉發,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 四、修復建議 長亭科技提示:對于處在漏洞影響版本范圍內的 Tomcat 而言,若其開啟 AJP Connector 且攻擊者能夠訪問 AJP Connector 服務端口的情況下,即存在被 Ghostcat 漏洞利用的風險。 并且,Tomcat AJP Connector 默認配置下即為開啟狀態,且監聽在 0.0.0.0:8009。 要正確修復 Ghostcat 漏洞,首先要確定服務器環境中是否有用到 Tomcat AJP 協議: 如果未使用集群或反向代理,則基本上可以確定沒有用到 AJP; 如果使用了集群或反向代理,則需要看集群或反代服務器是否與 Tomcat 服務器 AJP 進行通信 早在 1 月初,長亭科技向 Apache Tomcat 官方提交漏洞。 目前,Tomcat 官方已經發布 9.0.31、8.5.51 及 7.0.100 版本針對此漏洞進行修復。因此,建議 Tomcat 用戶盡快升級到最新版本。 下載鏈接如下: 7.0.100版本:https://tomcat.apache.org/download-70.cgi 8.5.51版本:https://tomcat.apache.org/download-80.cgi 9.0.31版本 https://tomcat.apache.org/download-90.cgi 素材來源以下網站: www.anquanke.com/post/id/199448 https://www.infoq.cn/article/CyeCTLTTqWT2QJkuLEh3 “掃一掃,獲取更多內容” Tomcat 漏洞掃描服務 通用安全
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。