Del Blog “El Lado del Mal”: Big Data Security Tales: ¡Vigila que tu MongoDB no le dé tus datos a cualquiera! (Level 100) [05/02/2016]

Big Data Security Tales: ¡Vigila que tu MongoDB no le dé tus datos a cualquiera! (Level 100)

viernes, febrero 05, 2016

Ayer por la noche andaba revisando uno de mis temas favoritos, las cadenas de conexión a las bases de datos, cuando me topé con algo que al principio no pensé que fuera tan preocupante, pero que visto lo visto merece la pena que os deje por aquí una referencia a ello para que lo vigiléis. Se trata de la existencia de múltiples bases de datos MongoDB que exponen los datos que almacenan sin que sea necesario conocer ningún usuario ni contraseña del sistema.

Mongo0
Figura 1: ¡Vigila que tu MongoDB no le dé tus datos a cualquiera!

Me topé con ello buscando otras cosas por Shodan para hacer un poco de Hacking con Buscadores, pero al revisar los resultados que devolvió en la consulta que realicé, vi que este buscador tiene indexadas todas las bases de datos MongoDB que hay por Internet publicadas. Esto no debería ser especialmente reseñable ya que basta con revisar el puerto 27017 (Well-Known port para MongoDB) para todas las direcciones IPv4 e IPv6 que Shodan localice para saber si hay o no una base de datos MongoDb.

 

MongoDB_Shodan
Figura 2: Información de las bases de datos en el servidor MongoDB mostrada por Shodan

Sin embargo, entre los resultados que muestra John Matherly de muchos de los MongoDB aparece el nombre de las bases de datos que están dentro e incluso el tamaño de las mismas. La única explicación plausible a esto es que 1) o la base de datos muestra esa información sin necesidad de conectarse o 2) la base de datos MongoDB permite conexiones anónimas.

 

Conexiones Anónimas a MongoDB

Las conexiones anónimas son algo muy común en otros servicios, como por ejemplo en los árboles LDAP a los que se puede acceder a mucha información – incluso vía conexiones PHP LDAP Admin -, o con el uso de conexiones con el protocolo SNMPv1 o SNMPv2 en servidores SNMP, así que quise probar si la información que se veía  era por el motivo 1 o por el motivo 2. Solo curiosidad.

Mongodb_connanon
Figura 3: Conexión anónima a un servidor MongoDB con Robomongo

Para ello me descargué una herramienta Open Source llamada RoboMongo – que además está solicitando apoyo para que el proyecto continúe vivo – que ofrece un sencillo GUI y realicé algunas conexiones a direcciones IP de las que muestra Shodan como servidores MongoDB. Para hacer la prueba, por supuesto, en la conexión al servidor no seleccioné la opción de autenticarme.

 

Mongodb_users1
Figura 4: Datos de usuarios y contraseñas en una base de datos en MongoDB

Sorprendentemente, en muchas bases de datos se puede acceder a las instancias de las bases de datos, y con ello a toda la información que contienen. Datos que pueden ser de todo tipo. No es una ni dos las bases de datos MongoDB que permiten acceder de forma anónima sin conexión, sino que son muchas y ofreciendo muchos datos del propio servidor.

Mongodb_startuplog
Figura 5: Datos del software del servidor sobre el que corre MongoDB

En el caso de los registros de log, se puede ver información de arranque del motor, con datos del tipo de servidor en que está corriendo, con versiones de sistema operativo, versiones de software de motores JavaScript o SSL que pueden exponer vulnerabilidades o con rutas locales que puedan utilizarse con un ataque combinado.

Mongodb_users
Figura 6: Usuarios, contraseñas y datos personales como el teléfono

Pero es que en muchos casos están los datos de las aplicaciones, con datos de usuarios, contraseñas, datos personales, etcétera, lo que supone un gran riesgo para la seguridad de las empresas que no hayan fortificado sus bases de datos y permitan las conexiones anónimas al MongoDB.

MongoDBInjection
Figura 7: Cómo funcionan las MongoDB Injection

Si tienes una instancia MongoDB, revisa la configuración de seguridad del motor y las bases de datos, y si tienes alguna aplicación web que tire sobre ellas, revisa este artículo que publicamos en el blog de Eleven Paths sobre las técnicas de MongoDB Injection.

Saludos Malignos!

Acerca de Hector Suarez Planas

Es Licenciado en Ciencia de la Computación (3 de julio de 2002). Ha sido Administrador de Red en varias organizaciones, Programador y Analista de Sistemas. Actualmente se desempeña como Administrador de Red del Telecentro Tele Turquino de Santiago de Cuba. Tiene experiencia con sistemas Windows y GNU/Linux, Infraestructura de Redes (Cisco, AlliedTelesis, Netgear y HP ProCurve, Vyatta/VyOS), Servidores tanto físicos como virtuales (plataformas VMWare, Proxmox VE y Xen), Sistemas de Seguridad Informática (Snort/Suricata IDS, appliances AlienVault OSSIM), programador (Delphi, C++ Builder, Perl [poco], Python [algo]), entre otras cosas. Actualmente estoy incursionando en todo lo que tiene relación con Cloud Computing (OpenStack) y Centros de Datos. :-)
Esta entrada fue publicada en Big Data, MongoDB, Seguridad. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *