昨天写了一篇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协议。