Autor: Molder
Fecha: 27 Ene 2012
En Internet encontramos múltiples Plugin para crear interfaces de usuario mas amigables entre ellos encontramos muchos uploaders ajax que si bien se ven bonitos muchos de ellos tienen poca o nula preocupación por la seguridad.
Estos Plugin se encargar de validar los archivos que subimos a un servidor por medio de su extensión y esto combinado con una mala configuración del servidor puede traernos muchos problemas.
Veamos el caso de KoolUploader (http://demo.koolphp.net/Examples/KoolUploader/Features/Ajax_Progress_Tracking/index.php) subiremos un archivo con extensión PHP (img.php) que sera bloqueado por el uploader.
img.php:
<html>
<head>
</head>
<body>
<?php echo "HOLA MUNDO"; ?>
</body>
</html>
Ahora renombremos el archivo por algo como img.php.jpg
Como podemos ver el archivo subió sin ningún problema.
En el caso del servidor de Koolphp encontramos una buena configuración del mismo por lo cual el problema no pasara a mayores y esto lo probamos ingresando a la URL donde se aloja nuestro archivo:
http://demo.koolphp.net/Examples/KoolUploader/Temp/img.php.jpg
Sin embargo lo que pasaría en un servidor con mala configuración seria:
Esto es por que el servidor ejecuta con PHP todo lo que tiene extensión .php(.*), esto lo encontramos en php[version].conf en los FilesMatch que no son otra cosa que la configuración concreta para el acceso a ficheros concretos, estos se basan en expresiones regulares, por lo tanto para solucionar nuestro problema solo necesitaríamos hacer la modificación correcta:
<IfModule mod_php5.c>
DirectoryIndex index.php index.html
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
</IfModule>
En vez de:
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
</IfModule>
Esto obliga a ejecutar con php solo lo que tenga extensión .php