千家信息网

怎样实现Apache Tomcat安全绕过漏洞复现

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章给大家介绍怎样实现Apache Tomcat安全绕过漏洞复现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。千里百科Apache Tomcat是由Apache软件基金会下属
千家信息网最后更新 2025年01月20日怎样实现Apache Tomcat安全绕过漏洞复现

这篇文章给大家介绍怎样实现Apache Tomcat安全绕过漏洞复现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

千里百科

Apache Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java Server Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能。

漏洞描述

此次Apache Tomcat的安全绕过漏洞出现在Tomcat的部分版本中。Apache Tomcat Servlet 注释定义的安全约束,仅在Servlet加载后才应用。由于以这种方式定义的安全约束适用于URL模式及该点下任何URL,因此可能根据Servlet的加载顺序而对某些安全约束不适用。攻击者能够利用这个漏洞,绕过某些安全限制来执行未经授权的操作,以达到攻击的目的。

漏洞复现

上面描述的可能过于专业化,我们准备了一个案例让各位小伙伴们直观的了解一下。

由于触发此漏洞的前提是:

  1. 业务系统部署在低版本的Tomcat中。

  2. 业务系统通过注解的方式定义安全约束。

据此搭建一套JDK1.8,Apache Tomcat 8.5.24的运行环境。




新建一个Web工程,导入annotations-api.jar(annotations-api.jar是使用注解所需jar包,不导入会报错)等jar包文件。


由于ServletSecurity注释可以直接用来修饰Java Servlet,对Servlet进行类ACL保护,如果在ServletSecurity中添加ServletSecurity注释,在servlet_two中不添加ServletSecurity注释,就可能导致未授权访问,新建servlet_one.java和servlet_two.java文件,代码如下:





通过上面俩文件比较可以清晰地看出,servlet_one前增加了ServletSecurity注释,而servlet_two前没有ServletSecurity注释。

修改web.xml文件如下(在web.xml对servlet给出名称和定制的URL。用servlet元素分配名称,使用servlet-mapping元素将定制的URL与刚分配的名称相关联。)



这里可以明显的看出有两个servlet(servlet_one和servlet_two),servlet_one的访问路径是"/servlet1/",servlet_two的访问路径是"/servlet1/servlet2",由于存在漏洞的版本根据Servlet的加载顺序而对某些安全约束不适用,在没有访问/servlet1/的前提下直接访问/servlet1/servlet2,使得servlet1的ServletSecurity注解没有生效,并没有保护到"/servlet1/servlet2"路径,可能导致一些资源外泄的风险。


这个时候直接访问servlet_one的访问路径"/servlet1/",此时ServletSecurity注解生效,拒绝访问此资源。



在不重启Tomcat的情况下,访问一次servlet_one的访问路径"/servlet1/"后再次访问servlet_two的访问路径"/servlet1/servlet2"时,ServletSecurity注解已经触发,所以无法再次访问servlet_two资源,会提示拒绝访问此资源。(此方法可以作为临时防御方法,但是不建议使用此方法,应尽快升级)


影响版本

修复建议

由于在不了解对方网站架构的情况下,很容易先触发网站的安全约束,所以此漏洞利用条件困难,不过也建议小伙伴们及时更新到Apache Tomcat 8.5.28,Apache Tomcat 8.0.50,Apache Tomcat 7.0.85版本。

关于怎样实现Apache Tomcat安全绕过漏洞复现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

安全 漏洞 注释 路径 注解 版本 资源 文件 系统 名称 小伙 小伙伴 建议 业务 元素 内容 再次 前提 功能 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高中信息技术教学视频数据库 3g网络安全 工业软件开发学什么语言好 迷你世界炸服务器会违法吗 杭州在线学习软件开发 打电话显示服务器有误 汽车电子软件开发难点 数据库设置字段自动增加 数据库修改表中时间语句 联想服务器光纤模块 主题为网络安全的征文 塔式服务器散热能力 云服务器挂几个店铺 先进的软件开发技术 网络安全防火墙的具体标准 外网访问服务器端口 铭创网络技术服务工作室 突发网络安全最新消息 桐梓县网络安全 在网吧5e连接不了服务器怎么办 达芬奇怎么设置新数据库 上海安卓软件开发要多少钱 网络安全体感游戏 一个程序中需要连接几个数据库 宏碁服务器管理账号密码 贵州pdu服务器电源销售价格 武汉烽火是做软件开发的吗 2022年冬奥会网络安全工作报告 我的世界服务器战桥标准结局 火山软件开发平台值得学习吗
0