INYECCION
SQL
AUTOR: JEFFERSON MORALES ZAVALETA
DEFINICION
Es un método de infiltración de código intruso que se vale de una vulnerabilidad
informática presente en una aplicación en el nivel de validación de las entradas
para realizar operaciones sobre una base de datos.
EJEMPLO
Supongamos que tenemos una aplicación Web en la que el acceso a ciertas secciones
está restringido. Para restringir ese acceso creamos una tabla de usuarios y
contraseñas y sólo los usuarios que se validen contra esa tabla podrán acceder a esos
contenidos.
BASE DE DATOS: Web-go INSERTAR DATOS EN TABLA
USUARIOS
TABLA: Usuarios
Insert into usuarios(Usuario,contraseña) values
Create table usuarios (‘Admin’,’1234’)
(
Usuario varchar(50) not null primary key, Insert into usuarios(Usuario,contraseña) values
Contraseña varchar(50) (‘Jefferson’,’4455’)
)
EJEMPLO
En la Interfaz grafica de la Aplicación Web.
Todos los usuarios, solo podrán ingresar
Usuario: Admin
con contraseña correspondiente.
Contraseña: ****
SELECT Count(*) FROM usuarios WHERE Usuario=‘Admin’ AND
Contraseña=‘1234’
EJEMPLO
En la Interfaz grafica de la Aplicación Web.
Pero que ocurría si ponemos como
Usuario: OR’ 1’=‘1
Usuario y Contraseña
Contraseña: OR’ 1’=‘1 ‘OR’ 1’=‘1
SELECT Count(*) FROM usuarios WHERE Usuario=‘OR’ 1’=‘1 AND
Contraseña=‘OR’ 1’=‘1
Y obviamente si la programación del Sistema con la BD no es la adecuada, vulnerará
los registros de la BD e ingresará al Sistema.
COMO EVITAR LAS INYECCIONES SQL ?
1) Podemos FILTRAR LAS ENTRADAS de los usuarios REEMPLAZANDO la aparición de ‘ por ‘’ (DOS
COMILLAS SIMPLES) e incluso evitando que los usuarios puedan pasar caracteres como / “ ‘ o cualquier otro
que se nos ocurra que puede causar problemas.
2) Es LIMITAR AL MÁXIMO LOS PERMISOS DEL USUARIO que ejecuta estas sentencias para evitar
posibles problemas. Por ejemplo utilizando un usuario distinto para las sentencias SELECT, DELETE, UPDATE
y asegurándonos que cada ejecución de una sentencia EJECUTE UNA SENTENCIA DEL TIPO PERMITIDO.
3) Una solución definitiva sería trabajar con PROCEDIMIENTOS ALMACENADOS.
El modo en el que se pasan los PARÁMETROS a los procedimientos almacenados evita que la inyección SQL
pueda ser usada.
4) También deberíamos VALIDAR LOS DATOS QUE INTRODUCE EL USUARIO teniendo en cuenta por
ejemplo la LONGITUD DE LOS CAMPOS Y EL TIPO DE DATOS ACEPTADOS.
PROGRAMAS EN LINUX
DVWA(Damn Vulnerable Web App)-Ruso
Es una aplicación web PHP / MySQL que es muy vulnerable.
OBJETIVOS PRINCIPALES
Ser una ayuda para que los profesionales de la seguridad pongan a prueba sus
habilidades y herramientas en un entorno legal,
Ayuden a los desarrolladores web a comprender mejor los procesos de protección de
las aplicaciones web.
Ayuden a los profesores / alumnos a enseñar / aprender la seguridad de las
aplicaciones web en un entorno de clase.