Osx Apache Code To Reveal CVE-2013-0966 漏洞分析

0x00 写在开头

这个漏洞从cve编号可以看出是三年前的了,当时关注的人并不多,也没有对外放出漏洞分析的Paper,可能是使用Osx Server做web服务器没有普及吧。不过这个漏洞的确很暴力。

0x01 漏洞分析

最开始是在本地发现的,在请求文件名中插入BOM头字符会直接返回后端的代码

1

当时此漏洞的描述是:

The Apple mod_hfs_apple module for the Apache HTTP Server in Apple Mac OS X before 10.8.3 does not properly handle ignorable Unicode characters, which allows remote attackers to bypass intended directory authentication requirements via a crafted pathname in a URI.

意思就是运行Apache的Osx服务器上,数据取自HFS+文件系统,HFS+用unicode来命名文件或文件夹。根据HFS+特性,当视图向HFS+请求文件时,接收到的这个文件名中含有可被HFS+忽略掉的unicode序列的话,照常返回这个正常文件名的文件。而作为apache for mac在处理这种请求时,导致请求的文件没有在服务器上执行,也就是将所请求的文件当做普通文件来响应请求。

比如这些空的unicode字符序列都会被HFS+忽略:

2

再来看看Apple的公告:

3

Apple对这个漏洞的定义只是绕过了HTTP基本认证,过于模棱两可。所以我把这个漏洞的标题定义为”Code To Reveal Vulnerability”。

4

这个漏洞的描述是说mod_hfs_apple模块没有正确处理掉这些unicode序列,这个模块的最初意义是用来处理URI请求信息的,比如文件名大小写等等事情,并且是用户自愿启不启用的。所以补丁就打在了mod_hfs_apple模块:

http://lists.apple.com/archives/security-announce/2013/Mar/msg00002.html

contains_ignorable_sequence函数将这些可被HFS+忽略的unicode序列集中了起来:

\xFC[\x80-\x83]
\xF8[\x80-\x87]
\xF0[\x80-\x8F]
\xEF\xBB\xBF
\xE2\x81[\xAA-\xAF]
\xE2\x80[\x8C-\x8F\xAA-\xAE]

在hfs_apple_module_fixups函数中调用了contains_ignorable_sequence:

if (contains_ignorable_sequence(r->filename)) {

ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,

"mod_hfs_apple: URI %s has ignorable character sequence. Denying access.",

r->filename);

return HTTP_FORBIDDEN;

}

当URI中的filename存在这些字符序列时,则返回为这个请求是禁止的。更有意思的事情是,补丁虽然打了,但Apple还是没有将mod_hfs_apple模块设为默认加载,在虚拟机上安装了OS X Yosemite 10.10来看看。

5

直到去年有安全研究员提出了”osx apache没有默认加载mod_hfs_apple模块那么打补丁有什么意义?” CVE-2015-3675就这么诞生了2333。

The default configuration of the Apache HTTP Server on Apple OS X before 10.10.4 does not enable the mod_hfs_apple module, which allows remote attackers to bypass HTTP authentication via a crafted URL.

https://support.apple.com/zh-cn/HT204942

6q

修补的方式就是默认加载了。我本机是OSX EI Caption 10.11.6,自带的Apache默认加载了这个模块:

7

0x02 漏洞蔓延

根据服务+操作系统+第三方包指纹搜索,发现在公网架设Apache服务的Osx系统中,用集成包的要比用系统原生的多,MAMP这几个就犹如win下的php study等等第三方包一样流行,MAMP在Bitnami上也很流行,这就很尴尬了。

MAMP & MAMP Pro(2015-12-14):

8

XAMPP(2016-04-21):

9

AMPPS(2015-01-03):

10

Payload:

%EF%BB%BF
%E2%81%AA
%E2%81%AB
%E2%81%AC
%E2%81%AD
%E2%81%AE
%E2%81%AF
%E2%80%AE
%E2%80%8C

MAMP & MAMP Pro:

11

AMPPS:

12

XAMPP:

13

0x03 写在最后

虽然第三方包居多,但是想找得更全很难,毕竟是中间件的第三方包,很多站建起来就不好找是不是用这个第三方包搭建的。此漏洞完整的生命线就到这儿了,感兴趣的可以继续研究下补丁。

 

*作者:Tr3jer_CongRong   Mottoin整理发布

原创文章,作者:Moto,如若转载,请注明出处:http://www.mottoin.com/article/reverse/88358.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code