Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2005, 08:53
Josepo
 
Fecha de Ingreso: mayo-2005
Mensajes: 9
Antigüedad: 18 años, 11 meses
Puntos: 0
Sonrisa Ceguridad con PUT y ficheros PHP

Hola a todos. Tengo un problema de seguridad en un blog que he diseñado y que se hospeda en mi ordendor con Debian y Apache:

Resulta que permito la opción de subir archivos mediante PUT (sólo a usuarios autorizados con un clave, por supuesto). Los ficheros subidos se guardan en una carpeta accesible para su posterior descarga por quien esté interesado.

He pensado que si alguien subiese un archivo PHP malicioso (es decir, que ejecutase comandaos del sistema para borrar algo o liarla) entonces ese fichero PHP se quedaría en la carpeta de Descargas y al acceder a su URL mi Apache ejecutaría dicho código PHP que podría causar problemas.

Estoy pensando en cómo solucionarlo:

El usuario www-data (el que ejecuta PHP) por supuesto tiene permisos de escritura en la carpeta de Descargas, por lo que si alguien sube y ejecuta un código PHP que trate de hacer "ulink" a los ficheros almacenados en dicha carpeta lo podría hacer sin problemas y borrarlos. Y aunque esto fuese todo el riesgo posible ya es suficiente como para querer evitarlo.

He pensado como solución mirar el mime-type del fichero subido por PUT, y si es PHP desecharlo, pero claro, son muchas las extensiones posibles, y no sé si cambiando la extensión podrían engañarme y luego Apache ejecutar dicho código como si fuera PHP (esto creo que no es posible, pero no me ofrece mucha confianza esta solución).

¿Sabéis cómo debería solucionar esta vulnerabilidad?


Por otra parte, me gustaría saber cómo hacen muchas páginas para permitir descargas de ficheros sólo con autorización, es decir, ¿dónde guardan esos ficheros de tal forma que no se puede acceder vía web? ¿Cómo accede entonces PHP a ellos para ofrecerlos en descarga? De esto último he buscado información pero no encuentro. ¿Alguna idea para saber por dónde empezar a buscar y aprender?


Muchas gracias a todos.