martes, 4 de noviembre de 2014

Práctica 2

Práctica 2
Inyección SQL

¿Qué es SQL inyección? Inyección de Código SQL es una vulnerabilidad presente por lo general en aplicaciones web que permite a un atacante enviar particiones modificadas para interactuar con la base de datos que usa la aplicación.

Listado de comandos básicos en SQL:
·         Grant  Utilizado para otorgar privilegios
·         Revoke            Utilizado para eliminar privilegios
·         Create Utilizado para crear nuevos elementos (tablas,idices…)
·         Drop   Utilizado para eliminar elementos
·         Alter    Utilizado para alterar campos de las tablas
·         Select  Utilizado para consultar registros de una tabla y comprobar que satisfagan una condición determinada
·         Insert   Utilizado para cargar lotes de datos en la base de datos
·         Update Utilizado para cambiar valores de registros y campos
·         Delete  Elimina registros de una tabla de la base de datos

Lista de cláusulas básicas en SQL:
·         From   Selecciona la tabla sobre la cual se va a operar (o sobre sus registros)
·         Where  Especifica las condiciones que se deben cumplir los registros que se seleccionan
·         Group by        Utilizado para separar registros en grupos
·         Having            Especifica las condiciones que cumple cada grupo
·         Order by         Ordena registros seleccionados

Ejecutar insertarHorariosTrabajadores.exe y se verá el programa de inicio.
Base de datos para probar SQL inyección:
Veamos primero si la web en cuestión tiene este tipo de sentencias en su url: “celebraciones.asp?ID=”, “libros.php?view=”, o cualquier otro tipo parecido. En muchas ocasiones, introduciendo ahí nuestro código inyectado empieza el ataque, pero esto lo explicaremos más adelante.
Nota1: no siempre que tenga este tipo de sentencias es vulnerable
Nota2: si ves ASP, ASPX, etc., piensa en que en un elevado tanto por ciento de los casos, la base de datos será SQL.
Nota3: Para comenzar el ataque, también podemos buscar formularios ligados a una consulta a una base de datos SQL.
Si, con SQL inyección podemos “saltarnos” algunos logueos pero el SQL Inyección es mucho más, como se explicó al comienzo: podemos borrar una base de datos, cambiarle el nombre a las tablas o hacer mil maldades. Imaginad por ejemplo una página de venta de teléfonos móviles, podemos hacer que la persona que se nos ocurra de la BD compre 1000 teléfonos, por ejemplo.
1.- Ataque blind SQL Inyección.
El BLIND SQL Inyección se considera un ataque a ciegas, es decir, sin conocer nada sobre el server (Versión de SQL, nombre de las tablas, numero de tablas, etc, que deberemos saber para concluir el ataque y para saber defendernos.)

2.- Sacando el número de columnas de la BD
Bien para sacar el número de columnas de la base de datos (BD, DB), vamos a inyectar un código que cause un conflicto al llegar a un numero de columna, el cual no se encuentra en la base de datos.
En este caso, tenemos ya que la sentencia SQL que realiza la consulta el del tipo:
“SELECT * FROM TRABAJADOR WHERE [clave personal]='” & pass & “‘ AND TRABAJADOR='” & usuario & “‘”


Conclusiones
Lo más sensato que debemos tener en cuenta al prevenir estos ataques es filtrar el carácter ‘ (comilla simple), si hablamos a nivel de web, hacerlo siempre en cliente y servidor, si hablamos en un entorno de red local, filtrar la entrada del campo en el programa.

A nivel de web, si sólo se filtra en el cliente, es fácil saltarse la validación y provocar un fallo del estilo de los que hemos visto, para extraer información, de ahí la necesidad de hacerlo en el cliente.

No hay comentarios:

Publicar un comentario