Hacking ético en aplicaciones web [SQL Injection]

4,612 views

Published on

Charla Realizada en la Universidad Autonoma sobre como atacar aplicaciones web con el ataque SQL Injection y las diversas variaciones que tiene.

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,612
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
108
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Hacking ético en aplicaciones web [SQL Injection]

  1. 1. HACKING ÉTICO EN APLICACIONES WEB Eduardo Arriols y Roberto López
  2. 2. Índice Breve introducción SQL SQL Injection (ByPass Login) SQL Injection A mano Mediante sqlmap Troyanización de un servidor
  3. 3. Introducción a SQL Lenguaje Estructurado para el manejo de las bases de datos. Consulta: SELECT nombre, edad FROM personas WHERE edad > 21 Operadores Lógicos: and, or … Nombre Edad Roberto 23 Eduardo 20
  4. 4. Introducción a SQL Clausulas: Union SELECT nombre, edad FROM personas UNION SELECT usuario, password FROM usuarios Limit Limitar lista de resultados SELECT … LIMIT 10 Elegir posición de una tabla SELECT … LIMIT 2,1
  5. 5. Introducción a SQL En los diferentes gestores (MySql, Postgres, Oracle, MsSql) existen una serie de bases de datos que contienen información acerca de las tablas, columnas … El gestor MySQL contiene la base de datos: information_schema: information_schema.tables (Información sobre tablas) information_schema.columns (Información sobre columnas)
  6. 6. SQL Injection SQL Injection (SQLi) Vulnerabilidad Web producida por un débil filtrado de las entradas. Se basa en modificar la consulta que realiza una aplicación para que haga cosas para las que no estaba pensada (E.j: Sacar contraseñas y usuarios) ByPass Saltarse algo, ya sea un login, un filtrado..
  7. 7. SQL Injection (ByPass Login) Esquivar autenticación (saltar validación) Consultas del tipo: SELECT usuario FROM usuarios WHERE usuario=‘Admin’ AND password=‘Canalseguro666’ Donde ‘Admin’ y ‘Canalseguro666’ son variables introducidas por el usuario de la aplicación. Si la consulta es vacía no permitirá el acceso, pero en caso contrario sí, dando igual que haya uno o mas registros.
  8. 8. SQL Injection (ByPass Login) Identificando vulnerabilidad: Consulta: SELECT usuario FROM usuarios WHERE usuario=‘ aaa’ ’ AND password=‘ aaa’ ’ Saltándose la autentificación: Consulta: SELECT usuario FROM usuarios WHERE usuario=‘’ OR ‘1’=‘1’ AND password=‘’ OR ‘1’=‘1’
  9. 9. SQL Injection Secuencia: Buscar vulnerabilidad Sacar información (usuario, base de datos..) Sacar tablas Sacar columnas de las tablas Sacar registros de las tablas
  10. 10. SQL Injection Buscar Vulnerabilidad Introducir en los parámetros el carácter ‘, para romper la consulta. (Se mostrara un error en la página) E.j: www.prueba.es/index.php?id=1’ Comprobar que realmente estamos modificando la consulta. (No se mostrara ningún error en la página) E.j: www.prueba.es/index.php?id=1+and+1=1 E.j: www.prueba.es/index.php?id=-1+or+1=1
  11. 11. SQL Injection Sacar información (usuario, base de datos …) Dejamos la consulta de la aplicación vacía Buscamos el numero de columnas que tiene la consulta para poder realizar nuestra propia consulta mediante “UNION” Sacamos información mediante : User(), database(), @@version, @@datadir…
  12. 12. SQL Injection Sacar tablas de la BD Utilizamos la tabla: information_schema.tables De ahí sacamos que tablas hay en la base de datos Utilización de “limit N,1” para sacar las distintas tablas Sacar columnas de las tablas Idéntico al anterior pero utilizando information_schema.columns
  13. 13. SQL Injection Sacar registros de las tablas Con la información obtenida construimos la consulta que queramos como: … UNION SELECT usuario, password FROM usuarios LIMIT 0,1 Pudiendo así ir sacando todos los registros de la tabla
  14. 14. SQL Injection (SQLmap) Esta herramienta nos permite… Automatizar todo el proceso de inyección sql. Con ella podemos sacar todas las bases de datos, tablas y columnas en cuestión de minutos. Además trae gran cantidad de opciones, como obtener una shell de la base de datos, desde la cual podríamos alterar, crear o borrar lo que fuera.
  15. 15. Troyanización de un servidor Se utilizara SQLmap y Metasploit para poder introducir el “troyano” Meterpreter. El cual nos proporcionara control total del servidor, pudiendo desde encender la cam hasta obtener todo el trafico de red que pasa por el ordenador infectado.
  16. 16. FIN Esperamos que os haya gustado la charla sobre SQL Injection! Y ante cualquier cosa, duda o… Ganas de aprender no dudéis en poneros en contacto con nosotros! Os invitamos a pasaros por Blog: Hykeos-greyhat.blogspot.com Youtube: /user/hackingeticoweb Twitter: @hackingeticoweb Correo: hacking.etico.web@gmail.com

×