Saltar al contenido
NesMeyTuroriales

Como Realizar un Ataque de SQL Injection

sql injection

Existen muchos sitios web basados en Gestores de contenidos (CMS) que por distintas razones son vulnerables ante ataques de “SQL Injection”, dentro de esas razones y la más común es la mala práctica de programación.

¿Qué es un ataque de inyeccion sql?

Un ataque por SQL Injection o Inyección SQL consiste en la inserción o “inyección” de una consulta SQL por medio de los datos de entrada desde el cliente hacia la aplicación. Un ataque por inyección SQL exitoso puede leer información sensible desde la base de datos, modificar la información (Insert/ Update/ Delete), ejecutar operaciones de administración sobre la base de datos, recuperar el contenido de un determinado archivo presente sobre el sistema de archivos del DBMS y en algunos casos emitir comandos al sistema operativo.

Entonces vamos a proceder a realizar el ataque a un sitio web (les recuerdo que esto se debe realizar sobre sus propios servicios web ya que si lo haces contra sitios que no son tuyos estas violando las leyes), sabiendo eso te recuerdo otra cosa «Todo gran poder conlleva una gran responsabilidad».

Existe muchas formas de encontrar sitios web que puedan ser vulnerables antes estos tipos de ataques, sin embargo no tiene chiste realizar un ataque a cualquier pagina, lo interesante es atacar nuestros sitios ( 😉 ) . Pero igual te mostrare. Para encontrar sitios que pueden ser vulnerables utilizamos al grandioso y todo poderoso GOOGLE para utilizar algo conocido como «google dork» (son convinaciones de busquedas especiales). Existen muchas pero te mostrare la mas sencilla.

Bien, abrimos www.google.com y escribimos: «php?id=» (sin las comillas), le estamos diciendo a google que me indixe muchas paginas que en algún link dentro de su sitio tenga esas letras. Cuando abrimos esos sitios vemos unas urls con terminación en números, y para saber si son candidatas a ser atacadas podemos borrar ese número y colocar una comilla simple ( ‘ ).

En la imagen siguiente podrán ver dos sitios con terminación en número y se quita el número, se coloca la comilla simple ( ‘ ) y al presionar ENTER logramos observar que nos manda un error de sintaxis sql y eso nos indica que puede ser vulnerable. (Entendieron esa parte?, sino, me preguntan en los comentarios)

sql injection

Como logran observar, al realizar lo de la comilla simple, el sitio nos muestra un error, entonces tiniendo esta información podemos proceder al siguiente paso, el cual consiste en realizar el ataque para tratar de entrar al sitio web obteniendo información desde su base de datos.

Vamos a utilizar la herramienta sqlmap que trae Kali Linux (también pueden instalarla en windows, pero los hacker pro como ustedes no usan windows), para intentar realizar la inyección en la dirección exacta en que se logró encontrar la posible vulnerabilidad.

Abrimos una consola en Kali Linux y escribimos el siguiente comando. Oberven que ponemos la misma linea donde se encontró la falla y solo le sumamos –dbs (guion guion dbs)

sqlmap -u http://www.dominio.com/app/cms/www/index.php?id_menu=22 –dbs

sql injection

Este proceso lo que intenta hacer es realizar comandos de sql a la base de datos, en este caso MySQL y solicitarle los nombres de las base de datos que tiene. Si todo salio bien entonces deberá mostrar los nombres de las bases de datos.

sql injection

Pueden observar que recuperó tres base de datos: nombre_web, nombre_web2 y information_schema que es una por default de MySQL. Entonces como ya tenemos dos nombres de base de datos, vamos a intentar obtener los nombres de las tablas dentro de esas bases de datos.

sqlmap -u http://www.dominio.com/app/cms/www/index.php?id_menu=22 -D nombre_web –tables

Noten que ahora escribimos -D (indicando que lo que sigue es el nombre de la BD) luego el nombre de la base de datos como tal y por ultimo escribimos  –tables (guion guion tables)

 

sql injection

 

Luego de que sqlmap hace su trabajo, nos muestra las tablase contenidas dentro de la Base de datos. Como nuestro objetivo es encontrar los usuarios dentro del sitio web, buscamos entre las tablas alguna que me indique que puede contener los usuarios, en nuestro caso suponemos que es la que tiene el nombre cms_site_users (sera que contiene los usuarios la tabla que dice USERS ).

Como de seguro ya notaron este proceso es en forma de árbol, vamos avanzando paso a paso, Base de datos, luego tablas y ahora que creen que sigue?. Exacto: columnas.

sqlmap -u http://www.dominio.com/app/cms/www/index.php?id_menu=22 -D basedatos_web -T cms_site_users –columns

Observen que ahora agregamos -T y el nombre de la tabla y también –columns

sql injection

Esta mas que claro que las columnas que nos interesan son «username» y «password» y podemos seleccionar cualquier otro campo, voy a agregar también nombre. Y realizamos el siguiente comando  ya que tenemos esa información.

sqlmap -u http://www.dominio.com/app/cms/www/index.php?id_menu=22 -D nombreBD_web -T cms_site_users -C username,nombre,password –dump

Lo que agregamos esta vez fue -C para indicar columnas y tambien –dump, este ultimo lo que hace es sacarme la información de la columna.

sql injection

Finalmente logramos recuperar información del nombre, pero en los campos username y password no existía información. Pero el proceso se puede repetir para todos los sitios que puedan ser vulnerados con ataques de sql injection. Observen en la imagen la parte ultima (es de otro sitio web) donde si recuperamos usuario, nombre y contraseña, pero saben que la contraseña no deben de verla por seguridad.

Bien ya aprendieron a atacar sitios web facilmente, pero no olviden que esto NO lo deben hacer. Tengan buenas practicas de programación para que sus sitios no sean blancos de atacantes.

Cualquier mal uso que le den a esta guía no me hago responsable. Si tienen alguna duda dejenla en los comentarios y contestaré a la brevedad posible.

«Hasta la Próxima»