La semana pasada sufrí un pequeño ataque al directorio de imágenes de un sitio web con OSCommerce. Para que OSCommerce corra, en teoría no requiere permisos superiores a 755 para la carpeta de imágenes, pero algunos servidores no funcionan y, de no tener permisos totales, no se pueden alojar imágenes desde el panel de la web.
En los servidores donde funciona bien con permisos 755 se debe a que apache pertenece al grupo del usuario que puede escribir y por lo tanto tiene permisos de escritura, pero puede no darse el caso.
Esto abre muchas puertas a hackers y crackers y es una putada, pero sabiendo como defenderse... Aun todavía han podido llegar a alojar archivos, pero no pueden ejecutar más scripts, y todo gracias, una vez más, a que en el servidor está abierta la posibilidad de usar el archivo .htaccess.
Si estamos obligados a tener el directorio con permisos 777 y no podemos usar .htaccess, estamos jodidos, mejor cambiar de servidor, pero con .htaccess podemos limitar el acceso a la carpeta. Yo lo he hecho así:
php_flag engine off
<Files ~ "\.(php*|s?p?html|cgi|pl|jb|txt)$">
deny from all
</Files>
Esto desactiva la posibilidad de interpretar PHP en un directorio, incluso para archivos con otras extensiones.
IndexIgnore *
Options All -Indexes
AddHandler cgi-script .php .php2 .php3 .php4 .php5 .php6 .php7 .php8 .pl .py .jsp .asp .htm .html .shtml .sh .cgi
Options -ExecCGI
Este codigo detiene los scripts que puedan intentar correr en el directorio. Suena redundante pero mejor que lo anterior puede ser.
<Files .htaccess>
order allow,deny
deny from all
</Files>
Y por último este código que evita que el propio archivo .htaccess sea visible.
Con esto y un bizcocho, hasta que el server aguante!