1. 程式人生 > 其它 >CVE-2020-1938與CVE-2020-13935漏洞復現

CVE-2020-1938與CVE-2020-13935漏洞復現

前言

最近在騰訊雲上買了個伺服器,準備用來學習。在安裝了7.0.76的tomcat後,騰訊雲提醒我存在兩個漏洞,分別是CVE-2020-1938和CVE-2020-13935,在修復完漏洞後,準備復現一下這兩個漏洞,於是就有了這篇隨筆。

CVE-2020-1938

漏洞簡介

2020年,長亭科技安全研究人員全球首次發現了一個存在於流行伺服器 Tomcat 中的檔案讀取/包含漏洞,並第一時間提交廠商修復。

2月14日,Apache Tomcat 官方釋出安全更新版本,修復漏洞。2月20日,國家資訊保安漏洞共享平臺(CNVD)釋出安全公告,該漏洞綜合評級為高危,漏洞編號為CNVD-2020-10487,CVE 編號 CVE-2020-1938。

cve-2020-1938是一個出現在Apache-Tomcat-Ajp的檔案包含漏洞,攻擊者可以利用該漏洞讀取包含Tomcat上所有的webapp目錄下的任意檔案,如:webapp配置檔案或原始碼。由於Tomcat預設開啟的AJP服務(8009埠)存在一處檔案包含缺陷,攻擊者可構造惡意的請求包進行檔案包含操作,進而讀取受影響Tomcat伺服器上的Web目錄檔案。同時,若該伺服器存在檔案上傳功能,攻擊者還可以進一步實現遠端程式碼執行。

影響版本

Apache Tomcat 6

Apache Tomcat 7 < 7.0.100

Apache Tomcat 8 < 8.5.51

Apache Tomcat 9 < 9.0.31

環境搭建

在這裡推薦一款一鍵搭建漏洞的工具——Vulhub,非常好用。

我們進入到tomcat的CVE-2020-1938的目錄下使用docker-compose up -d啟動環境

在主機訪問搭建成功

漏洞復現

然後進入kali進行攻擊,使用POC

sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read: Tomcat的檔案包含及檔案讀取漏洞利用POC (github.com)

被打馬賽克的地方是ip地址,最後成功讀取到web.xml,攻擊成功。

我們在ROOT目錄下寫入一個1.txt再測試一下

也能成功讀取

但在webapps目錄下寫入一個2.txt卻不能讀取,因為它預設讀取的是ROOT目錄下的檔案

CVE-2020-13935

漏洞簡介

Apache Tomcat是美國阿帕奇(Apache)基金會的一款輕量級Web應用伺服器。該程式實現了對Servlet和JavaServer Page(JSP)的支援。 Apache Tomcat中的WebSocket存在安全漏洞,該漏洞源於程式沒有正確驗證payload的長度。攻擊者可利用該漏洞造成拒絕服務(無限迴圈)。

影響版本

Apache Tomcat 10.0.0-M1-10.0.0-M6

Apache Tomcat 9.0.0.M1-9.0.36

Apache Tomcat 8.5.0-8.5.56

Apache Tomcat 7.0.27-7.0.104

漏洞復現

此漏洞依舊使用上述環境

開啟瀏覽器,在位址列輸入http://IPaddress:8080/examples/websocket/echo.xhtml檢視是否可以訪問,如果不可以訪問,則說明該檔案被刪掉了,那就無法進行漏洞利用。

在伺服器上使用top -bn 1 -i -c命令,可以看到CPU佔有率為0.0

在kali上使用EXP攻擊

RedTeamPentesting/CVE-2020-13935: Exploit for WebSocket Vulnerability in Apache Tomcat (github.com)

使用此EXP前需要先編譯再攻擊

go env -w GOPROXY=https://goproxy.cn //修改proxy地址

go build //編譯go程式,輸出tcdos.exe

可以看到此時cpu佔有率為100,攻擊成功

參考

CVE-2020-1938 Tomcat 檔案讀取/包含漏洞復現 - 雲+社群 - 騰訊雲 (tencent.com)

CVE-2020-13935 漏洞復現 - XY_181312 - 部落格園 (cnblogs.com)