昨天寫了一篇Tomcat漏洞PUT方法任意寫入文件漏洞(CVE-2017-12615) 的復現文章,今天決定近這兩天把Tomcat常見的漏洞所有再次過一遍,就當複習回顧了。java
Apache Tomcat 9.x < 9.0.31web
Apache Tomcat 8.x < 8.5.51安全
Apache Tomcat 7.x < 7.0.100架構
Apache Tomcat 6.xapp
影響說明:讀取webapp下的全部文件webapp
在vulfocus演示環境自行搜索。jsp
利用腳本讀取web.xml文件
發現可行,而後根據題目給出的提示,要去包含flag.png這個文件,因而繼續利用腳本包含便可
3d
動態flag。server
1.漏洞原理
Tomcat開啓了http和AJP兩種協議的處理,因爲「javax.servlet.include.request_uri」,「javax.servlet.include.path_info」,「javax.servlet.include.servlet_path」 這三個參數可控,因此致使文件讀取以及文件包含漏洞,固然內容也僅限制webapps/ROOT目錄。
2. 利用方法:
利用腳本讀取/包含文件。xml
從圖中能夠看出,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協議。