安全公告編號:CNTA-2020-0004java
2020年02月20日, 360CERT 監測發現 國家信息安全漏洞共享平臺(CNVD) 收錄了 CNVD-2020-10487 Apache Tomcat文件包含漏洞。web
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如下版本。apache
CNVD 對該漏洞的綜合評級爲「高危」。後端
一、Apache Tomcat 9.x < 9.0.31
二、Apache Tomcat 8.x < 8.5.51
三、Apache Tomcat 7.x < 7.0.100
四、Apache Tomcat 6.xtomcat
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服務器的兩種方式:
漏洞產生的主要位置在處理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
當請求被分發到org.apache.catalina.servlets.DefaultServlet#serveResource()方法
調用getRelativePath方法,須要獲取到request_uri不爲null,而後從request對象中獲取並設置pathInfo屬性值和servletPath屬性值
接着往下看到getResource方法時,會把path做爲參數傳入,獲取到文件的源碼
漏洞演示:讀取到/WEB-INF/web.xml文件
當在處理 jsp 請求的uri時,會調用 org.apache.jasper.servlet.JspServlet#service()
最後會將pathinfo交給serviceJspFile處理,以jsp解析該文件,因此當咱們能夠控制服務器上的jsp文件的時候,好比存在jsp的文件上傳,這時,就可以形成rce
漏洞演示:形成rce
Apache Tomcat 6 已經中止維護,請升級到最新受支持的 Tomcat 版本以避免遭受漏洞影響,請更新到以下Tomcat 版本:
下載連接以下:
7.0.100版本:https://tomcat.apache.org/dow...
8.5.51版本:https://tomcat.apache.org/dow...
9.0.31版本 https://tomcat.apache.org/dow...
做者:Hu3sky
www.anquanke.com/post/id/199448
推薦去個人博客閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
生活很美好,明天見~