前言
最近在騰訊雲上買了個服務器,准備用來學習。在安裝了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,攻擊成功
