Agujero en servidores de BBDD [Hacking Google + SQLi] - www.kanglin.com.tw

Iniciado por baah, Mayo 30, 2017, 11:57:59 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 30, 2017, 11:57:59 AM Ultima modificación: Mayo 30, 2017, 04:20:05 PM por blackdrake

1.   Introducción

Este Hack se ha encontrado mientras se probaban técnicas de hacking a buscadores (en este caso a google). Para realizar técnicas de hacking a buscadores sólo hay que conocer los tipos y las cadenas a las que son sensibles este tipo de buscadores para sacar de ellos la información deseada. En internet existen multitud de documentos explicativos acerca de este tipo de hacking a buscadores así como de los tipos de cadenas a los que son sensibles cada uno.
El Hack que se explicará en el paso 3 nos otorga control total sobre distintos servidores gestores de base de datos con usuarios de tipo administrador de la base de datos.
La posibilidad de lograr este Hack es debido a una mala configuración del servidor Apache pues sirve páginas que no deberían listarse además de que no existe una política de seguridad en el firewall que contemple la posibilidad de conexión tal cual se logra.
Pese a que la configuración correcta de no listar /phpmyadmin no existe tal configuración a nivel de puertos en el firewall por lo que a través de una terminal y conocimientos básicos de MySQL se puede establecer la conexión remota.
En definitiva, este hack es debido a una mala configuración y una mala política de seguridad  a nivel de firewall para las conexiones entrantes desde el exterior hacia puertos concretos.





2.   Herramientas necesarias

Las únicas herramientas que se necesitan para lograr este Hack o tener acceso a un servidor gestor de Bases de Datos ajeno al nuestro son únicamente 2:
-   Cliente de conexión web (Mozilla Firefox, Internet Explorer, Google Chrome...)
-   XAMPP o LAMP (para MySQL)
Para el cliente web sólo se necesitará tener google como buscador predeterminado o en caso de que no lo sea, ir a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para iniciar desde allí la búsqueda por cadenas y que devuelva resultados; también se puede hacer a través de Bing, Shodan, DuckDuckGo...
De XAMPP (servidor para Windows) o LAMPP (el mismo que XAMPP pero en su versión para Linux) sólo se necesitará MySQL como parte del paquete, por lo que no es necesario descargar e instalar XAMPP o LAMPP, sino que sólo con tener descargado e instalado MySQL dentro del servidor es suficiente.
De MySQL se usará la terminal de comandos para trabajar con ella, pues como medida de seguridad tomada por muchas páginas es no listar (por defecto) el backend para administrar los servidores salvo para equipos dentro de su red interna, lo cual es lógico pero no completamente seguro, pues de este modo lo que no se podrá hacer es entrar mediante un cliente gráfico, pero si se maneja el uso de MySQL desde la terminal como debería hacer un buen administrador, ese tipo de medida queda sin sentido pues no se han tomado las medidas necesarias para que a nivel de firewall se restrinjan las posibles conexiones a la base de datos desde el exterior de la empresa.






3.   Pasos del descubrimiento

El primer paso para este descubrimiento se logra usando google como buscador, para ello, se debe ir a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y en la barra de búsqueda ejecutar la siguiente cadena "filetype:inc mysql_select_db", mediante la cual se buscaran ficheros de tipo "include", para cualquier página web que tenga indexación en google; y que en el fichero de tipo "include" debe aparecer la cadena literal "mysql_select_db", mediante la cual se selecciona una base de datos para establecer conexión con ella, tanto el host en el que está, como el usuario que se usa para establecer la conexión así como la contraseña usada para ello.



Se ha seleccionado uno de los resultados devueltos por Google y se comprueba que muestra tanto los host en los que están las BBDD así como los usuarios y las contraseñas usadas para conectar en dichos servidores.
En este fichero se han obtenido resultados para 4 servidores (probados y en todos se toma el control).



Ya se han encontrado resultados en el Hack a google, sólo queda probar si los datos obtenidos para la conexión son correctos.
Para comprobar si son correctos se debe iniciar la terminal de comandos en el Sistema Operativo en el que se encuentre uno, en este caso es Windows, por lo que con combinar "Windows+R" se abre el lanzador de aplicaciones, en él se escribe "cmd" y se lanza la terminal.
Abierta la terminal, teclear "cd c:\xampp\mysql\bin" para acceder al directorio donde esta el ejecutable de mysql y mediante el cual podremos intentar conectarnos a las bases de datos encontradas.




Desde el directorio en el cual está el ejecutable de MySQL se intenta iniciar sesión en uno de los servidores encontrados con un comando con el siguiente formato "mysql –u <usuario> -h <host> -p <password>".




Si se han introducido correctamente los datos obtenidos desde Google la conexión debe establecerse pues se ha comprobado previamente que la conexión se permite pues existen los fallos de seguridad explicados en el punto de la Introducción (Introducción).
En caso de ser afirmativo el resultado obtenido se conectará y deberá aparecer en la terminal una información similar a la que aparece en el siguiente pantallazo.





El primer comando a probar es "show databases;" mediante el cual se listan todas las bases de datos existentes en el servidor a las cuales tiene acceso el usuario con el que se ha entrado en el log.
El resultado devuelve 3 bases de datos, siendo las 2 primeras propias del servidor, y la última de las 3 en la que se definen los usuarios, permisos y demás configuración interna del servidor MySQL.





Comprobar que permisos se tienen con el usuario recientemente usado para el Loggin, para ello ejecutar el comando "select * from user where user like 'Jason';"
La consulta nos devuelve toda la informacion correspondiente a dicho usuario así como sus permisos efectivos en este servidor de base de datos. En este caso es un usuario de tipo "ROOT".






Probar a usar la primera de todas para comprobar que contenido y que información muestran y listan en ella.
Para usar dicha base de datos ejecutar el siguiente comando "use <baseDatos>".





Usando ya la base de datos seleccionada en el paso anterior, queda listar las tablas que contiene la misma, para ello, usar el comando "show tables;"
.






Como prueba se va a ejecutar una consulta contra la base de datos para ver si es capaz de realizar consultas el usuario con el que se ha conectado, se ejecuta una consulta pues al ser una base de datos ajena y este documento la documentación de un Hack encontrado de forma ética, no se ejecuta ninguna acción que ponga en peligro la integridad de la base de datos ajena.
Para la prueba se va a consultar la tabla "mail_temp" en la cual se entiende que se registran los mail enviados y que mantienen almacenados de forma temporal hasta que se lean o se eliminen del servidor dependiendo de la configuración. Como habrían miles de resultados, la consulta se limita a los 30 primeros ejecutando la siguiente cadena: "select * from mail_temp limit 0,30 \G"
En la imagen se muestra encuadrado en color rojo la consulta ejecutada contra la base de datos, de la cual se obtienen 30 resultados, pero solo se ha sacado en la imagen el 1º de todos ellos.
Encuadrado en color verde aparecen los destinatarios del correo que se ha enviado, para ello usa una lista de distribución en la cual se lo envía a todos los usuarios con un buzón en el dominio "@KL0800.com"; y encuadrado en color azul aparece el cuerpo del mensaje enviado a cada buzón de correo de la lista de distribución.






Otra prueba que se va a ejecutar es consultar la tabla "users" en la cual se entiende que se registran los datos de los usuarios de ésta página web, no se tiene en claro si son los que trabajan en ella o los usuarios que se han registrado en ella. Como habrían miles de resultados, la consulta se limita a los 5 primeros ejecutando la siguiente cadena: "select * from users limit 0,5 \G"

En la imagen se muestra encuadrado en color rojo la consulta ejecutada contra la base de datos, de la cual se obtienen 5 resultados, pero solo se ha sacado en la imagen el 1º de todos ellos.

Encuadrado en color verde aparece información sensible del primer usuario que en este caso es el usuario "admin" con información mínima acerca de él, pero por ejemplo aparece su contraseña codificada, si se sabe cómo codifica MySQL las contraseñas, podría descifrarse y acceder como el usuario admin a este servidor de base de datos.








En la imagen se muestra el 2º de todos los resultados obtenidos de la consulta anterior, encuadrado en color rojo aparecen datos personales sobre el usuario llamado "joycehsu". Esta permisibilidad a la hora de consultar datos es una fuga de información pues se pueden consultar datos personales de clientes y de usuarios que trabajen en la empresa que tiene estos fallos de seguridad.
Encuadrado en color verde aparece información específica como en Titulo, o la ruta hacia una imagen la cual se ha subido, de esta información entiendo que es la foto de perfil de dicho usuario pues se compone de un tamaño pequeño según indica el campo.







La siguiente prueba que se va a ejecutar es consultar la tabla "download" en la cual se entiende que se registran los datos de las descargas de ésta página web, no se tiene en claro el contenido que se descarga de ella. Como habrían miles de resultados, la consulta se limita a los 3 primeros ejecutando la siguiente cadena: "select * from users limit 0,3 \G"
En la imagen se muestra encuadrado en color rojo la consulta ejecutada contra la base de datos.







La siguiente captura muestra los datos correspondientes al segundo resultado obtenido de la consulta anterior sobre la tabla "download".
En ella aparecen datos sensibles así como una estructura HTML en la cual se contemplan distintas conexiones a distintos servidores y ficheros, como el contenido entre etiquetas HTML está en caracteres asiáticos y en la terminal sólo se tienen los caracteres occidentales, muestra como jeroglífico la información; con un paquete de caracteres asiáticos la información saldría tal cual pues es una empresa de Taiwán a la cual nos estamos conectando.






Se han ejecutado consultas sobre 3 tablas con contenido sensible, se va a probar a conectar a otra BBDD, para ello, listar todas las BBDD en el servidor "show databases;" y establecer la conexión con una no usada mediante el comando "use <baseDatos>".





Habiendo cambiado ya a la base de datos seleccionada en el paso anterior, queda listar las tablas que contiene la misma, para ello, usar el comando "show tables;".
En este caso no devuelve resultado, por lo que la Base de Datos está vacía.



En este servidor ya se ha sacado información de forma ética ejecutando consultas contra varias tablas de la base de datos de las cuales se han obtenido resultados de información sensible la cual de primeras debería estar cifrada como medida de seguridad para cualquier visitante no deseado como lo soy yo en este caso.
Para desconectar del servidor teclear el comando de salida que es intuitivo "exit" y se volverá al path anterior a la conexión de la Base de Datos en la terminal de comandos.





Desde el directorio en el cual está el ejecutable de MySQL se intenta iniciar sesión en otro de los servidores encontrados con un comando con el siguiente formato "mysql –u <usuario> -h <host> -p <password>".







Comprobar que permisos se tienen con el usuario recientemente usado para el Loggin, para ello ejecutar el comando "select * from user where user like 'klweb';"
La consulta nos devuelve toda la informacion correspondiente a dicho usuario así como sus permisos efectivos en este servidor de base de datos. En este caso es un usuario de tipo "ROOT".





Usando ya la nueva base de datos seleccionada, el primer comando a probar es "show databases;" mediante el cual se listan todas las bases de datos existentes en el servidor a las cuales tiene acceso el usuario con el que se ha entrado en el log.
El resultado devuelve 20 bases de datos, siendo las 19 propias del servidor, y la última restante (mysql) en la que se definen los usuarios, permisos y demás configuración interna del servidor.





Probar a usar la que más datos sensibles pueda tener de todas a simple vista para comprobar que contenido y que información sensibles se muestran y listan en ella provocando así un fallo en la seguridad muy importante.
Para usar dicha base de datos ejecutar el siguiente comando "use <baseDatos>".





Usando ya la base de datos seleccionada en el paso anterior, queda listar las tablas que contiene la misma, para ello, usar el comando "show tables;".




La prueba que se va a ejecutar es consultar la tabla "webuser" en la cual se entiende que se registran los datos de los usuarios de ésta página web, no se tiene en claro si son los que trabajan en ella o los usuarios que se han registrado en ella. Como habrían miles de resultados, la consulta se limita a los 5 primeros ejecutando la siguiente cadena: "select * from users limit 0,5 \G"

En la imagen se muestra encuadrado en color rojo la consulta ejecutada contra la base de datos, de la cual se obtienen 5 resultados.





Probando la 3ª conexión a otro servidor distinto desde la información obtenida.
Desde el directorio en el cual está el ejecutable de MySQL se intenta iniciar sesión en otro de los servidores encontrados con un comando con el siguiente formato "mysql –u <usuario> -h <host> -p <password>".





Comprobar que permisos se tienen con el usuario recientemente usado para el Loggin, para ello ejecutar el comando "select * from user where user like 'klweb';"
La consulta nos devuelve toda la informacion correspondiente a dicho usuario así como sus permisos efectivos en este servidor de base de datos. En este caso es un usuario de tipo "normal" pues solo tiene permisos de consulta sobre este servidor.




Usando ya la nueva base de datos seleccionada, el primer comando a probar es "show databases;" mediante el cual se listan todas las bases de datos existentes en el servidor a las cuales tiene acceso el usuario con el que se ha entrado en el log.
El resultado devuelve 3 bases de datos, siendo las 1 propia del servidor, y las 2 últimas restantes (mysql y test) en la que se definen los usuarios, permisos y demás configuración interna del servidor y otra que se usa para pruebas, lo que nos dice que este servidor es probablemente, un servidor de pruebas o estudios.



Como conclusión, al igual que esta intrusión se ha realizado de forma ética, sin poner en riesgo la integridad de los servidores ajenos asi como la de sus datos, otro usuario que no tenga los mismos fines o ética distinta, podría, como ejemplo, copiar los datos, hacerse un backup del servidor deseado, importar datos en cualquier servidor en los que tiene permisos de "Root", borrar cualquier base de datos existente en el servidor.... en definitiva.... manipular el activo más importante de una empresa: LOS DATOS!!!


PDF: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

URL: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Caputra: En este documento
Inyección: Está en este documento
Autor: baah
Reportado: aún NO, deseo reportarlo!!!!


Comprueba si tus datos han sido publicados haciendo click en la siguiente imagen:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Genial post, tenia ganas de probarlo en mi casa,

En cuanto tenga un rato me lo leo y te comento.

Que bien fiera :)

Muy muy buen post @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, muy bien explicado y elaborado.

Espero seguir viéndote por aquí con grandes aportes como éste, estoy seguro que a los más nuevos les ayudará muchísimo.

Un saludo.



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Muy muy buen post @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, muy bien explicado y elaborado.

Espero seguir viéndote por aquí con grandes aportes como éste, estoy seguro que a los más nuevos les ayudará muchísimo.

Un saludo.

Muchas gracias @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta,espero seguir encontrando cosillas y haciendo manuales o documentos explicativos de como he llegado a ello.
Me alegro de que se entienda y esté bien explicado, me alenta para seguir buscando nuevas cosas que documentar   :) :) :)

Un saludo.
Comprueba si tus datos han sido publicados haciendo click en la siguiente imagen:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Genial post baah. Veo que tengo otro colega que le gusta el Hacking con buscadores     ;D
Enhorabuena.
Saludos Rootkit.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Genial post baah. Veo que tengo otro colega que le gusta el Hacking con buscadores     ;D
Enhorabuena.
Saludos Rootkit.
Muchas gracias máquina!!!!
La verdad es que me gusta probar todo tipo de hacks, pero el de buscadores me atrae bastante, pues si sabes como usarlo obtienes los mejores resultados en las busquedas para cualquier caso..... y la verdad es que al ser una herramienta a la que tiene acceso toda la gente... es eprfecta.... y se suelen obtener resultados muy curiosos que al menos, a mi, me sirven como incentivo para seguir investigando y probando cosas nuevas.
Saludos!
baah
Comprueba si tus datos han sido publicados haciendo click en la siguiente imagen:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta