jetty是一个使用非常广泛的java容器,在开发javaweb的应用的时候,使用jetty作为嵌入式的容器,调试起来非常方便。很多大的互联网公司都使用它来替代tomcat,就我所知,阿里里面使用jetty也是比tomcat多的。
2015年2月25号的时候gdssecurity公布了jetty的一个缓冲区数据泄露的漏洞,以及漏洞的利用方式
http://blog.gdssecurity.com/labs/2015/2/25/jetleak-vulnerability-remote-leakage-of-shared-buffers-in-je.html这个漏洞可能导致攻击者获取同时访问该jetty的其他用户http请求中的敏感数据。
乌云上面已经有一篇翻译文章了(http://drops.wooyun.org/papers/4972),我学习了一下,并总结原理如下:
1、jetty在处理http请求的时候,会把http请求的内容都保存在一个特定的buffer里面。每一次新的请求,都会覆盖这个buffer。jetty使用了nio,所以主要的保存在bytebuffer中
2、在收到http请求之后,jetty会逐个字符解析和判断http头,http内容的信息。其中如果判断到http头部中包含非ascii的字符,则会抛出一个IllegalCharacter的异常
3、该异常会在http返回里面打印一些用户友好的debug信息,这就需要jetty继续去解析buffer里面的值。在将buffer里面的内容转换成debug信息的时候,由于没有考虑周全,buffer里面包含了上一次正常的用户请求的内容。如果本次请求比上一次请求短,则会连带将上一次请求的内容打印出来。
我画了一个图,看完了应该非常容易理解这个漏洞。
蓝色部分就是我们构造的非法数据,在抛出异常的时候,本来只应该返回蓝色部分的数据。但是jetty继续往下读,会读到绿色部分的16个字节,然后后面以“...”省略,再读取最后的16个字节。
这样,只要构造特定长度的蓝色部分,就可以将黄色部分的数据全部读出返回。
修复:
官方已经发布了修复代码。https://github.com/eclipse/jetty.project/commit/4df5647f6dfdc5fa7abb812afe9290d60b17c098
我们可以看到,修复方式也是非常简单的。
for (int i = buffer.position(); i < buffer.limit(); i++) { appendContentChar(buf,buffer.get(i)); if (i == buffer.position() + 16 && buffer.limit() > buffer.position() + 32) { buf.append("..."); i = buffer.limit() - 16; } } buf.append(">>>\""); // ignore content beyond limit() return buf.toString();
这样就不回显后面的数据了,一切都恢复了平静。
相关推荐
**CVE-2015-1805漏洞详解** CVE-2015-1805,也被称为“Stagefright 2.0”或“QuadRooter”,是Android操作系统中的一个严重安全漏洞。这个漏洞存在于Android的多媒体处理框架中,允许攻击者通过恶意MMS( ...
**Joomla CMS与CVE-2015-7857注入漏洞** Joomla是一款流行的开源内容管理系统(CMS),用于构建各种类型的网站,包括企业、新闻、博客等。它的强大功能和灵活性使其成为全球众多用户的首选。然而,随着广泛使用,...
CVE-2011-0816, CVE-2011-0831, CVE-2011-0832, CVE-2011-0835, CVE-2011-0838, CVE-2011-0848, CVE-2011-0870, CVE-2011-0876, CVE-2011-0879, CVE-2011-0880, CVE-2011-2230, CVE-2011-2231, CVE-2011...
ElasticSearch 远程代码执行漏洞分析(CVE-2015-1427)&高级利用方法1 ElasticSearch 是一个基于 Lucene 的搜索引擎,提供了强大的搜索功能。然而,在 2015 年,一种远程代码执行漏洞(CVE-2015-1427)被发现,影响...
cve-2015-0235 rhel3x32 补丁包
针对CVE-2023-6548 和 CVE-2023-6549 的 NetScaler ADC 和 NetScaler Gateway 的漏洞补丁升级包 CVE-2023-6548 :在管理接口上执行经过身份验证的(低特权)远程代码 CVE-2023-6549:拒绝服务 2、 强烈建议受影响...
3. CVE-2015-2623、CVE-2015-4744:这些漏洞可能允许未经身份验证的攻击者进行远程代码执行或权限提升。 4. CVE-2014-2480、CVE-2014-2481、CVE-2014-4256等:这些2014年的漏洞同样涉及反序列化问题,可能导致...
本篇将详细讨论如何修补OpenSSH中的几个已知漏洞,包括CVE-2020-15778、CVE-2018-15473、CVE-2018-15919。 首先,让我们了解这些特定的漏洞: 1. CVE-2020-15778:这是一个与OpenSSH密钥协商过程相关的漏洞,可能...
远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。 成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。
最近学习CVE-2015-3636资料整理 最近学习这个漏洞遇到了各种问题,最后在github上看到一份大牛的poc后,稍作修改后的nexus4调通成功获取到了root权限。稍有遗憾没实现跳过PXN的保护
在2015年,ActiveMQ被发现存在一个严重的安全漏洞,被称为CVE-2015-5254,这是一个反序列化漏洞,允许攻击者通过精心构造的恶意消息来执行任意代码,从而对目标系统造成重大威胁。 反序列化漏洞通常发生在对象从...
- CVE-2015-8325: privilege escalation via user's PAM environment and UseLogin=yes (#1329191) - CVE-2016-1908: possible fallback from untrusted to trusted X11 forwarding (#1298741) -
瞻博网络CVE-2015-7755和CVE-2015-7756 该存储库包含笔记,二进制文件和有关Juniper ScreenOS中CVE-2015-7755和CVE-2015-7756问题的分析的相关信息。 有关这些问题的更多信息,请参见下面的URL: 发现CVE-2015-7755...
A root tool based on the CVE-2015-1805 vulnerability It supports 32 and 64bit but requires absolute kernel addresses (see offsets.c) poc was done by idler1984 https://github.com/idl3r/testcode
weblogic10.36 CVE-2018-2893补丁文件 最新补丁文件,修复 WebLogic(CVE-2018-2893)安全漏洞预警,oracle官方发布了2018年4月份的关键补丁更新CPU(CriticalPatchUpdate),其中包含一个高危的Weblogic反序列化漏洞...
Jackson官方github仓库发布安全issue,涉及漏洞CVE-2019-14361和CVE-2019-14439,均是针对CVE-2019-12384漏洞的绕过利用方式,当用户提交一个精心构造的恶意JSON数据到WEB服务器端时,可导致远程任意代码执行。...
CVE-2022-33891POC Apache Spark 命令注入(CVE-2022-33891)POC CVE-2022-33891 影响版本 Apache spark version 3.1.1版本 Apache Spark version>= 3.3.0 修复方案 1.建议升级到安全版本,参考官网链接: ...
麒麟Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关依赖包9 麒麟Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关依赖包9 麒麟Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关...
标题"CVE-2018-3191利用exp"涉及的是一个针对WebLogic服务器的安全漏洞,该漏洞被命名为CVE-2018-3191。这个漏洞是由于WebLogic服务器中Spring框架的一个组件处理JNDI(Java Naming and Directory Interface)注入...
渗透测试人员使用“CVE-2015-7501-master”这样的工具是为了模拟攻击,评估系统对这种类型漏洞的防御能力。该工具可能包含了构造恶意序列化数据的方法,以及利用漏洞获得shell的方法。在进行渗透测试时,这些工具...