16
HACKING ÉTICO EN APLICACIONES WEB Eduardo Arriols y Roberto López

Hacking ético en aplicaciones web [SQL Injection]

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Hacking ético en aplicaciones web [SQL Injection]

HACKING ÉTICO EN APLICACIONES WEB

Eduardo Arriols y Roberto López

Page 2: Hacking ético en aplicaciones web [SQL Injection]

Índice

� Breve introducción SQL

� SQL Injection (ByPass Login)

� SQL Injection� A mano � Mediante sqlmap

� Troyanización de un servidor

Page 3: Hacking ético en aplicaciones web [SQL Injection]

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

Page 4: Hacking ético en aplicaciones web [SQL Injection]

Introducción a SQL

� Clausulas:� Union

� SELECT nombre, edad FROM personasUNIONSELECT usuario, password FROM usuarios

� Limit� Limitar lista de resultados

� SELECT … LIMIT 10

� Elegir posición de una tabla� SELECT … LIMIT 2,1

Page 5: Hacking ético en aplicaciones web [SQL Injection]

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)

Page 6: Hacking ético en aplicaciones web [SQL Injection]

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..

Page 7: Hacking ético en aplicaciones web [SQL Injection]

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.

Page 8: Hacking ético en aplicaciones web [SQL Injection]

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’

Page 9: Hacking ético en aplicaciones web [SQL Injection]

SQL Injection

� Secuencia:� Buscar vulnerabilidad� Sacar información (usuario, base de datos..)� Sacar tablas� Sacar columnas de las tablas� Sacar registros de las tablas

Page 10: Hacking ético en aplicaciones web [SQL Injection]

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

Page 11: Hacking ético en aplicaciones web [SQL Injection]

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…

Page 12: Hacking ético en aplicaciones web [SQL Injection]

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

Page 13: Hacking ético en aplicaciones web [SQL Injection]

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

Page 14: Hacking ético en aplicaciones web [SQL Injection]

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.

Page 15: Hacking ético en aplicaciones web [SQL Injection]

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.

Page 16: Hacking ético en aplicaciones web [SQL Injection]

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.comYoutube: /user/hackingeticowebTwitter: @hackingeticowebCorreo: [email protected]