2008-09-19 12 views
5

Abordar un extraño escenario aquí.Inyectar una cuenta de usuario en mySQL

Utilizamos una aplicación de gestión de estación de trabajo propietaria que utiliza mySQL para almacenar sus datos. Dentro de la aplicación, proporcionan la cantidad de informes, como qué usuario inició sesión en cada equipo y en qué momento, todos los productos de software instalados en las máquinas supervisadas, etc. Estamos buscando hacer un conjunto diferente de informes, sin embargo, no son compatibles con los informes personalizados.

Dado que sus datos se almacenan en mySQL, me doy cuenta de que puedo hacer los informes manualmente. Sin embargo, no tengo credenciales válidas para conectarme al servidor mySQL. ¿Hay alguna forma de que cree una cuenta de usuario en el servidor mySQL? No quiero restablecer la contraseña de root o cualquier otra cuenta que pueda estar allí, ya que podría romper la aplicación.


Tengo acceso completo al servidor de Windows 2003. Puedo detener y reiniciar servicios, incluido el servidor mySQL. Para el servidor mySQL real, solo tengo acceso básico a través de la GUI proporcionada por el software. No me puedo conectar a él directamente a través de CLI o a través de otra herramienta (debido a la falta de credenciales).


Me disculpo si salió como si estuviera tratando de obtener acceso no autorizado al servidor MySQL. Me he puesto en contacto con la empresa de software, y hasta el día de hoy han pasado dos semanas sin respuesta. Necesito llegar a los datos. Tengo acceso completo al cuadro físico, tengo privilegios de administrador en él.

Respuesta

9

Querrá utilizar el proceso de recuperación de contraseña de MySQL. Siga these instructions, excepto que reemplace la consulta de restablecimiento de contraseña con una consulta al add a new user. La nueva consulta del usuario sería algo así como:

GRANT ALL ON *.* TO 'myuser'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 

que va a crear un nuevo usuario "miUsuario" con la contraseña "micontraseña", que pueden conectarse a MySQL a través de la CLI del sistema local. A continuación, puede utilizar la GUI de administrador de MySQL (download here) y actualizar los permisos de usuario para que pueda iniciar sesión desde otros sistemas en la red. O use el GRANT statement de la CLI, si ese es más su estilo.

+0

Eso es exactamente lo que estaba buscando. Gracias. – Nasir

+0

El problema con esto es que restablece la contraseña de root, lo que significa que si la aplicación depende de una contraseña de root conocida, ya no es así ... y el usuario específicamente no quiso restablecer la contraseña de root. – delfuego

+1

Oh, ya veo, sí, eso funcionará fantásticamente. Bonito. Perdón por ser un tonto. – delfuego

0

¿Tiene acceso al servidor MySQL en cuestión?

Como en, ¿qué acceso tienes más allá de lo que un usuario normal haría? Debes intentar atravesar esas rutas antes de "hackear" tu camino hacia allí, ya que eso puede o no ser factible con ese software.

0

Supongo que realmente no debería responder a esto, pero es demasiado divertido.

Mire This página sobre inyecciones de SQL. Eso debería cubrir tus necesidades. This página muestra cómo agregar cuentas de usuario a MySQL

me gustaría probar escribiendo lo siguiente en los campos de entrada de usuario al azar:

p'; INSERT INTO user VALUES 

('localhost', 'myNewAdmin', PASSWORD ('some_pass'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', ' Y ',' Y ');

y luego

p'; FLUSH PRIVILEGES; 

p '; tiene la intención de cerrar la pregunta regular. por ejemplo - pregunta normal es:

"Select Adress from cusomers where custName = ' + $INPUT + '; 

convierte

Select Adress from cusomers where custName = 'p'; INSERT INTO user 
VALUES('localhost','myNewAdmin',PASSWORD('some_pass'), 
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); 
+0

No me molestan los votos, pero preferiría saber qué fue ofensivo. Parece que estoy respondiendo la pregunta.Si me equivoco en mi respuesta, merezco un montón de votos negativos, pero dejo un comentario para que el interlocutor sepa que mi respuesta no es de fiar. – Tnilsson

+0

He votado en contra porque si no puedes salir de tu casa, la solución es un cerrajero. - No es una sierra para metales. –

+0

upvoted, porque es una solución y es una lectura interesante :) – Sophia

0

Una cosa que viene a la mente es cómo detectar la comunicación de base de datos y espero que no sea encriptada. Si está encriptado, intente cambiar la configuración para no usar SSL y reiniciar mysql.Un buen sniffer que utilizo es Wireshark

De mysql 5.0 documentation:

MySQL soporta segura (cifrada) conexiones entre los clientes de MySQL y el servidor utilizando el protocolo Secure Sockets Layer (SSL) de protocolo. Esta sección explica cómo usar las conexiones SSL. También describe una forma de configurar SSH en Windows. Para obtener información sobre cómo requerir que los usuarios usen conexiones SSL, consulte la explicación de la cláusula REQUIRE de la declaración GRANT en Sección 12.5.1.3, "Sintaxis GRANT".

La configuración estándar de MySQL es destinado a ser tan rápido como sea posible, por lo conexiones cifradas no se utilizan por predeterminado. Si lo hiciera, el protocolo cliente/servidor sería mucho más lento. El cifrado de datos es una operación con uso intensivo de la CPU que requiere que la computadora realice un trabajo adicional y puede retrasar otras tareas de MySQL. Para las aplicaciones que requieren la seguridad provista por las conexiones cifradas , se garantiza el cálculo adicional de .

MySQL permite habilitar el cifrado por conexión. Puede elegir una conexión no encriptada normal o una conexión segura SSL cifrada según los requisitos de las aplicaciones individuales .

Las conexiones seguras se basan en la API OpenSSL y están disponibles a través de la API C de MySQL. La replicación utiliza la API C , por lo que las conexiones seguras pueden ser utilizadas entre los servidores maestro y esclavo.

Probablemente ya haya hecho eso, pero aún así, intente buscar a través de los archivos de configuración de las aplicaciones. Si no hay nada, intente buscar entre los ejecutables/código fuente, tal vez esté en texto plano si tiene suerte.

0

Probabilidades Hay factores desencadenantes en el lado de la base de datos manteniendo un registro por lo que cuando te pirateas en la base de datos sabrán cuándo y cómo lo hiciste. No es Buena idea.

+0

Diría que es una locura pensar que hay algún tipo de desencadenante en el DB que se activa cuando un usuario desconocido inicia sesión. ¿Cómo configurarían la arquitectura? para apoyar esto? ¿Hay un cliente SMTP incorporado que envía por correo la alerta? ¿Usando qué servidor de correo? La probabilidad de esto es nula. – delfuego

Cuestiones relacionadas