【漏洞复现】Apache Tomcat安全绕过漏洞(CVE-2018-1305)

2019-03-23

近日,Apache Tomcat曝出安全绕过漏洞。漏洞的CVE编号为CVE-2018-1305。

千里百科

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 9.0.0.M1-9.0.4,

Apache Tomcat 8.5.0-8.5.27,

Apache Tomcat 8.0.0.RC1 - 8.0.49,

Apache Tomcat 7.0.0 - 7.0.84。

修复建议

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

更新链接:

Apache Tomcat 7.0.85:https://tomcat.apache.org/download-70.cgi

Apache Tomcat 8.0.50:https://tomcat.apache.org/download-80.cgi

Apache Tomcat 8.5.28:https://tomcat.apache.org/download-80.cgi

Apache Tomcat 9.0.5:https://tomcat.apache.org/download-90.cgi

参考链接

CVE链接:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1305

Bugtraq链接:https://www.securityfocus.com/bid/103144/discuss


相关文章

CVE-2018-1111复现环境搭建与dhcp命令注入

2019-09-10
前言最近留意到CVE-2018-1111这个洞,关于dhcp命令注入,便想复现一波.DHCP是一个局域网的网络协议,主要用于内部网络动...

CVE-2018-1111复现环境搭建与dhcp命令注入

2019-09-02
前言最近留意到CVE-2018-1111这个洞,关于dhcp命令注入,便想复现一波.DHCP是一个局域网的网络协议,主要用于内部网络动...

CVE-2018-4990 Acrobat Reader堆内存越界访问释放漏洞分析

2019-06-28
样本MD5bd23ad33accef14684d42c32769092a0漏洞简介CVE-2018-4990是Adobe在2018年5月修复的一个Adobe DC系列PDF阅读...

CVE-2018-11776(Struts 2/S2-057)、GhostScript及UEditor漏洞应急响应公告

2019-06-19
CVE编号CVE-2018-11776漏洞影响此漏洞导致攻击者可以通过构造恶意请求执行系统命令获取服务器权限,威胁服务器安全.受影响...

libssh CVE-2018-10933 身份验证绕过漏洞分析报告

2019-06-09
0x00 事件背景2018-10-16 libssh发布更新公告旨在解决CVE-2018-10933的问题libssh版本0.6及更高版本在服务端代码中具有身份验证...

CVE-2018-0798漏洞研究

2019-06-02
QAX A-TEAM漏洞介绍:下图为CVE-2018-0798的漏洞公告,描述比较简略:Office 2007、Office 2010、Office 2013、Office 2016中...

CVE-2018-4878 Flash 0day漏洞攻击样本解析

2019-05-25
0day CVE-2018-487漏洞利用代码被嵌入到Office文档中,样本使用Excel文档为载体,内嵌了一个动画用于加载其中恶意的Flash组件...

CVE-2018-1111复现

2019-05-24
近日,红帽官方发布了安全更新,修复了编号为CVE-2018-1111的远程代码执行漏洞,攻击者可以通过伪造DHCP服务器发送响应包,...

CVE-2018-14847 简单利用

2019-05-22
Baines针对CVE-2018-14847发布了一段新的概念验证(PoC)代码,实现了在受漏洞影响的MikroTik路由器上的远程代码执行.影响...

Office 0day(CVE-2018-0802与2017-11882)漏洞分析与利用

2019-04-13
CVE-2018-0802危险等级: 高危漏洞类型: 任意代码执行影响版本: Microsoft Office 2007 Service Pack3 Microsoft Office 2010 ...

随机推荐

关注:JK2结束纽约拍摄行程

2020-09-10
Bye NYC 每周精选 卡皇低眸太喜欢了 崽崽真的是好温柔 JK2一开拍 郑氏姐妹真的好甜啊 卡皇腿长两米八 不看后悔 !!郑氏姐妹正式...

【PHP工程师】上海左旗电子科技有限公司

2020-07-26
PHP工程师(2名)岗位职责:1.能熟练运用photoshop,AI等图像处理软件设计制作图片;2.熟悉“DIV+CSS”等前端技术制作网页;...

phpStudy联合各大安全厂商为用户免费提供安全检测服务

2020-06-10
对于前段时间phpStudy软件被黑客植入“后门”事件,我们对此行为深表痛恨!为了更好地预防此次事件重演,保证广大用户的网络安...

谭维维的新专辑,很了不起

2018-10-21
谭维维加盟「太合麦田」之前就和她合作过的填词人喻江、英国制作人Julian Emery、作曲刘迦宁、Daryl K王凯玉、钱雷这次都贡献了...

Windows关闭445端口说明

2018-07-09
Windows10之前的版本关闭445端口方法: (此处以Windows server2003为例)如图点击开始菜单里的“运行”输入”gpedit.msc”...

Django 与数据库交互中的九个知识点

2018-02-26
过滤器聚合 在Django 2.0 之前,如果你想得到“用户总数”、“活跃用户总数”等信息时,你不得不使用条件表达式...将查询结果变为 namedtuples 形式 我个人非常喜欢 namedtuples. 从Django 2.0 之后...自定义函数 Django 的ORM 功能强大且内容丰富.但是却不可能紧跟所有的数据库供应商的步伐.幸运的是...

PyCharm运行 Python 的四种方式

2017-08-02
设置 Python 解释器 PyCharm 只是提供一个集成开发环境,你在执行 Python 程序时,还是得依赖 Python 解释器... 运行 Python 程序 设置好解释器后,就可以直接运行Python 程序了... 运行相关的快捷键 + F10:运行当前文件 + + F10:弹出菜单,让你选择运行哪一个文件

交易专区——青岛栈桥109全敏无底洞

2016-11-07
下面进入正题,本期带来的是山东1区青岛栈桥的109无底洞.全敏加点,总经验100亿,历史门派无底洞,女魃墓,狮驼岭师门技能全...

好课分享:极客专栏后端技术基础详解 ,网盘下载

2016-10-05
为你准备好了:我们组织了很多爱好学习的伙伴,一起组建了社群每日共享全网好课,期待你的加入~百度云网盘下载 ,爱好此款网课...

平板电脑火爆!我国共1.9万家平板电脑相关企业,77%在广东

2016-04-27
2020年受到新冠疫情的影响,学生留在家里上网课,“打工人”在家里办公,催生了对平板电脑的需求,市场呈现出近几年难得一见的...