一、概述
1.1漏洞編號:CVE-2020-1938
1.2危險等級:高
1.3描述
2020年2月20日,國家信息安全漏洞共享平台(CNVD)發布關於Apache Tomcat的安全公告,Apache Tomcat文件包含漏洞是由於Tomcat默認開啟的AJP服務(8009端口)存在一處文件包含缺陷,攻擊者可構造惡意的請求包進行文件包含操作,進而讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,如:webapp 配置文件、源代碼等。
二、影響的版本
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
三、漏洞分析
通過對源碼的分析,發現Tomcat在處理ajp協議時存在漏洞,可通過調用request.setAttribute為Tomcat設置任意request屬性。復現發現Tomcat ajp協議存在web目錄下任意文件讀取漏洞以及JSP文件包含漏洞。
當ajp URI設置為非jsp路徑時,Tomcat會調用DefaultServlet處理,此時會導致web目錄任意文件讀取漏洞。
當ajp URI設置為jsp路徑時,Tomcat會調用JspServlet處理,此時會導致JSP文件包含漏洞
四、復現步驟
環境介紹
目標機win7(IP):192.168.91.132
攻擊機kali(IP):192.168.91.128
Tomcat版本:8.5.5
注:順帶附上Tomcat各個版本下載鏈接:http://archive.apache.org/dist/tomcat/
4.1查看tomcat是否部署

4.2主機發現

4.3掃描端口(8009開放)

4.4下載讀取文件的poc
Poc鏈接:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

4.5輸入參數並執行
可以看到已經成功讀取了我們的文件信息

五、防御措施
1.禁用AJP協議,在tomcat安裝路徑中找到/conf/server.xml文件,刪除或注釋下面這行代碼:<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
2.升級到tomcat最新版本,
3.配置secret來設置AJP協議的認證憑證,如:<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>
六、危害
攻擊者利用該漏洞可通過構造特定參數,讀取服務器webapp下的任意文件。若服務器端同時存在文件上傳功能,攻擊者可進一步實現遠程代碼的執行
