miércoles, abril 23, 2014

Fugas de información en aplicaciones Ruby On Rails

No conocía esta fuga de información que me ha pasado el equipo que está desarrollando Faast en Eleven Paths sobre las implantaciones con Ruby On Rails y que es digna de tener en cuenta en cualquier auditoría web. Actualmente se ha añadido a la lista de ficheros con información jugosa y fugas de información que debe buscar el servicio cloud de pentesting persistente Faast.

La fuga de información se encuentra en la ruta /rails/info/ donde se muestran dos páginas con datos sobre la instalación de Ruby On Rails en el servidor web: Properties y Routes.

Figura 1: Sección de datos en un /rails/info/properties indexado

La página de Properties trae datos como la versión del framework, el conector a la base de datos que hay por detrás y muchos más detalles, donde también hay que destacar la ruta local de la ubicación de la aplicación en el servidor web.

Figura 2: Información de conexión y Application Root en un /rails/info/properties

En la parte de routes también aparecen rutas del servidor web, que puede ayudar a descubrir las rutas de una aplicación web, por lo que complementan las 20 técnicas que recogí para listar los ficheros de un sitio web.

Figura 3: información en fichero /rails/info/routes

Para localizar instalaciones con estos ficheros abiertos al público haciendo un poco de hacking con buscadores se puede hacer un sencillo dork en Google o Bing buscando inurl la ruta especificada más el texto "Application Root" que indica en qué lugar se ha implantado la aplicación de Ruby on Rails.

Figura 4: Dork para localizar ficheros /rails/info

Estas páginas de información tan verbose de Ruby On Rails recuerdan al info.php de PHP, a los mensajes de error de frameworks JSP, los de error de aplicaciones ASP, los de error en frameworks TCL WebDNA o a cualquier otro error de aplicación que muestre más datos de los que se deberían, así que si te toca hacer auditorias tenlo presente y si tienes una instalación con Ruby On Rails, asegúrate de que no estén disponibles.

Saludos Malignos!

3 comentarios:

  1. Esta ruta solo está activa si la aplicación rails está corriendo en el entorno development.. en production saca un 404 por defecto y ya está.

    ResponderEliminar
  2. En Symfony2 existe una ruta similar, app_dev.php. Esa ruta muchas veces esta capada al 127.0.0.1, aunque si hay un reverse proxy en la misma maquina delante la comprovación esa se va a la mierda. Se recomienda borrarlo en entornos de produccion. Si ademas haces inurl de app_dev.php/_profiler entonces significa que es publico casi seguro (sino no hubiera llegado a indexar tal url).

    ResponderEliminar
  3. Como comenta Darum, realmente no es un bug de ruby on rails, sino un fallo de configuración, de un sysadmin (o varios, vamos ;-) que ha puesto el rails en entorno de desarrollo disponible en internet.

    En la misma documentación se indica el problema:

    http://edgeguides.rubyonrails.org/configuring.html#rails-general-configuration

    Es obviamente un fallo importante y por desgracia común en un gran número de entornos. Los framework web "decentes" como RoR suelen incorporar esta diferencia entre entorno de desarrollo y de producción, dando el primero mucha información para agilizar el desarrollo y por tanto la productividad, y el segundo unos niveles "aceptables" de seguridad, etc

    Aunque en el caso de rails es muy sencillo evitar ese problema, es este un buen ejemplo de lo importante que es conocer el entorno de programación utilizado y sus particularidades. En cualquier caso, que conste que aplicaciones corriendo en este modo ofrecen muchos más problemas que este en concreto, y es obvio que deben ser evitados.

    Afortunadamente, un simple uso de las opciones por defecto habría evitado este problema.


    ResponderEliminar