Acceso a archivos del sistema: http://mi.servidor/cgi-bin/php?/etc/passwd
La información del query en una URL, la cual viene
después del signo de interrogación (?), es pasada
como argumentos de lÃnea de comandos al
intérprete por la interfaz CGI. Usualmente los
intérpretes abren y ejecutan el archivo especificado
como primer argumento de la lÃnea de comandos.
Cuando es invocado como un binario CGI, PHP se rehúsa a
interpretar los argumentos de la lÃnea de comandos.
Acceso a cualquier documento web en el servidor: http://mi.servidor/cgi-bin/php/zona_secreta/doc.html
El segmento de la URL que sigue al nombre del binario de PHP,
que contiene la información sobre la ruta /zona_secreta/doc.html es usada
convencionalmente para especificar el nombre de un archivo que
ha de ser abierto e interpretado por el programa
CGI. Usualmente, algunas directivas de
configuración del servidor web (Apache: Action) son
usadas para redireccionar peticiones de documentos
como http://mi.servidor/zona_secreta/script.php
al intérprete de PHP. Bajo este modelo, el servidor web
revisa primero los permisos de acceso al directorio /zona_secreta, y después de eso
crea la petición de redireccionamiento a http://mi.servidor/cgi-bin/php/zona_secreta/script.php.
Desafortunadamente, si la petición se hace originalmente
en esta forma, no se realizan chequeos de acceso por parte del
servidor web para el archivo /zona_secreta/script.php,
únicamente para el archivo /cgi-bin/php. De este modo, cualquier
usuario capaz de acceder a /cgi-bin/php es capaz también de
acceder a cualquier documento protegido en el servidor web.
En PHP, la configuración de tiempo de compilación
--enable-force-cgi-redirect
y las directivas de configuración en tiempo de
ejecución doc_root y
user_dir pueden ser usadas
para prevenir este tipo de ataques, si el árbol de
documentos del servidor llegara a tener directorio alguno con
restricciones de acceso. Consulte las siguientes secciones para
una explicación detallada de las diferentes
combinaciones.