miércoles, octubre 05, 2011

Jugando con RoundCube (1 de 5)

************************************************************************************************
Jugando con RoundCube (1 de 5)
- Jugando con RoundCube (2 de 5)
Jugando con RoundCube (3 de 5)
Jugando con RoundCube (4 de 5)
Jugando con RoundCube (5 de 5)
Autor: Enrique Rando
************************************************************************************************

Disculpad que haya terminado convirtiendo este artículo en un cuento, pero no pude evitarlo. Creedme: intenté no hacerlo. Pero no fui capaz. Me resultaba demasiado cansado. Y bastante hay ya con que los lectores se aburran como para que también lo hagan los que escriben. Así que, como dicen en las películas, todo lo que se cuenta aquí es pura ficción. Con excepción de los aspectos técnicos, claro.

Episodio 1. Instalación y primeras impresiones

RoundCube es un software para montar webmails. Algo similar a SquirrelMail, pero con una interfaz que, al menos para mí, es mucho más atractiva. Ya sabéis: AJAX y todo eso. A lo que iba. Hace un par de semanas, poco más o menos, andaba yo con ganas de jugar y me puse a configurar una máquina virtual con que trastear. La cosa no me llevó demasiado tiempo: instalé Ubuntu 11.04 y haciendo uso de Synaptic, que para eso están las GUIs, procedí a instalar los paquetes que necesitaba: Apache, PHP, MySQL, Phpmyadmin - que siempre es una ayuda -, Postfix, Courier.

Unas pocas preguntas y respuestas, casi siempre para aceptar opciones por defecto y… ¡hecho! Después, descargué RoundCube 0.6 beta. Se trataba de un archivo TAR.GZ que descomprimí en el directorio ”/var/www/roundcubemail-0.6-beta”.

La configuración de RoundCube tampoco fue difícil. Venía con un fichero “INSTALL“ pero casi ni hacía falta leerlo. En primer lugar, creé una base de datos MySQL y un usuario para acceder a ella, utilizando phpmyadmin. Ya casi había acabado. Visité la URL “http://localhost/roundcubemail-0.6-beta/installer” y completé un asistente de 3 pasos en el que tuve que poner algunos datos como el nombre de la base de datos y las credenciales del usuario que acababa de crear, que el servidor SMTP y el IMAP eran localhost y poco más. La mayoría de las opciones ya venían rellenas con sus valores por defecto, lo que fue una gran ayuda. ¡Listo! Ya tenía mi webmail funcionando:

Figura 1. Mi propio webmail

La verdad es que esto de las opciones por defecto está muy bien… Facilita mucho las cosas y uno no tiene que saber demasiado para echar el sistema a andar. ¡Fantástico! Y entonces empecé a pensar en que las cuentas de correo coincidían con las cuentas del sistema Linux y que eso no era demasiado seguro. Si un facineroso consiguiera robar la contraseña del correo a algún administrador… bueno, la cosa tendría su gracejo. Pero pronto cambié de tema.

Siempre me ha costado mucho centrarme en una única cosa y había algo que me había llamado la atención. En el fichero INSTALL se indicaba que había que asegurarse de que se tenían permisos de escritura sobre dos directorios: “logs” y “temp”. Y pensé: “no va a ser que…”. Así que eché un vistazo a ambas carpetas. Estaban vacías, excepto por la presencia de un fichero .htaccess con el siguiente contenido:

Order allow, deny Deny from all

Buena cosa. De ese modo se evita que la gente pueda fisgonear en estos directorios. E importante porque, como pude comprobar después, cuando un usuario está creando un mensaje de correo, los archivos adjuntos se guardan provisionalmente en “temp”. ¿Provisionalmente

Episodio 2. Primeros sustos

Ciertamente, en las pruebas que realicé, los archivos temporales se borraban al enviar el mensaje, pero… ¿qué ocurriría si el mensaje no llegara a ser enviado? Creé un mensaje con varios adjuntos y, antes de enviarlo, cerré el navegador. Después volví a ver qué había en el directorio: los adjuntos estaban allí. Menos mal que no quedan a la vista del público – pensé-. En caso contrario… Pero ¿seguro que no habrá nada que falle y los deje expuestos públicamente? Ante la duda, visité: http://localhost/roundcubemail-0.6-beta/temp Y…

Figura 2. Adjuntos al descubierto ¡Qué Chuuungoooo!

Y no hacen falta credenciales de ningún tipo para descargarse todo esto. Pensé en lo que podría irse acumulando ahí con el paso del tiempo: que si presentaciones PowerPoint chorras, que si videos graciosos, que si videos no tan graciosos pero sí estimulantes, que si fotos graciosas, que si otras fotos… Incluso podrían quedar ahí documentos del trabajo. Hay quien usa el correo también para eso. Informes confidenciales. Mensajes de correo adjuntados dentro de otros. Ficheros de configuración de aplicaciones. Manuales. En definitiva, cosas que quizá pudieran ser de interés para un cotilla. No pude resistirlo: descargué uno de los ficheros (de mi propio servidor) y lo visualicé. Allí estaba, copia fiel de su original:

Figura 3. Quizá no te parezca sexy, pero hay a quien sí.

Resumiendo: mi Apache estaba ignorando el contenido de los .htaccess. Y es que, en su fichero de configuración “/etc/apache2/sites-available/default” ponía:


Figura 4: Configuración .htaccess

Ese “AllowOverride None”... Lo cambié a “AllowOverride All” y probé otra vez. Ahora la cosa estaba un poquito mejor:

Figura 5. Cerrando las puertas. O, al menos, entrecerrándolas.

¡Vaya! Una de esas opciones por defecto de Apache era la que había dejado los ficheros a la vista. Pero no es cuestión de echar la culpa a nadie: El AllowOverride es un tema espinoso. Si se pone a “None”, pasan cosas como éstas, pero he visto casos en que un ciberdelincuente lo había encontrado a “All” en un sitio que había vulnerado y lo había aprovechado para redirigir a los visitantes a páginas maliciosas, o para usar técnicas de tipo “SEO para gente de moral relajada” agresivas. O sea, que hay que medir bien los valores que se le asignan.

De hecho, distintas distribuciones de Apache que he ido viendo por ahí asignan distintos valores por defecto (una instalación de WAMP que hice para otras pruebas, por ejemplo, lo traía a “All”). No me cabe duda: tenía que haberme leído detenidamente lo que la gente de RoundCube pone en su página http://trac.roundcube.net/wiki/Howto_Install:

Figura 6: Recomendaciones de seguridad en RoundCube

Para seguir jugando, volví a desactivar los .htaccess y volví a la carga. El directorio “config” podría también contener cosas interesantes. Por ejemplo, versiones antiguas de los ficheros de configuración de las que obtener datos que, si bien pueden ser antiguos, puede que aún sean válidos:

Figura 7. Benditas copias de seguridad

************************************************************************************************
Jugando con RoundCube (1 de 5)
- Jugando con RoundCube (2 de 5)
Jugando con RoundCube (3 de 5)
Jugando con RoundCube (4 de 5)
Jugando con RoundCube (5 de 5)
************************************************************************************************

3 comentarios:

  1. Interesante articulo Chema! lo mismo le echo un par de 00 y me animo jsjsjsjsjs

    ResponderEliminar
  2. En el curro lo pusimos para dar acceso al correo a los becarios... pero lo trampeamos para que la contraseña de acceso por WebMail sea diferente de la contraseña real de la cuenta de correo ;D

    ResponderEliminar
  3. Este problema de que te liste directorios que no debiera se podría solucionar con un index.php en blanco independientemente del AlloOverride?

    ¿Que inconvenientes veis al index.php en blanco?

    ResponderEliminar