前言:Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用 服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
一、Tomcat 任意文件写入(CVE-2017-12615)
1.漏洞介绍
1.1影响范围:
Apache Tomcat 7.0.0 - 7.0.81
1.2漏洞原理:
Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致可以使用PUT方法上传任意文件,攻击者将精心构造的payload向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行
2.漏洞复现
使用vulfocus提供的靶场
抓包修改请求包方法为PUT,通过PUT方法上传文件,注意PUT与文件名之间要有空格,文件内容通过POST提交
我们直接上传jsp文件会报404错误,估计是服务器有校验,因此我们需要绕过
方法一:使用斜杠/,斜杠在文件名中是非法的,所以会被去除(Linux和Windows中都适用)
PUT /shell.jsp/ HTTP/1.1
加'/'是为了绕过jsp文件的限制,斜杠在文件名中是非法的,所以会被去除(Linux和Windows都适用)
方法二:使用空格%20 (在Windows中适用)
在Windows下不允许文件以空格结尾,因此上传到windows会被自动去掉末尾空格
PUT /shell.jsp%20 HTTP/1.1
方法三:使用NTFS流(在Windows中适用的)
PUT /x.jsp::$DATA HTTP/1.1
访问上传的文件获取flag
3.修复建议
1、配置readonly和VirtualDirContext值为True或注释参数,禁止使用PUT方法并重启tomcat
注意:如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。
2、根据官方补丁升级最新版本
二、Tomcat 远程代码执行(CVE-2019-0232)
1.漏洞介绍
1.1影响版本
Apache Tomcat 9.0.0.M1 to 9.0.17
Apache Tomcat 8.5.0 to 8.5.39
Apache Tomcat 7.0.0 to 7.0.93
1.2漏洞利用条件
1.系统为Windows
2. 启用了CGI Servlet(默认为关闭)
3. 启用了enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)
1.3漏洞原理
由于使用enableCmdLineArguments在Windows上运行时,远程执行代码漏洞(CVE-2019-0232)驻留在公共网关接口(CGI)Servlet中,java运行时环境(JRE)将命令行参数传递给Windows的方式存在缺陷导致
2.漏洞复现
参考:
https://www.cnblogs.com/liliyuanshangcao/p/10731966.html
3.修复建议
1.禁用enableCmdLineArguments参数。
2.在conf/web.xml中覆写采用更严格的参数合法性检验规则。
3.升级tomcat到9.0.17以上版本。
三、Tomcat session反序列化(CVE-2020-9484)
1.漏洞介绍
1.1影响版本:
10.0.0-M1至10.0.0-M4
9.0.0.0.M1至9.0.34
8.5.0至8.5.54
7.0.0至7.0.103
1.2漏洞利用条件:
1.攻击者能够控制服务器上文件的内容和文件名称;
2.服务器PersistenceManager配置中使用了FileStore;
3.PersistenceManager中的sessionAttributeValueClassNameFilter被配置为“null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象;
4.攻击者知道使用的FileStore存储位置到攻击者可控文件的相对路径
1.3漏洞原理:
当使用tomcat时,如果使用了tomcat提供的session持久化功能,就会在一次会话中尝试读取session文件中的内容,并进行反序列化。
2.漏洞复现
参考:
Tomcat Session(CVE-2020-9484)反序列化漏洞复现 - FreeBuf网络安全行业门户
3.修复建议
1.检查是否使用tomcat的session持久化功能,如果有,建议关闭
2.检查项目中文件上传功能是否存在任意上传,这里任意上传指的是可以上传非jsp文件且可以控制上传文件名后缀为session
3.升级tomcat至最新版本
四、Tomcat 弱口令 && 后台getshell
1.漏洞介绍
1.1影响版本
所有版本
1.2漏洞条件
Tomcat7+权限分为:
- manager(后台管理) - manager-gui 拥有html页面权限- manager-status 拥有查看status的权限- manager-script 拥有text接口的权限,和status权限- manager-jmx 拥有jmx权限,和status权限
- host-manager(虚拟主机管理) - admin-gui 拥有html页面权限- admin-script 拥有text接口权限
这些权限的究竟有什么作用,详情阅读 Apache Tomcat 8 (8.5.77) - Manager App How-To
用户tomcat拥有上述所有权限,密码是tomcat;正常安装的情况下,tomcat中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。
1.3漏洞原理
通过弱口令进入后台后,在后台部署war文件,可以直接将webshell部署到web目录下
2.漏洞复现
参考链接:
16.Tomcat弱口令 && 后台getshell漏洞 - bmjoker - 博客园
3.修复建议
1、在系统上以低权限运行Tomcat应用程序。创建一个专门的 Tomcat服务用户,该用户只能拥有一组最小权限(例如不允许远程登录)。
2、增加对于本地和基于证书的身份验证,部署账户锁定机制(对于集中式认证,目录服务也要做相应配置)。在CATALINA_HOME/conf/web.xml文件设置锁定机制和时间超时限制。
3、针对manager-gui/manager-status/manager-script等目录页面设置最小权限访问限制。
版权归原作者 码啊码 所有, 如有侵权,请联系我们删除。