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 和组 成应用的其它组件,以及应用初始化参数、安全管理约束等
首先声明的是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。
这种方式之所以可行是因为利用了Windows环境下NTFS文件格式的特性,NTFS文件格式存在如下的性质,为此同样可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理。这种利用方式适用与Windows系统+Tomcat 7.x。
注意这种利用方式已经不属于CVE-2017-12615的范畴,这种利用方式适合与Windows系统及Linux系统,覆盖了Tomcat 5.x-9.x。
修复
1.设置 readonly未true
参考:https://blog.csdn.net/blood_pupil/article/details/88602720
漏洞原理
在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台,或者管理
员把密码设置成弱口令,
使用工具对其进行穷举。得到密码后,也可以进行后台上传恶意代码控制服务器。
爆破账号密码
然后
直接将shell.jsp压缩,修改后缀为.war即可
访问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文件