- A+
显示不全请点击全屏阅读
该漏洞由安全宝内部安全研究员分析。分析如下:
最近看到很多安全媒体都在介绍”Apache日志文件漏洞,可能执行任意代码”,
作为安全研究人员看到”执行任意代码”,当然是需要高度敏感,因为它意味着攻击者可以秒杀你的服务器,再加之Apche的使用范围之广,感觉危害还是很大,所以本着研究精神决定对这个漏洞进行下分析,
我们先来看下官方的介绍:
mod_rewrite:确保客户端写入到RewriteLog的数据是经过终端转义序列后再写入到日志文件中。(注:自己翻译的,感觉意思是应该差不多J)
所以这里先纠正下媒体的漏洞描述吧(估计是有人为了吸引眼球或谋利而为之),在这里先科普下,显然问题是发现在apache的mod_rewrite模块,mod_rewrite模块通过RewriteLog函数记录rewrite操作的日志,但RewriteLog函数却没有过滤,将用户的数据直接写入了LogFile里。
CVE-2013-1862的漏洞的本质:
1 RewriteLog函数没有对用户的输入数据进行终端转义字符过滤
2实质上应该是Mod_Rewrite的日志文件漏洞,而不是Apache的日志文件
着实有种被忽悠的感觉,不过还是决定继续分析下这个漏洞的影响:
我们先来看下最新版本中mod_rewrite.c这个文件的具体内容:
函数首先会先读取mod_rewrite的配置文件,获取rewritelog的文件指针,然后对获取日志文件所需要变量信息,将变量数据进行终端字符转义,最后格式化写入rewitelog文件中。
相信到这里我们可以很清楚的这个漏洞的危害和影响了:
Ø 需要开启mod_rewrite
Ø 同时需要配置rewritelog
而这些仅仅只能将恶意数据写入到rewritelog中,关于后续的攻击就需要仁者见仁,智者见智了,不过我还是比较佩服给出这个标题的作者”Apache日志文件漏洞,可能执行任意代码”,至于作者为什么写可能执行任意代码,让我们继续解读下:
涉及的内容:
1终端转义序列
解释:转义序列(escape sequence)是一系列由ASCII转义字符(0x1B)开始的字符序列,并附带特殊的参数构成,转义序列一般原用于控制显示设备如终端,现在扩展在大多数操作系统中允许多种形式的交互。转义序列可以用于更改文本属性(颜色,宽度),移动鼠标位置,重配置键盘,更新窗口标题,或者操作打印机等。
(摘自赛迪网,个人感觉比较准确的中文解释,具体英文内容,可以参考附注中的参考链接)
2 Linux单引号、双引号和反引号
单引号
目的: 为了保护文字不被转换.除了他本身. 就是说除去单引号外, 在单引号内的所有文字都是原样输出.
双引号
目的: 为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出.
反引号
目的是为了在双引号内保持函数转换. 但单引号内其无作用.
分析了这么多,为了让自己意淫下,同时也为了更多基友共同意淫,正所谓独乐乐不如众乐乐,这里自己给出一些善意的POC:
Friendly POC:
;PS1%3d"%5c%5b%5ce%5d0%3bBe+Hacked%5ca%5c%5dhacker%40%5ch%3a%5cw%5c%24"%73%75;
当管理员对这些日志进行进行SHELL命令操作的时候,如cat或echo等,利用分号分割就可以运行组合命令,如下图:
不写了,相信大家对这个漏洞应该了解了,其实利用反引号就可以执行命令,这类漏洞适合APT攻击。
本文参考内容:
http://tech.ccidnet.com/art/782/20030928/606295_1.html(终端转义序列)
http://en.wikipedia.org/wiki/ANSI_escape_code (终端转义序列英文版)
http://kmoving.blog.163.com/blog/static/205049197201242211111682/(单引号,双引号和反引号)
http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/modules/mappers/mod_rewrite.c?revision=1482349&view=markup&pathrev=1482349 (mod_rewrite源码)
Tags:
如果您喜欢我的博客,欢迎点击图片定订阅到邮箱 也可以点击链接【订阅到鲜果】
如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡