安全研究

CVE-2020-1938:Apache Tomcat服務器(qì)任意文件(jiàn)讀(dú)取/包含漏洞通(tōng)告

0x00  漏洞編号

CVE-2020-1938

CNVD-2020-10487 


0x01 漏洞概述

Tomcat是由Apache軟件(jiàn)基金會(huì)屬下(xià)Jakarta項目開(kāi)發的Servlet容器(qì),按照(zhào)Sun Microsystems提供的技(jì)術(shù)規範,實現了對Servlet和JavaServer Page(JSP)的支持。由于Tomcat本身也内含了HTTP服務器(qì),因此也可以視作單獨的Web服務器(qì)。

AJP協議是Tomcat為(wèi)了動靜(jìng)資源處理分離時,通(tōng)過該協議可以将css、js等靜(jìng)态資源請求轉發到(dào)Apache的http服務器(qì)處理,提高(gāo)并發量。

而本次漏洞被稱作 Ghostcat(幽靈貓),其産生(shēng)的原因是由于AJP 協議存在實現缺陷導緻相(xiàng)關參數可控,攻擊者通(tōng)過AJP協議端口利用該漏洞進行文件(jiàn)讀(dú)取或包含Tomcat上(shàng)所有 webapp 目錄下(xià)的任意文件(jiàn),如Webapp 配置文件(jiàn)、源代碼等。 


0x02 漏洞詳情

Tomcat默認配置(conf/server.xml)中開(kāi)啓2個(gè)Connector,一(yī)個(gè)是8080端口對外提供HTTP協議,另一(yī)個(gè)是8009 端口對外提供AJP協議,兩個(gè)端口默認開(kāi)啓。

在接收到(dào)AJP請求的時候,發現java/org/apache/coyote/ajp/AjpProcessor.java中的 prepareRequest() 函數的功能(néng)是對 AJP 協議進行解析,可以發現在處理 Constants.SC_A_REQ_ATTRIBUTE這部分内容時,代碼中未進行内容校驗,就(jiù)将AJP裡(lǐ)面的内容取出來設置成request對象的Attribute屬性。因此,我們可以修改AJP請求的屬性,進而控制request對象的下(xià)面三個(gè)Attribute屬性,實現文件(jiàn)讀(dú)取。


0x03 影響版本

Tomcat 6.*
Tomcat 7.* < 7.0.100
Tomcat 8.* < 8.5.51
Tomcat 9.* < 9.0.31


0x04 自(zì)檢測試

1.在web管理頁面左上(shàng)方可查看(kàn)當前所使用的Tomcat版本,若當前版本在受影響範圍内,則可能(néng)存在安全風險。
2. Github上(shàng)已經出現在野漏洞Poc,可以用該Poc測試是否存在漏洞,更加準确。地址https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi(注意:python版本為(wèi)2.x,如果使用python3需要更改部分代碼)


0x05 處置建議

1.官方已發布針對此漏洞的修複方案,Tomcat 6 已經停止維護:
https://tomcat.apache.org/download70.cgi
https://tomcat.apache.org/download80.cgi
https://tomcat.apache.org/download-90.cgi
2.臨時處置方法:

為(wèi)AJP Connector配置secret來設置 AJP 協議的認證憑證(注意必須将YOUR_TOMCAT_AJP_SECRET更改為(wèi)一(yī)個(gè)安全性高(gāo)、無法被輕易猜解的值)。

3. 未使用AJP協議的臨時處置方法:

禁用AJP協議端口,在conf/server.xml配置文件(jiàn)中注釋,并重啓Tomcat服務。


0x06 時間線

2020/01/03:長(cháng)亭科技(jì)向 Apache Tomcat 官方提交漏洞

2020/02/11:Apache Tomcat 官方發布 9.0.31、8.5.51 安全更新版本

2020/02/14:Apache Tomcat 官方發布 7.0.100 安全更新版本

2020/02/20:CNVD 發布安全通(tōng)告

2020/02/20:長(cháng)亭科技(jì)發布漏洞風險提示

 

0x07 參考鏈接

https://www.cnvd.org.cn/webinfo/show/5415

https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner



Copyright © 2019 All Rights Reserved Designed
杭州位育網絡科技有限公司