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,攻擊成功