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:
?
) 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 niega a interpretar los
argumentos de línea de comandos.
Action
) 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.