La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Disertantes: Aguirre, Juan María Cavallin, Flavio Gerometta, Favio Andrés Meca, Adrian.

Presentaciones similares


Presentación del tema: "Disertantes: Aguirre, Juan María Cavallin, Flavio Gerometta, Favio Andrés Meca, Adrian."— Transcripción de la presentación:

1

2 Disertantes: Aguirre, Juan María Cavallin, Flavio Gerometta, Favio Andrés Meca, Adrian

3 "Un experto es aquel que sabe cada vez más sobre menos cosas, hasta que sabe absolutamente todo sobre nada…es la persona que evita los errores pequeños mientras sigue su avance inexorable hacia la gran falacia" Definición de Webwer - Corolario de Weinberger (Leyes de Murphy)

4 Introducción a Seguridad SQL Injection Clasificaciones y ejemplos Casos prácticos en C# y MySQL Recomendaciones Seguridad de Accesos Sistema de privilegios Recomendaciones Backups en MySQL Métodos y ejemplos Google Hacking Robots y Honeypots

5 Intrusos e intrusiones: Verdaderos Hackers. Tipos de Ataques: Sin Autenticación. Con Autenticación.

6 SQL Injection

7 ¿Qué es la Inyección de SQL? ¿Qué aplicación es vulnerable a este tipo de ataque?

8 Ejemplo Objetivo de una consulta a modo de ejemplo: Consultar todos los datos de algún usuario llamado GREATBD.

9 Utilizando las comillas simples ()se delimitan las variables dentro de una consulta SQL. Código de la consulta anterior en SQL: SELECT * FROM usuarios WHERE nombre_usuario=GREATBD

10 Error de interpretación del Sistema Gestor de la Base de Datos: Al utilizar el valor DAngelo en el campo nombre_usuario: nombre_usuario=DAngelo Forma de la consulta SQL: SELECT * FROM usuarios WHERE nombre_usuario=DAngelo

11 La sintaxis de los delimitadores de comentario del Gestor de Bases de Datos MySQL: Comenta hasta el final de la línea : # comentario Comenta hasta el final de la línea : -- comentario Comentario en línea (in-line), comenta entre delimitadores: /*comentario */ Comentario en múltiples líneas: /* Comentario /*

12 Comandos admitidos Dentro de una inyección SQL puede insertarse o inyectarse código malicioso utilizando diferentes variantes de sentencias SQL CRUD. Create - INSERT – almacenaje de datos. Read - SELECT – recuperación de datos. Update - UPDATE – modificación de datos. Delete - DELETE – eliminación de datos. Todos los comandos disponibles en el lenguaje SQL pueden ser utilizados para las inyecciones: DDL - DML - DCL - TCL

13 Clasificaciones de inyecciones SQL: De comentario. Apiladas. De booleanización. Basadas en Errores.

14 Son utilizadas para comentar parte de una consulta de manera que se ignore el resto de la misma y que no sea interpretada por el SGBD. SELECT * FROM usuarios WHERE nombre_usuario=admin-- AND passw_usuario=cualquier cosa

15 Consulta SQL: SELECT * FROM usuarios WHERE nombre_usuario=admin-- AND passw_usuario=

16 Se pueden concatenar varias consultas a la Base de Datos en una sola inyección SQL al hacer uso del separador de instrucciones ;. SELECT * FROM usuarios; DROP TABLE usuarios

17 Es uno de los tipos de inyecciones más aplicados y se basa en introducir código para que el SGBD retorne TRUE o FALSE al evaluar cierta parte de la consulta. Para ser eficaz el propósito de esta técnica, se hace uso de las cláusulas AND y OR.

18 SELECT * FROM usuarios WHERE nombre_usuario=GREATBD AND passw_usuario=??? OR a=b SELECT * FROM usuarios WHERE nombre_usuario=GREATBD OR a=b AND passw_usuario=

19 SELECT * FROM usuarios WHERE nombre_usuario=GREATBD OR FALSE

20 Es aplicada para generar un error en el sistema y obtener información de utilidad para el atacante. Algunas inyecciones comunes: HAVING 1=1 -- GROUP BY tabla.ColError HAVING 1=1 -- ORDER BY 1-- ORDER BY N--

21 Sentencias no parametrizadas Utilizan concatenación entre la cadena de consulta SQL con variables que asumen un cierto valor. SELECT nombreCampo1,nombreCampo2 FROM tablaX WHERE nombreCampo1=+Valor1;

22 Sentencias parametrizadas Ejemplo en c#: SqlConnection greatConn=new SqlConnection(Connection String); greatConn.Open(); SqlCommand greatCmd=new SqlCommand(SELECT * FROM usuarios WHERE nombre_usuario SqlDataReader greatReader=greatCmd.ExecuteReader();

23 Mitos y Verdades Solo afecta a aplicaciones web. Los grandes motores no son vulnerables. Se debe a una programación mediocre. Puede solucionarse totalmente con sólo utilizar consultas parametrizadas. MITO VERDAD

24 Mitos y Verdades Es muy fácil para un intruso explotar la vulnerabilidad de SQL Injection. Sólo puede realizarse un SQL Injection en el login. Se produce al concatenar texto ingresado por el usuario con una consulta SQL VERDAD MITO VERDAD

25 Tipos de SQL Injection y Causas SQL Injection de Comentario Blind SQL Injection. Es posible realizarlo porque no se controla la respuesta del motor de BD y sólo se evalua que exista respuesta. DCL y DDL SQL Injection (GRANT, DROP, CREATE, etc.) Puede ser un Blind SQL Injection o no (DCL). Es posible al ejecutar la aplicación con permisos de administrador. DML SQL Injection (SELECT, UPDATE, DELETE, INSERT, etc.) No es un Blind SQL Injection, se requiere conocimientos del modelo de datos.

26 Recomendaciones Finales No concatenar texto ingresado por el usuario con consultas SQL. Usar parámetros y drivers de conexión oficiales. Asignar mínimos permisos necesarios para ejecutar la aplicación Cuidar los Connection Strings No mostrar directamente errores del motor de Base de Datos

27 11/06/2014 Sistema de Privilegios de Usuarios

28 1. Introducción 2. ¿Cómo funciona el Sistema de Privilegios? 3. Operaciones no Permitidas 4. Métodos para otorgar Privilegios 5. Niveles de Privilegios 6. ¿Cuándo entran en vigencia los privilegios? 7. Recomendaciones 8. Conclusión 11/06/2014

29 Funcionamiento del Sistema de Privilegios y su importancia para la seguridad de acuerdo al rol de cada usuario dentro de la empresa. 11/06/2014

30 Control de Acceso: Etapa 1: Comprobación de la Conexión Etapa 2: Comprobación de Solicitudes 11/06/2014

31 Identidad del Usuario: Equipo Nombre User: Host User Password 11/06/2014

32 Procedimiento de Selección de un Usuario 11/06/2014 HostUser %Root %Lucas localhostRoot localhost HostUser localhostRoot localhost %lucas %root

33 Tablas grant: user db Host tables_priv columns_priv Proceso de Verificación de Peticiones (proceso descendente) 11/06/2014

34 Denegar explícitamente el acceso Otorgar privilegios de superusuario a una única BD. 11/06/2014

35 Manipulando las tablas de permisos mysql Comando GRANT 11/06/2014

36 Global (user) Ej. GRANT/ REVOKE ALL ON *.* Base de Datos (db, host) Ej. GRANT / REVOKE ALL ON db_name.* Tabla (tables_priv) Ej. GRANT / REVOKE ALL ON db_name.table_name Columna (columns_priv) Rutina (procs_priv) 11/06/2014

37 Nuevas Conexiones: GRANT Manipulación de tablas grant -> FLUSH PRIVILEGES Conexión Existente: Siguiente petición (privilegios tabla y columna) Siguiente Use (privilegio de BD) Siguiente Conexión (privilegios globales) 11/06/2014

38 Dónde Guardar la contraseña Cada usuario de la aplicación sea un usuario de la BD. (comprobación de login) Privilegio de acceso a la tabla user. Privilegio FILE. Privilegio GRANT. Privilegio PROCESS. Privilegio SUPER Política de Privilegios 11/06/2014

39 Acceso a la BD mysql. Proteger el directorio de instalación de MySQL de otros usuarios. Contraseña a root y cambiar su nombre. Ocultar a MySQL de Internet (Ej. separación en capas). Usuarios creados en la base test. Cambiar puerto por defecto (3306). 11/06/2014

40 Comprobación de la Seguridad: MySQL Network Scanner MySQL Brute Force Password Hash Cracker PasswordPro 11/06/2014

41 Otorgar privilegios de acuerdo a las necesidades. Relación costo-beneficio según el nivel de seguridad pretendido. 11/06/2014

42 Backups en MySQL

43 Duplicar información almacenada en base de datos (arquitectura o registros), para luego recuperarlos en caso de imprevistos.

44 Comandos BACKUP y RESTORE. Volcados de seguridad copiando archivos. MYSQLDUMP. Volcados de seguridad utilizando SELECT INTO.

45 Una de las formas mas sencillas para realizar volcado de tablas. Solo en tablas MyISAM. En algunos casos se debe utilizar el comando LOCK TABLES para que no ocurran inconsistencias. Realiza copia de archivos.frm (definición),.myd (datos) y.myi (índices). Sintaxis: BACKUP TABLE nombre-de-tabla TO '/ backup-path';

46 Ejemplo: mysql> BACKUP TABLE ventas TO 'c:\\ backup ; I Table I OP I Msg -type I Msg -text I I base.ventas I backup I status I OK I row in set (0.55 sec)

47 Sintaxis: Ejemplo: RESTORE TABLE nombre-de-tabla FROM '/ backup-path'; mysql> RESTORE TABLE ventas FROM 'c:\\backup ; I Table I OP I Msg-type I Msg-text I I base.ventas I restore I status I OK I row in set (0.66 sec)

48 Errores: Mensaje de error 1 : Table exists, will not overwrite on restore Mensaje de error 2 :Failed copying.frm file

49 Tablas MyISAM. Existen dos situaciones: El servidor no se encuentra en ejecución. El servidor se encuentra en ejecución.

50 Tablas MyISAM e InnoDB. Crea ficheros con sentencias SQL. Se ejecuta desde la línea de comandos del Sistema Operativo. Sintaxis: C:\MySQL\bin>mysqldump nombre_base nombre_tabla > c:\ruta\archivobackup.sql

51 Sintaxis para la recuperación: Ejemplo: Backup de la tabla socio, en la base de datos base1 Restauramos esta tabla: C:\MySQL\bin>mysqldump nombre_base < c:\ruta\archivobackup.sql C:\MySQL\bin>mysqldump base1 socio > c:\backup\socio.sql C:\MySQL\bin> mysql base1 < c:\backup\socio.sql

52 Similar a MySQLDump. Se puede utilizar cualquier consulta para crear estos tipos de archivos. Guarda solo registro de las tablas. Sintaxis: SELECT INTO OUTFILE ruta-y-nombre-de-archivo [FIELDS [TERMINATED BY ' a ' ] [ [OPTIONALLY] ENCLOSED BY ' b ' ] ] [LINES TERMINATED BY ' c ];

53 Ejemplo: Resultado: mysql> SELECT * FROM socio INTO OUTFILE c:\\backup\\socio2.dat FIELDS TERMINATED BY ' | OPTIONALLY ENCLOSED BY LINES TERMINATED BY \n; Query OK, 8 rows affected (0.00 sec) 1 | Juan | Costas 2 | Jorge | Salcedo 3 | Miguel | Rodríguez

54 Ingresa datos de un archivo externo a una tabla. La forma más rápida de agregar datos. Sintaxis: LOAD DATA [LOW-PRIORITY | CONCURRENT] [LOCAL] INFILE nombre-de–archivo ' [REPLACE | IGNORE] INTO TABLE nombre-tabla [FIELDS [TERMINATED BY ' \t ' ] [ [OPTIONALLY] ENCLOSED BY ' ' ] ] [LINES TERMINATED BY ' \n' ]

55 Ejemplo: mysql> LOAD DATA INFILE c:\\backup\\socio2.dat INTO TABLE socio; FIELDS TERMINATED BY ' | OPTIONALLY ENCLOSED BY LINES TERMINATED BY \n; Query OK, 8 rows affected (0.00 sec) Records: 8 Deleted: 0 Skipped: 0 Warnings: 0

56 Bases de Datos que incluyan tablas InnoDB (MySQLDump). Bases de Datos con tablas exclusivamente MyISAM (Comandos BACKUP y RESTORE). En el caso de poseer muchos registros y estructuras de tablas poco complejas (Comandos SELEC INTO y LOAD DATA).

57 Google Hacking

58 ¿Cómo funciona Google? ¿Qué es el Google Hacking? Búsquedas. ¿Cómo se relaciona con SQL Injection? Introduciendo mecanismos de defensa: Robots. Honeypots.

59 Comenzando con las búsquedas en el Google…

60 Conociendo las búsquedas más realizadas en la Web Ficheros que contienen claves Páginas con formularios de acceso Datos de alguna persona Servidores PhpMyAdmin con escasa seguridad Posibles páginas ASP sensibles a las técnicas de inyección SQL.

61 Búsqueda a ingresar : ext:pwd inurl:(service | authors | administrators | users) "# FrontPage- Los resultados encontrados: Secciones de páginas indefensas que brindan información que debiera ser protegida. Ficheros que contienen claves y datos de usuarios(cont…)

62

63

64 Encontrando Páginas Web con formularios de acceso You have requested access to a restricted area of our website. Please authenticate yourself to continue

65 Otras búsquedas Datos de alguna persona. "telefono* * *" "dirección*" " " intitle:"curriculum vitae" Servidores PhpMyAdmin. phpMyAdmin running on inurl:main.php Páginas ASP sensibles a las técnicas de inyección SQL. allinurl: "page_alb.asp?Id="

66 Constituyen un paso más en la construcción de la seguridad en la Web. Robots ¿Qué es un Robot en la Web? Exclusión básica de Robots. Honeypots ¿Qué son y cómo funcionan? Tipos de Honeypots.

67 Programas con algoritmos que permiten leer una página web, recuperar y guardar cierto o todo su contenido en una base de datos y enlazar páginas Web.

68 Creando el ROBOTS.TXT: User Agent: * Disallow: / User Agent: Big Brother Disallow: /usuarios User Agent: Big Brother Disallow:/ usuarios/

69 Software o conjunto de computadoras que funciona a modo de trampa para hackers. Tipos de honeypot: De Producción. De Investigación.

70 Investigar en profundidad el funcionamiento del motor de Google. Averiguar cuáles son las búsquedas más utilizadas en la Web para evitar los ataques de intrusos dañinos. Comprender la importancia de gestionar un fichero Robots.txt correctamente configurado.

71 Utilizar Google Hacking sobre los sistemas de uno mismo. En el caso de una empresa cuyos datos se necesitan proteger a toda costa emplear una política de exclusión de robots y un honeypot especializado.

72


Descargar ppt "Disertantes: Aguirre, Juan María Cavallin, Flavio Gerometta, Favio Andrés Meca, Adrian."

Presentaciones similares


Anuncios Google