PHP MySQL Safe_Mode Filesystem Circumvention Vulnerability
BID:4026
Info
PHP MySQL Safe_Mode Filesystem Circumvention Vulnerability
| Bugtraq ID: | 4026 |
| Class: | Access Validation Error |
| CVE: |
CVE-2002-0229 CVE-2007-3997 |
| Remote: | Yes |
| Local: | Yes |
| Published: | Feb 03 2002 12:00AM |
| Updated: | Sep 11 2007 11:51PM |
| Credit: | Dave Wilson <[email protected]> is credited with the discovery of this issue. |
| Vulnerable: |
PHP PHP 5.2.3 PHP PHP 5.2.2 PHP PHP 5.2.1 PHP PHP 5.1.6 PHP PHP 5.1.5 PHP PHP 5.1.4 PHP PHP 5.1.3 -RC1 PHP PHP 5.1.3 PHP PHP 5.1.2 PHP PHP 5.1.1 PHP PHP 5.1 PHP PHP 5.0.5 PHP PHP 5.0.4 PHP PHP 5.0.3 PHP PHP 5.0.2 PHP PHP 5.0.1 PHP PHP 5.0 candidate 3 PHP PHP 5.0 candidate 2 PHP PHP 5.0 candidate 1 PHP PHP 5.0 .0 PHP PHP 4.4.7 PHP PHP 4.4.6 PHP PHP 4.4.5 PHP PHP 4.4.4 PHP PHP 4.4.3 PHP PHP 4.4.2 PHP PHP 4.4.1 PHP PHP 4.4 .0 PHP PHP 4.3.11 PHP PHP 4.3.10 PHP PHP 4.3.9 PHP PHP 4.3.8 PHP PHP 4.3.7 PHP PHP 4.3.6 PHP PHP 4.3.5 PHP PHP 4.3.4 PHP PHP 4.3.3 PHP PHP 4.3.2 PHP PHP 4.3.1 PHP PHP 4.3 PHP PHP 4.2.3 PHP PHP 4.2.2 PHP PHP 4.2.1 PHP PHP 4.2 .0 PHP PHP 4.2 -dev PHP PHP 4.1.2 PHP PHP 4.1.1 PHP PHP 4.1 .0 PHP PHP 4.0.7 RC3 PHP PHP 4.0.7 RC2 PHP PHP 4.0.7 RC1 PHP PHP 4.0.7 PHP PHP 4.0.6 PHP PHP 4.0.5 PHP PHP 4.0.4 PHP PHP 4.0.3 pl1 PHP PHP 4.0.3 PHP PHP 4.0.2 PHP PHP 4.0.1 pl2 PHP PHP 4.0.1 pl1 PHP PHP 4.0.1 PHP PHP 4.0 0 PHP PHP 3.0.18 PHP PHP 3.0.17 PHP PHP 3.0.16 PHP PHP 3.0.15 PHP PHP 3.0.14 PHP PHP 3.0.13 PHP PHP 3.0.12 PHP PHP 3.0.11 PHP PHP 3.0.10 PHP PHP 3.0.9 PHP PHP 3.0.8 PHP PHP 3.0.7 PHP PHP 3.0.6 PHP PHP 3.0.5 PHP PHP 3.0.4 PHP PHP 3.0.3 PHP PHP 3.0.2 PHP PHP 3.0.1 PHP PHP 3.0 0 PHP PHP 3.0 .16 PHP PHP 3.0 .13 PHP PHP 3.0 .12 PHP PHP 3.0 .11 PHP PHP 3.0 .10 PHP PHP 5.2 |
| Not Vulnerable: |
PHP PHP 5.2.4 |
Discussion
PHP MySQL Safe_Mode Filesystem Circumvention Vulnerability
PHP's 'safe_mode' feature may be used to restrict access to certain areas of a filesystem by PHP scripts. However, a problem has been discovered that may allow an attacker to bypass these restrictions to gain unauthorized access to areas of the filesystem that are restricted when PHP 'safe_mode' is enabled.
In particular, the MySQL client library that ships with PHP fails to properly honor 'safe_mode'. As a result, a user can issue a LOAD DATA statement to read files that reside in restricted areas of the filesystem (as determined by 'safe_mode').
PHP's 'safe_mode' feature may be used to restrict access to certain areas of a filesystem by PHP scripts. However, a problem has been discovered that may allow an attacker to bypass these restrictions to gain unauthorized access to areas of the filesystem that are restricted when PHP 'safe_mode' is enabled.
In particular, the MySQL client library that ships with PHP fails to properly honor 'safe_mode'. As a result, a user can issue a LOAD DATA statement to read files that reside in restricted areas of the filesystem (as determined by 'safe_mode').
Exploit / POC
PHP MySQL Safe_Mode Filesystem Circumvention Vulnerability
The 'safemodexploit.php' example was submitted by Dave Wilson <[email protected]>:
The script will (when configured correctly) attempt to read '/var/log/lastlog' via the SQL daemon and return it to the client.
$ cp safe_mode.php /www
$ wget -qO lastlog_via_mysql localhost/safe_mode.php
$ diff /var/log/lastlog lastlog_via_mysql; echo $?
0
The 'safemodexploit.php' example was submitted by Dave Wilson <[email protected]>:
The script will (when configured correctly) attempt to read '/var/log/lastlog' via the SQL daemon and return it to the client.
$ cp safe_mode.php /www
$ wget -qO lastlog_via_mysql localhost/safe_mode.php
$ diff /var/log/lastlog lastlog_via_mysql; echo $?
0
Solution / Fix
PHP MySQL Safe_Mode Filesystem Circumvention Vulnerability
Solution:
The vendor has released PHP 5.2.4 to address this issue. Please see the references for more information.
PHP PHP 5.2
PHP PHP 3.0 .13
PHP PHP 3.0 .11
PHP PHP 3.0 0
PHP PHP 3.0 .10
PHP PHP 3.0 .12
PHP PHP 3.0 .16
PHP PHP 3.0.1
PHP PHP 3.0.10
PHP PHP 3.0.11
PHP PHP 3.0.12
PHP PHP 3.0.13
PHP PHP 3.0.14
PHP PHP 3.0.15
PHP PHP 3.0.16
PHP PHP 3.0.17
PHP PHP 3.0.18
PHP PHP 3.0.2
PHP PHP 3.0.3
PHP PHP 3.0.4
PHP PHP 3.0.5
PHP PHP 3.0.6
PHP PHP 3.0.7
PHP PHP 3.0.8
PHP PHP 3.0.9
PHP PHP 4.0 0
PHP PHP 4.0.1
PHP PHP 4.0.1 pl1
PHP PHP 4.0.1 pl2
PHP PHP 4.0.2
PHP PHP 4.0.3 pl1
PHP PHP 4.0.3
PHP PHP 4.0.4
PHP PHP 4.0.5
PHP PHP 4.0.6
PHP PHP 4.0.7
PHP PHP 4.0.7 RC1
PHP PHP 4.0.7 RC3
PHP PHP 4.0.7 RC2
PHP PHP 4.1 .0
PHP PHP 4.1.1
PHP PHP 4.1.2
PHP PHP 4.2 -dev
PHP PHP 4.2 .0
PHP PHP 4.2.1
PHP PHP 4.2.2
PHP PHP 4.2.3
PHP PHP 4.3
PHP PHP 4.3.1
PHP PHP 4.3.10
PHP PHP 4.3.11
PHP PHP 4.3.2
PHP PHP 4.3.3
PHP PHP 4.3.4
PHP PHP 4.3.5
PHP PHP 4.3.6
PHP PHP 4.3.7
PHP PHP 4.3.8
PHP PHP 4.3.9
PHP PHP 4.4 .0
PHP PHP 4.4.1
PHP PHP 4.4.2
PHP PHP 4.4.3
PHP PHP 4.4.4
PHP PHP 4.4.5
PHP PHP 4.4.6
PHP PHP 4.4.7
PHP PHP 5.0 .0
PHP PHP 5.0 candidate 2
PHP PHP 5.0 candidate 3
PHP PHP 5.0 candidate 1
PHP PHP 5.0.1
PHP PHP 5.0.2
PHP PHP 5.0.3
PHP PHP 5.0.4
PHP PHP 5.0.5
PHP PHP 5.1
PHP PHP 5.1.1
PHP PHP 5.1.2
PHP PHP 5.1.3 -RC1
PHP PHP 5.1.3
PHP PHP 5.1.4
PHP PHP 5.1.5
PHP PHP 5.1.6
PHP PHP 5.2.1
PHP PHP 5.2.2
PHP PHP 5.2.3
Solution:
The vendor has released PHP 5.2.4 to address this issue. Please see the references for more information.
PHP PHP 5.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0 .13
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0 .11
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0 0
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0 .10
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0 .12
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0 .16
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.10
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.11
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.12
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.13
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.14
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.15
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.16
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.17
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.18
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.4
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.5
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.6
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.7
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.8
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 3.0.9
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0 0
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.1 pl1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.1 pl2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.3 pl1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.4
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.5
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.6
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.7
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.7 RC1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.7 RC3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.0.7 RC2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.1 .0
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.1.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.1.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.2 -dev
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.2 .0
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.2.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.2.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.2.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.10
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.11
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.4
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.5
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.6
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.7
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.8
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.3.9
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4 .0
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4.4
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4.5
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4.6
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 4.4.7
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0 .0
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0 candidate 2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0 candidate 3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0 candidate 1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0.4
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.0.5
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1.3 -RC1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1.4
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1.5
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.1.6
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.2.1
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.2.2
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
PHP PHP 5.2.3
-
PHP php-5.2.4.tar.bz2
http://www.php.net/get/php-5.2.4.tar.bz2/from/a/mirror
References
PHP MySQL Safe_Mode Filesystem Circumvention Vulnerability
References:
References:
- PHP 5.2.4 Release Announcement (PHP)
- PHP Support (PHP Development Team.)
- PHP 5.2.4 <= various mysql functions safemode & open_basedir bypass ([email protected])
- PHP MySQL/MySQLi Safe Mode Bypass Vulnerability (secweb.se)