PHP Conference Nagoya 2025

Ataques posibles

Usar PHP como un binario CGI es una opción para configuraciones que por alguna razón no desean integrar PHP como un módulo dentro del software de servidor (como Apache), o usarán PHP con diferentes tipos de envoltorios CGI para crear entornos seguros chroot y setuid para scripts. Esta configuración usualmente involucra la instalación del binario ejecutable de PHP en el directorio cgi-bin del servidor web. La recomendación » CA-96.11 del CERT recomienda que está en contra de colocar cualquiera de los intérpretes dentro de cgi-bin. Aún si el binario de PHP puede ser usado como un intérprete independiente, PHP está diseñado para prevenir los ataques que esta configuración hace posible:

  • Accediendo a los ficheros del sistema: http://mi.servidor/cgi-bin/php?/etc/passwd La consulta de información en una URL después del signo de interrogación (?) es pasado como argumento de la línea de comandos al intérprete por la interfaz del CGI. Usualmente los intérpretes abren y ejecutan el fichero especificado como el primer argumento en la línea de comandos. Cuando es invocado como un binario de CGI, PHP se rehusa a interpretar los argumentos de línea de comandos.
  • Accediendo a cualquier documento web en el servidor: http://mi.servidor/cgi-bin/php/directorio/secreto/doc.html Parte de la ruta de información de la URL después del nombre del binario de PHP, /directorio/secreto/doc.html es convencionalmente utilizado para especificar el nombre del fichero a ser abierto e interpretado por el programa CGI. Usualmente las directivas de configuración de algunos servidores web (Apache: Acción) son utilizados para redirigir peticiones a los documentos como http://mi.servidor/directorio/secreto/script.php al intérprete de PHP. Con esta configuración, el servidor web revisa primero los permisos de acceso a los directorios /directorio/secreto, y después crea la petición redirigida http://mi.servidor/cgi-bin/php/directorio/secreto/script.php. Desafortunadamente, si la petición es proporcionada originalmente en esta forma, no se revisan los accesos a los directorios hechos por el servidor web /directorio/secreto/script.php, sino solamente al fichero /cgi-bin/php. De esta forma /cgi-bin/php cualquier usuario está habilitado a acceder a cualquier documento protegido en el servidor web. En PHP, las directivas de configuración en tiempo de ejecución cgi.force_redirect, doc_root y user_dir pueden ser utilizadas para prevenir este ataque, si el árbol de documentos del servidor tiene cualquiera de estos directorios con restricciones de acceso. Véase más abajo para una explicación completa de las diferentes combinaciones.
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top