安全研究

安全漏洞
PHP preg_match()函数信息泄露漏洞

发布日期:2009-09-27
更新日期:2009-09-29

受影响系统:
PHP PHP <= 5.3
描述:
PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。

PHP所使用的preg_match()函数从用户输入字符串获得参数,如果所传送的值为数组而不是字符串就会生成警告,警告消息中包含有当前运行脚本的完整路径。

<*来源:David Vieira-Kurz
  
  链接:http://marc.info/?l=bugtraq&m=125415056222332&w=2
*>

测试方法:

警 告

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

http://localhost/cms/modules/system/admin.php?fct=users&op[]=

Warning: preg_match() expects parameter 2 to be string, array given in
/htdocs/cms/include/common.php on line 105

建议:
临时解决方法:

<?PHP
if(isset($_GET['page'])) {
     if (is_array($page = $_GET['page'])) {

          $casted = (string)$page;
      } else {
         $page = htmlspecialchars($_GET['page'],ENT_QUOTES,'UTF-8');
         validate_alpha($page);
        }
}
function validate_alpha($page) {
            return preg_match("/^[A-Za-z0-9_-]+$/ ", $page);
} ?>

厂商补丁:

PHP
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.php.net

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