您的位置 » 首页 » 实用工具 » 漏洞预警:apache mod_rewrite模块命令执行详细分析附POC(CVE-2013-1862)

漏洞预警:apache mod_rewrite模块命令执行详细分析附POC(CVE-2013-1862)

发表于4年前 | 作者: seay | 分类: 实用工具 | 孵化于:2013年06月04日 | 文章热度:8,605 次 全屏阅读

显示不全请点击全屏阅读

该漏洞由安全宝内部安全研究员分析。分析如下:

 

最近看到很多安全媒体都在介绍Apache日志文件漏洞,可能执行任意代码,

作为安全研究人员看到执行任意代码,当然是需要高度敏感,因为它意味着攻击者可以秒杀你的服务器,再加之Apche的使用范围之广,感觉危害还是很大,所以本着研究精神决定对这个漏洞进行下分析,

我们先来看下官方的介绍:

 

mod_rewrite:确保客户端写入到RewriteLog的数据是经过终端转义序列后再写入到日志文件中。(:自己翻译的,感觉意思是应该差不多J)

所以这里先纠正下媒体的漏洞描述吧(估计是有人为了吸引眼球或谋利而为之),在这里先科普下,显然问题是发现在apachemod_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命令操作的时候,如catecho等,利用分号分割就可以运行组合命令,如下图:

 

不写了,相信大家对这个漏洞应该了解了,其实利用反引号就可以执行命令,这类漏洞适合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:

apache漏洞,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/2943/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

已经有4个筒子的人留下了脚印...

  • IcefoxHack 说:
    1楼
    2013 年 6 月 4 日 下午 6:43 回复

    麻痹的 还是没exp – – 你菊花痒了

  • IcefoxHack 说:
    2楼
    2013 年 6 月 4 日 下午 6:48 回复

    ”管理员对这些日志进行进行SHELL命令操作的时候“哪个闲的蛋疼的鸟运维整天审核日志 我要直接getshell的 – – :mrgreen:

  • 风之传说 说:
    3楼
    2013 年 6 月 4 日 下午 10:25 回复

    恩 恩 apt可以用用,不过还是佩服下楼主的探索精神啊。

  • lu4nx 说:
    4楼
    2013 年 6 月 6 日 下午 1:38 回复

    这个可执行不是这样执行的。直接在终端echo index.html;PS1=…这是执行两条命令。但直接从日志里读取,”index.html;PS1=…”这段是当做字符串,而不是分割命令。除非一些分析脚本设计有问题 直接调用外部命令 exec “echo %s”%log 这种,才可能执行。

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)