Hacking ético en aplicaciones web [SQL Injection]
-
Upload
eduardo-arriols -
Category
Documents
-
view
2.495 -
download
1
description
Transcript of Hacking ético en aplicaciones web [SQL Injection]
HACKING ÉTICO EN APLICACIONES WEB
Eduardo Arriols y Roberto López
Índice
� Breve introducción SQL
� SQL Injection (ByPass Login)
� SQL Injection� A mano � Mediante sqlmap
� Troyanización de un servidor
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
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
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)
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..
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.
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’
SQL Injection
� Secuencia:� Buscar vulnerabilidad� Sacar información (usuario, base de datos..)� Sacar tablas� Sacar columnas de las tablas� Sacar registros de las tablas
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
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…
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
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
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.
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.
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]