- CNNVD編號:未知
- 危害等級: 超危
- CVE編號:CVE-2020-1938
- 漏洞類型: 文件包含
- 威脅類型:未知
- 廠 商:未知
- 漏洞來源:未知
- 發(fā)布時間:2020-09-11
- 更新時間:2020-12-11
漏洞簡介
漏洞公示
以Tomcat7.0.72版本作為漏洞環(huán)境進行分析,首先我們看一下Tomcat服務(wù)器處理AJP協(xié)議的代碼。跟蹤org.apache.coyote.ajp.AjpProcessor類,tomcat在接收ajp請求之后會調(diào)用這個類處理消息,在經(jīng)過協(xié)議識別,header處理之后,會調(diào)用prepareRequest()方法對AJP請求進行預(yù)處理。
prepareRequest()方法在AbstractAjpProcessor類中定義,此方法會預(yù)先對request請求進行一些頭部字段,屬性值的設(shè)定。如下圖:
在設(shè)定的過程中,prepareRequest會將ajp消息里面的內(nèi)容設(shè)置為request對象中的Attribute屬性,如下圖:
由于這種特性,我們可以控制request對象的三個Attribute屬性:
javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path
至此,漏洞的準(zhǔn)備工作已經(jīng)完成了,接下來就是利用這三個屬性進行漏洞的利用。
Tomcat在處理請求的時候,如果url未在web.xml中做映射時,通常會使用默認(rèn)的DefaultServlet進行處理,在處理的過程中則會用到上面可控的三個屬性讀取文件。DefaultServlet對于常用方法的請求中,都會使用serveResource方法來獲取資源文件,再通過getRelativePath方法獲取資源文件的路徑。
再使用上述三個可控屬性讀取文件,這個時候我們就可以通過構(gòu)造三個屬性值,讀取敏感文件信息。
如果使用JspServlet處理請求時,同樣也會用到這三個可控屬性獲取資源文件,結(jié)合文件上傳,包含含有jsp代碼的木馬文件,則會觸發(fā)遠(yuǎn)程代碼執(zhí)行漏洞。
4 漏洞復(fù)現(xiàn)
搭建Tomcat 7.0.72漏洞環(huán)境,通過AJP協(xié)議向Tomcat服務(wù)器發(fā)送構(gòu)造好的數(shù)據(jù),成功獲取到了Tomcat webapp路徑下的敏感文件信息。效果如下:
RCE利用方式
通過包含上傳到Tomcat服務(wù)器的圖片馬,可以觸發(fā)遠(yuǎn)程代碼執(zhí)行漏洞。效果如下:
參考網(wǎng)站
受影響實體
目前受影響的Apache Tomcat版本:
Apache Software Foundation Tomcat 6.*
Apache Software Foundation Tomcat 7.0.0 - 7.0.99
Apache Software Foundation Tomcat 8.0.0 - 8.5.50
Apache Software Foundation Tomcat 9.0.0 - 9.0.30
補丁
1修復(fù)建議
官方發(fā)布的最新版本(Apache Software Foundation Tomcat 7.0.100;Apache Software Foundation Tomcat 8.0.51;Apache Software Foundation Tomcat 9.0.31)已經(jīng)修復(fù)了此漏洞,請受影響的用戶下載最新版本防御此漏洞。
下載鏈接:https://tomcat.apache.org/
2 臨時解決方案
如果相關(guān)用戶暫時無法進行版本升級,可根據(jù)自身情況采用下列防護措施。
一、若不需要使用Tomcat AJP協(xié)議,可直接關(guān)閉AJP Connector,或?qū)⑵浔O(jiān)聽地址改為僅監(jiān)聽本機localhost。
具體操作:
(1)編輯<CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 為 Tomcat 的工作目錄):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
(2)將此行注釋掉:
<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
(3)保存后需重新啟動Tomcat,規(guī)則方可生效。
二、若需使用Tomcat AJP協(xié)議,可根據(jù)使用版本配置協(xié)議屬性設(shè)置認(rèn)證憑證。
使用Tomcat 7和Tomcat 9的用戶可為AJP Connector配置secret來設(shè)置AJP協(xié)議的認(rèn)證憑證。例如(注意必須將YOUR_TOMCAT_AJP_SECRET更改為一個安全性高、無法被輕易猜解的值):
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>
使用Tomcat 8的用戶可為AJP Connector配置requiredSecret來設(shè)置AJP協(xié)議的認(rèn)證憑證。例如(注意必須將YOUR_TOMCAT_AJP_SECRET更改為一個安全性高、無法被輕易猜解的值):
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_TOMCAT_AJP_SECRET"/>
3 深信服解決方案
【深信服安全云眼】在漏洞爆發(fā)之初,已完成檢測更新,對所有用戶網(wǎng)站探測,保障用戶安全。不清楚自身業(yè)務(wù)是否存在漏洞的用戶,可注冊信服云眼賬號,獲取30天免費安全體驗。
注冊地址:http://saas.sangfor.com.cn
【深信服云鏡】在漏洞爆發(fā)第一時間即完成檢測能力的發(fā)布,部署了云鏡的用戶可以通過升級來快速檢測網(wǎng)絡(luò)中是否受該高危風(fēng)險影響,避免被攻擊者利用。離線使用云鏡的用戶需要下載離線更新包來獲得漏洞檢測能力,可以連接云端升級的用戶可自動獲得漏洞檢測能力。
【深信服下一代防火墻】可輕松防御此漏洞, 建議部署深信服下一代防火墻的用戶更新至最新的安全防護規(guī)則,可輕松抵御此高危風(fēng)險。
【深信服云盾】已第一時間從云端自動更新防護規(guī)則,云盾用戶無需操作,即可輕松、快速防御此高危風(fēng)險。
【深信服安全感知平臺】可檢測利用該漏洞的攻擊,實時告警,并可聯(lián)動【深信服下一代防火墻等產(chǎn)品】實現(xiàn)對攻擊者ip的封堵。
【深信服安全運營服務(wù)】深信服云端安全專家提供7*24小時持續(xù)的安全運營服務(wù)。在漏洞爆發(fā)之初,云端安全專家即對客戶的網(wǎng)絡(luò)環(huán)境進行漏洞掃描,保障第一時間檢查客戶的主機是否存在此漏洞。對存在漏洞的用戶,檢查并更新了客戶防護設(shè)備的策略,確??蛻舴雷o設(shè)備可以防御此漏洞風(fēng)險。