昨天寫了一篇Tomcat漏洞PUT方法任意寫入檔案漏洞(CVE-2017-12615) 的復現文章,今天決定近這兩天把Tomcat常見的漏洞全部再次過一遍,就當復習回顧了,
漏洞簡介
- CVE-2020-1938漏洞
國家資訊安全漏洞共享平臺發布了Apache Tomcat上的檔案包含漏洞,通知中表示攻擊者可利用該漏洞讀取或包含Tomcat上所有webapp目錄下的任意檔案,如:webapp組態檔或源代碼等,
影響版本:
-
Apache Tomcat 9.x < 9.0.31
-
Apache Tomcat 8.x < 8.5.51
-
Apache Tomcat 7.x < 7.0.100
-
Apache Tomcat 6.x
影響說明:讀取webapp下的所有檔案
- 漏洞原理
Tomcat開啟了http和AJP兩種協議的處理,由于“javax.servlet.include.request_uri”,“javax.servlet.include.path_info”,“javax.servlet.include.servlet_path” 這三個引數可控,所以導致檔案讀取以及檔案包含漏洞,不過注意,可讀取的檔案也僅限于webapps/ROOT目錄,
題目環境
在vulfocus演示環境自行搜索,
解題程序
利用腳本讀取web.xml檔案
發現可行,然后根據題目給出的提示,要去包含flag.png這個檔案,于是繼續利用腳本包含即可
Flag
動態flag,
總結與拓展
總結
1.漏洞原理
Tomcat開啟了http和AJP兩種協議的處理,由于“javax.servlet.include.request_uri”,“javax.servlet.include.path_info”,“javax.servlet.include.servlet_path” 這三個引數可控,所以導致檔案讀取以及檔案包含漏洞,當然內容也僅限制webapps/ROOT目錄,
2. 利用方法:
利用腳本讀取/包含檔案,
拓展知識與一些疑問
- Tomcat的簡易架構圖
從圖中可以看出,Tomcat最頂層的容器是Server,其中包含至少一個或者多個Service,一個Service有多個Connector和一個Container組成,這兩個組件的作用為:
(1)Connector用于處理連接相關的事情,并提供Socket與Request和Response相關的轉化;
(2)Container用于封裝和管理Servlet,以及具體處理Request請求;
Tomcat默認的 conf/server.xml 中配置了2個 Connector,一個為8080的對外提供的HTTP協議(1.1版本)埠,默認監聽地址: 0.0.0.0:8080,另外一個就是默認的8009 AJP協議(1.3版本)埠,默認監聽地址為:0.0.0.0:8009,兩個埠默認均監聽在外網ip,
此次漏洞產生的位置便是8009 AJP協議,
- 為什么是asdf.jsp
起初對腳本中的asdf產生了疑問,最后看了原理之后,才發現,這里的asdf可以是任意字母只要Servlet中沒有就可以,如果沒有就會啟動DefaultServlet,
如果是要進行檔案包含的話,那么就要使用asdf.jsp這樣就會走jspServlet,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243783.html
標籤:其他