1. Inyección SQL
Análisis de Seguridad en TI
Integrantes:
•
Víctor Hugo González
•
Sergio Cerón
•
Juan Carlos Carrillo
2. Inyección SQL
Objetivo
Identificar por medio de inyección SQL vulnerabilidades en una página web y
posteriormente acceder a la base de datos de dicha página.
¿Qué son?
¿Cómo funcionan?
¿Como se evitan?
3. Definición - SQL Injection
• Son técnicas o métodos de infiltración de código malicioso que se
basa de una vulnerabilidad informática que se encuentra presente en
una aplicación para realizar consultas de datos a una base de datos.
• Es la técnica utilizada por personas maliciosas con el fin de alterar o
atacar una aplicación a través de comandos SQL.
• Se puede atacar cualquier tipo de aplicación que use una base datos, o
una aplicación web, es decir puede estar en todo tipo de lenguajes de
programación como por ejemplo PHP, JAVA, PERL, C#, ASP, etc.
4. Blind SQL injection
El BLIND SQL Injection 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.)
5. ¿Cómo funciona?
Ocurren errores en SQL
por la ignorancia del
lenguaje, pero este
código puede ser
reparado por
programadores o
administradores de BD.
• Se inserta lenguaje para alterar el contenido y su funcionamiento
normal para ejecutarlo en la base de datos.
• El lenguaje que se incerta son sentencias de base de datos, de
manera que nos muestre información que nos ayude a obtener lo
que buscamos.
6. Ejemplos
En este primer ejercicio se utilizará inyección SQL a las siguientes páginas
Web : http://www.biomedicos.com.mx y http://www.casaveerkamp.com
CASAVEERKAMP
BIOMEDICOS
7. Procedimiento
1. Por medio del programa WEBCRUISER se escanearon y
detectaron las vulnerabilidades de las 2 páginas web, presentando
los siguientes resultados:
Biomedicos.com.mx
Casaveerkamp.com
8. Procedimiento
2.
Después de identificar la vulnerabilidad se deberá de seleccionar y copiar a la
herramienta HAVIJ. Esta herramienta nos permite identificar y vulnerar la base de datos,
dando como resultado la obtención del nombre de la base de datos “biomedicos” así como
sus respectivas tablas, campos y registros.
9. Procedimiento
3.
Ahora que ya tenemos identificado el nombre de la base de datos, se
pueden ya identificar las tablas, campos y registros. En el ejemplo
presentado con la página de biomedicos, se identificaron tablas donde
podremos obtener datos personales de pacientes, listas de precios de servicios y
claves de accesos de usuarios.
Datos Personales
de pacientes
11. Procedimiento
4. A través de la herramienta HAVIJ se encontró la página principal de
administración del portal, por lo que se podrá tener acceso al portal de
administración teniendo los permisos correctos (obtenidos anteriormente).
12. Reporte de inyección o vunerabilidad
Se encontró en la página de biomedicos, un error de programación
en el archivo sucursales.php
13. Recomendaciones
¿Cómo evitar una vulnerabilidad?
Para prevenir inyecciones de vulnerabilidad se debe de reforzar las
mejores prácticas de codificación e implementación de
procedimientos en las bases de datos, se recomienda seguir las
mejores practicas por ejemplo:
Deshabilitar mensajes de error que den información al atacante
Proteger la contraseña del administrador de la base de datos (sa)
Asegurarse que el código fuente sea auditable
Restringir longitud en las claves
Evitar contraseñas sencillas