安全研究

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

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

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

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

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

测试方法:

警 告

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

Proof of concept:
http://localhost/cms/sqlfilter/sqlsanatizer.php?params[]=

Warning: mysqli_real_escape_string() expects parameter 1 to be string,
array given in /var/www/vhosts/cms/sqlfilter/sqlsanatizer.php

建议:
临时解决方法:

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

          $casted = (string)$user;
       // next steps
          ...
      } else {
             $query = sprintf("SELECT * FROM users WHERE user='%s'",
             mysqli_real_escape_string($user),
        }
}
?>

厂商补丁:

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

http://www.php.net

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