首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Optionsbleed 漏洞泄露 Apache Server 的内存信息

Optionsbleed 漏洞泄露 Apache Server 的内存信息

作者头像
FB客服
发布2018-02-27 15:32:14
8880
发布2018-02-27 15:32:14
举报
文章被收录于专栏:FreeBufFreeBuf

本周一安全研究员 Hanno Böck 发现,部分 Apache 服务器可能因 Optionsbleed 漏洞(CVE-2017-9798)泄漏服务器内存信息。实际上这个漏洞和 OpenSSL 的心脏滴血问题有相似的地方,攻击者都可以查询服务器并向Apache服务器骗取数据。目前该漏洞原因已经探明,评级为中危,影响的范围有限,运行 Apache Web 服务器的用户请升级至最新版本并安装补丁。【补丁见原文】

Böck 表示 Optionsbleed 在严重性上比不上 Heartbleed,因为Optionsbleed 仅仅会在 Apache web 服务器进程中泄露信息,而不是泄漏所有全部的数据内容。也就是说,泄漏的数据内容仅限于Apache正在处理的内容,一般只是 WWeb 页面的内容。尽管如此危险仍然存在,因为 Optionsbleed 依然可能泄漏原本只有认证用户才可获取的特定页面内容。

Optionsbleed 如何影响服务器

我们都知道Web服务器的工作原理,每当客户端(如Web浏览器)向服务器发出请求时,GET 或 POST 请求会发送到服务器端,服务器响应就会传送 Web 页面的内容或相应的文件到客户端。

而 Apache 服务器能够响应很多其他的请求(方法)——例如 PUT,PATCH,HEAD 以及其他方法。而这些请求是随着时间发展慢慢添加进来的,并非所有的 Apache 服务器都可以支持。因此,部分的服务器管理员可能会禁止部分方法。而为了避免发送给服务器的请求进入“黑洞”,Apache 服务器支持名为 OPTIONS 的方法。客户端可以通过 OPTIONS 方法请求查询服务器能够响应的HTTP方法,而服务器则会返还一串以逗号分隔的支持方法的名字。

Optionsbleed 漏洞发现过程

这次 Optionsbleed 的漏洞发现源于研究员 Böck 进行的一项测试,他扫描了 Alexa 排名前 100 万的网站,来看看哪些网站使用支持 OPTIONS 的 Apache 服务器。而测试结果显示,466 台主机响应了与下述内容相似的乱码回复。

Allow: ,GET,,,POST,OPTIONS,HEAD,, Allow: POST,OPTIONS,,HEAD,:09:44 GMT Allow:GET,HEAD,OPTIONS,,HEAD,,HEAD,,HEAD,, HEAD,,HEAD,,HEAD,,HEAD,POST,,HEAD,, HEAD,!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“ Allow:GET,HEAD,OPTIONS,=write HTTP/1.0,HEAD,,HEAD,POST,,HEAD,TRACE

可以看到,除了正常的的 Allow 响应之外,其中的这 466 台服务器还答复了一些随机数据,看起来像网页的源代码——这些就是所谓的泄漏内容了。 Böck 发现自己无法重现问题并找到关键所在,所以他立即向Apache安全团队汇报了自己的发现。

随后,Apache 开发人员 Jacob Champion 协助进行调查之后发现,Apache 源代码中存在 Optionbleed 漏洞,展开修补后立即提供了补丁文件。

Optionsbleed 漏洞只影响少量服务器

在进行深入调查 Optionsbleed 之后, Böck 和 Champion 发现 Optionsbleed 在危险性上远远不如此前OpenSSL导致的心脏滴血问题(Heartbleed)。问题出现的前提是——管理员在服务器配置的.htaccess 文件中应用了 “Limit” 选项。

< Limits PATCH PUT DELETE >
Deny from all
< /Limits >

一般,服务器管理员将 .htaccess 文件放在 Apache 服务器文件夹中,以便设置仅适用于该文件目录的规则。而服务器所有者使用 .htaccess 的 “Limit” 选项来控制服务器单独在该文件夹中应答的请求。

Böck 和 Champion则表示,如果.htaccess文件的规则与放置在上层目录或普通服务器配置中的.htaccess文件中的限制规则相矛盾时,Apache 就会陷入混淆,因此出现 Optionsbleed 漏洞。

从技术角度来看,这是一个 use-after-free 的漏洞,会在 Apache 服务器附近的内存区域泄漏出内容。

漏洞测试脚本

最简单的测试方法是在循环中使用 Curl 发送OPTIONS 请求: for i in {1..100}; do curl -sI -X OPTIONS https://www.google.com/|grep -i “allow:”; done

不同的服务器配置下,对于OPTION请求可能会有不同的响应。需要测试的用户可以尝试不同的路径,HTTP或者 HTTPS host,有 www 或没有 www开头的地址都可能导致不同的测试结果。python的POC脚本【阅读原文】

问题从 2014 年开始就存在

也有其他用户指出,这个问题此前在2014年时曾被 Old Dominion University 的研究员发现过并写在论文中。

但目前来看 Apache Web 服务器团队还没有发布新的二进制文件,目前可用的补丁文件适用于2.4.x和2.2.x版本。而对于运行在共享环境中的Apache服务器,由于多个用户在同一台机器上都不输了不同的.htaccess文件,最有可能受到 Optionsbleed 漏洞影响。建议所有服务器尽快安装补丁。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Optionsbleed 如何影响服务器
  • Optionsbleed 漏洞发现过程
  • Optionsbleed 漏洞只影响少量服务器
  • 漏洞测试脚本
  • 问题从 2014 年开始就存在
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档