中间件漏洞 - Tomcat 1

tomcat篇

tomcat是一个开源而且免费的jsp服务器,属于轻量级应用服务器。它可以实现JavaWeb程序的装载,是

配置JSP(Java Server Page)和JAVA系统必备的一款环境。

目录介绍

|-- webapp # 站点根目录
	|-- META-INF # META-INF 目录 
	| `-- MANIFEST.MF # 配置清单文件 
	|-- WEB-INF # WEB-INF 目录 
	| |-- classes # class文件目录 
	| | |-- *.class # 程序需要的 class 文件 
	| | `-- *.xml # 程序需要的 xml 文件 
	| |-- lib # 库文件夹 
	| | `-- *.jar # 程序需要的 jar 包 
	| `-- web.xml # Web应用程序的部署描述文件 
	|-- <userdir> # 自定义的目录 
	|-- <userfiles> # 自定义的资源文件
webapp:工程发布文件夹。其实每个 war 包都可以视为 webapp 的压缩包。 
META-INF:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生 成。
WEB-INF:Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。 
/WEB-INF/classes:存放程序所需要的所有 Java class 文件。 
/WEB-INF/lib:存放程序所需要的所有 jar 文件。 
/WEB-INF/web.xml:web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组 成应用的其它组件,以及应用初始化参数、安全管理约束等

Tomcat远程代码执行漏洞(CVE-2017-12615)

首先声明的是CVE-2017-12615漏洞的利用条件是Windows+Tomcat 7.0.x+配置文件readonly=false,配置文件内容如:

<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>

Tomcat将readonly设置为false的同时也开启了对PUT请求方式的支持。这时候意味着我们可以上传文件,那么是可以上传任意文件吗?并不是,我们首先要了解下Tomcat的下面两员大将:

org.apache.jasper.servlet.JspServlet:默认处理jsp,jspx文件请求,不存在PUT上传逻辑,无法处理PUT请求
org.apache.catalina.servlets.DefaultServlet:默认处理静态文件(除jsp,jspx之外的文件),存在PUT上传处理逻辑,可以处理PUT请求。
所以我们即使可以PUT一个文件到服务器但也无法直接PUT以jsp,jspx结尾文件,因为这些这些后缀的文件都是交由JspServlet处理的,它没法处理PUT请求。
但是当我们利用Windows特性以下面两种方式上传文件时,tomcat并不认为其是jsp文件从而交由DefaultServlet处理,从而成功创建jsp文件,这也就是所谓的CVE-2017-12615漏洞。

支持三种上传绕过方式 默认使用put 加文件名是失败的 需要绕过

PUT /shell.jsp%20 
PUT /shell.jsp::$DATA 
PUT /shell.jsp/

这种方式适合之所以可以成功创建jsp文件是因为Windows下不允许文件名以空格结尾,但是尾部添加空格可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理。这种利用方式适用与Windows系统+Tomcat 7.x。

中间件漏洞 - Tomcat 1

这种方式之所以可行是因为利用了Windows环境下NTFS文件格式的特性,NTFS文件格式存在如下的性质,为此同样可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理。这种利用方式适用与Windows系统+Tomcat 7.x。

中间件漏洞 - Tomcat 1

注意这种利用方式已经不属于CVE-2017-12615的范畴,这种利用方式适合与Windows系统及Linux系统,覆盖了Tomcat 5.x-9.x。

中间件漏洞 - Tomcat 1

修复

1.设置 readonly未true

参考:https://blog.csdn.net/blood_pupil/article/details/88602720

tomcat弱口令&war远程部署

漏洞原理

在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台,或者管理

员把密码设置成弱口令,

使用工具对其进行穷举。得到密码后,也可以进行后台上传恶意代码控制服务器。

中间件漏洞 - Tomcat 1

爆破账号密码

然后

直接将shell.jsp压缩,修改后缀为.war即可

中间件漏洞 - Tomcat 1

访问http://yourip:port/Login/shell.jsp
Login目录是war包的包名

蚁剑上线

参考:https://www.cnblogs.com/qianxinggz/p/13440366.html

漏洞修复

1.设置强口令

conf/tomcat-users.xml

<user username="tomcat" password="tomcat" roles="manager-gui,manager- script,manager-jmx,manager-status,admin-gui,admin-script" />

2.删除manger文件

上一篇:数学建模算法学习笔记 2021年10月31日更新


下一篇:创建Dynamic Web Project的三种方式