Mantenga sus archivos donde los pueda ver

Escrito por | 01 Mayo 2013 | Publicado en Mayo 2013
Hay una idea errónea muy común, que al mover el archivo configuration.php fuera de la raíz de tu sitio Joomla! de alguna manera hace que su sitio sea más seguro. Es tan común que incluso se puede encontrar instrucciones al respecto en la documentación de la comunidad de Joomla!. Vamos a separar el mito de los hechos y vamos a ver por qué esta "seguridad" , puede no ser tan seguro como uno podría pensar.

Que problemas causa

En primer lugar, vamos a empezar con los inconvenientes de mover el archivo configuration.php fuera de la raíz de su sitio Joomla!. El primer problema obvio, es que si tienes un sitio que tiene que utilizar la capa FTP para escribir archivos en el servidor, ya no podrás editar el archivo configuration.php. Es decir, puedes editar la configuración en la Configuración global, pero no podrás ser capaz de utilizar FTP para escribir en el archivo. Peor aún, en los sitios con Joomla! 1.5 al modificar el archivo configuration.php, y utilizar require() para cargar el archivo, a la verdad que se vuelve francamente imposible utilizar la Configuración global. Esto puede ser desastroso si, por ejemplo, se quiere poner de forma urgente su sitio fuera de línea o si tiene que modificar una opción de configuración de un dispositivo que no tiene un cliente de FTP.

El otro tema no tan obvio, es que perderá una gran cantidad de funcionalidad en Akeeba Backup. El script de restauración mantiene sus opciones sólo si hay un archivo configuration.php en la raíz del sitio. Esto sucede porque no se puede cargar la Joomla! Platform al realizar una restauración. No podemos, porque es posible que tú o alguno de los componentes de terceros hayan modificado un archivo central, causando un error en el servidor al restaurar el sitio a una ubicación diferente.

¿Por qué no es realmente seguro?

Ahora que somos conscientes de los problemas, vamos a ver en primer lugar porque se sugiere que se debe de mover ese archivo del directorio raíz del sitio. La idea es que si el archivo configuration.php está fuera de la raíz del sitio web, no puede ser leído por los piratas informáticos. Esta es una suposición falsa con sólo una excepción muy limitada.

En primer lugar, la excepción. El único caso práctico donde mover el archivo configuration.php fuera de la raíz del sitio puede ser útil, es que si estás en un host utilizando una versión antigua de PHP CGI sean afectados por un problema de seguridad grave. Sin embargo, eso significa que estás en un host que está utilizando un software obsoleto del lado del servidor. En ese caso, si yo fuera tú, estaría mucho más preocupado por que los piratas informáticos puedan hackear el servidor donde se aloja su sitio, y no de su sitio. Otra excepción es que el atacante es capaz de cargar un script de Perl u otro apoyo CGI a su sitio y tener acceso a los archivos de su sitio. Sin embargo, como veremos más adelante, en este caso, mover el archivo configuration.php será bastante inútil ya que el atacante aún puede leerlo. En algunos sitios vulnerables es posible explotar una extensión para ejecutar un código arbitrario dentro de Joomla. El método de ataque más común es la inclusión de archivos remotos. Es suficiente que el atacante ejecute este simple código:

<?php $asdfasdf = new JConfig; echo "<pre>"; var_dump($asdfasdf); die("</pre>");

Dado que el código se ejecuta dentro de Joomla! terminamos por volcar los contenidos del archivo configuration.php sin tener que preocuparse donde se almacena. Y con esto estás pwned.

Ahora, vamos a ir a un tipo diferente de ataque: Directory Traversal. La idea detrás de este ataque es que se puede manipular una extensión vulnerable para volcar el contenido de un archivo arbitrario en el servidor. El primer intento será en el archivo configuration.php en la raíz del sitio. Al no ser encontrado, el hacker intenta el dumping defines.php en la raíz del sitio o, si no existe, includes/defines.php. Esto revela la ubicación del archivo configuration.php. A partir de ese momento es trivial el dumping de su contenido. Siento decirlo otra vez, pero estas pwned.

El vector de ataque más común es en realidad otro sitio comprometido (que ni siquiera tiene que ser un sitio Joomla!) en el mismo servidor, o un atacante explotando un script vulnerable al cargar un script variante C99 (es un script que permite el acceso a casi todo en el servidor hackeado. El usuario puede agregar, eliminar, renombrar, cambiar permisos de archivos... y hacer muchas más cosas al contenido). En ambos casos el atacante es capaz de leer / escribir archivos de su sitio. Las posibilidades son infinitas, simplemente puede leer el archivo defines.php y averiguar donde está el archivo configuration.php y leerlo. Puede añadir código al view de otro componente y volcar la clase JConfig como he mostrado antes. Incluso puede escribir un script basado en JWebApplication para volcar el archivo configuration.php. La cosa es que, tan pronto como el hacker tiene acceso al sistema de archivos de su sitio, estas pwned.

Por último, otro ataque. De alguna manera el atacante obtiene acceso a la administración de su sitio. No es tan difícil estar en una de las muchas situaciones comprometedoras que conducen a secuestro de sesión, o a contraseñas robadas. Siempre y cuando el hacker tiene acceso a la administración de su sitio, es simplemente ir a Configuración Global y guardar el código fuente de la página. ¿Tenga en cuenta una cosa? Las contraseñas están ahí, en texto plano. O puede subir una herramienta como eXtplorer para navegar por su sitio. O puede cargar un componente falso cuyo único propósito es descargar el archivo configuration.php (es trivial si tiene dos dedos de frente y sabe cómo funciona Joomla!, al igual que los piratas informáticos lo hacen). Siempre y cuando el hacker tiene acceso a la administración, estas pwned.

Conclusión

Si mueve el archivo configuration.php fuera la raíz del sitio, no significa que sea ilegible para los piratas informáticos. En el caso de Joomla! no hay un riesgo muy grande en escribir en el archivo configuration.php. El mayor riesgo es en la lectura de su contenido, y este método no le protegerá de esto. Sólo te dan una falsa sensación de seguridad. También hará que sea más difícil para que puedas utilizar la función de configuración global de Joomla! y obstaculizar la restauración de su sitio. En mi humilde opinión, es una medida de seguridad con un uso práctico muy limitado, mientras aumenta el nivel de frustración del trabajo con su sitio. Si tienes una opinión diferente voy a estar contento de leer su opinión en los comentarios.

Este artículo es una traducción de "Keep your files where I can see them!", publicado originalmente por "Nicholas Dionysopoulos" en su blog "dionysopoulos.me".

Visto 5741 veces Etiquetado como Spanish, Administrador