php pear mail包任意文件读写漏洞

2009-05-08T00:00:00
ID SSV:11219
Type seebug
Reporter Root
Modified 2009-05-08T00:00:00

Description

PEAR是PHP的官方开源类库, PHP Extension and Application Repository的缩写。PEAR将PHP程序开发过程中常用的功能编写成类库,涵盖了页面呈面、数据库访问、文件操作、数据结构、缓存操作、网络协议等许多方面,用户可以很方便地使用。它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR就是PHP的cpan。但是80sec发现,Pear 的Mail模块存在安全漏洞,某些情况下将导致用户以webserver权限在主机上读写操作系统任意文件,继而控制主机执行php代码等。 漏洞分析:PEAR的Mail包错误地使用escapeShellCmd来过滤传入到sendmail命令的用户参数,用户提交精心构造的参数即可调用sendmail的其他参数,即可在操作系统上读写任意文件。

所有PEAR的Mail函数包 暂无 <a href=www.php.net target=_blank rel=external nofollow>www.php.net</a>

                                        
                                            
                                                &lt;?php
ini_set('include_path',ini_get('include_path').':/usr/local/lib/php/PEAR:');
require_once(&quot;Mail.php&quot;);
$from = &quot;From: &quot; . $_REQUEST['email'] . “\r\n”;
$to = “xxxxxxx@zzzz.com”;
$subj = “subscription request”;
$body = “subscribe me”;
$hdrs = array(
“To” =&gt; $to,
“Cc” =&gt; $cc,
“Bcc” =&gt; $bcc,
“From” =&gt; $from,
“Subject” =&gt; $subject,
);
$body=”test”;
$mail =&amp; Mail::factory(’sendmail’);
$mail-&gt;send($to, $hdrs, $body);
?&gt;