Presentacion SQL Injection
Download
Report
Transcript Presentacion SQL Injection
SQL Injection
Inyección SQL: es una vulnerabilidad informática en
el nivel de la validación de las entradas a la base
de datos de una aplicación.
El origen es el filtrado incorrecto de las variables
utilizadas en las partes del programa con código
SQL.
SQL Injection
La meta de una inyección de SQL es insertar datos,
leer información, borrar información o incluso
ejecutar comandos del sistema operativo donde
esta la BD.
¿Que es? UN ERROR de programación
¿Quien es el responsable?
90% el programador
10% el lenguaje backend
Razones: Descuidos, displicencias, ignorancia
SQL Injection
¿Por qué se le llama inyección de SQL?
Este tipo de ataque va dirigido a modificar una
instrucción SQL valiéndose de los errores de
programación de la aplicación.
SQL Injection
USUARIO
PASSWORD
NOMBRE
CORREO
TELEFONO
sandra
ñlkjh
Sandra Gonzalez
[email protected] 555-112233
alex
qwerty
Alejandro Martinez [email protected]
555-243546
diana
asdfg
Diana Morales
diana@sitec
555-125689
moises
zxcvb
Moises Alvarez
[email protected] 555-102938
SELECT * FROM usuarios where usuario = "alex“
Resultado:
2, 'alex', 'qwerty', 'Alejandro Martinez', '[email protected]', '555-243546'
SQL Injection
SELECT * FROM usuarios where usuario = "alex" or
1=1;
1, 'sandra', 'ñlkjh', 'Sandra Gonzalez', '[email protected]', '555-112233'
2, 'alex', 'qwerty', 'Alejandro Martinez', '[email protected]', '555-243546‘
3, 'diana', 'asdfg', 'Diana Morales', '[email protected]', '555-125689‘
4, 'moises', 'zxcvb', 'Moises Alvarez', '[email protected]', '555-102938'
SQL Injection
Tipos de ataque:
Aplicaciones basadas en WEB
Validación de usuario/password
Inyección de código por método GET
Inyección de código por método POST
Ejemplos de ataques
<?php
$query = "SELECT * FROM products
WHERE id LIKE '%a%'
exec master..xp_cmdshell 'net user
test testpass /ADD'--";
$result = mssql_query($query);
?>
Agrega un usuario a un sistema XP / SQL Server
Debilidades
Pobres mecanismos de validación de variables de
entrada.
Usar el manejo de errores del sistema en contra del
propio sistema. En PHP:
mysql_error()
Error_reporting
Guardar las credenciales de acceso a la BD en texto
plano en el mismo sitio web
Mecanismos de defensa
PHP Magic quotes. PHP5 las trae activadas por
defecto
SGBDmysql_real_escape_string()
Objetivo: Dar una secuencia de escape
‘ or 1=1 \’ or 1=1
MySQL, PostreSQL, SQLite, Sybase y MaxDB son los
unicos en proveer mecanismos de escape
Mecanismos de defensa
Herramientas de SANITIZACION de PHP5
http://us.php.net/manual/en/intro.filter.php
SQL Injection
Quien puede ser afectado
CUALQUIERA
Casos famosos:
Miss twitter (tabla datos)
Facebook y los albums de fotos
SQL Injection
¿Cuál es el propósito de una inyección de sql?
Generalmente, una inyección de sql es solo una de
las partes de un ataque a un sitio web.
Los objetivos pueden ir desde: obtener
información, modificar información o peor aun,
borrar todos los datos.
Como la inyección de SQL solo es una pequeña
parte del plan
SQL Injection
1. Reconocimiento
2. Rastreo
3. Acceso
Niveles de SO / App
Redes
Bases de Datos
4. Mantener el acceso
5. Borrado de huellas
Fase 1 - Reconocimiento
Previo a cualquier ataque
Información sobre el objetivo
Reconocimiento pasivo:
Google hacking
Ingenieria social
Monitorizacion de redes (sniffing)
Fase 2 - Escaneo
Escaneo es una fase de pre-ataque
Se escanea la red pero ya con información de la
fase previa
Detección de vulnerabilidades y puntos de
entrada
El escaneo puede incluir el uso de dialers, puertos
scanners, network mapping, sweeping,
vulnerability scanners, etc
Fase 3- Obtener acceso
Obtención de acceso (se refiere al ataque)
Como..aprovechando una debilidad
Buffer overflow, DoS (Denial of Service), robo de sesión,
inyección de sql, etc
El atacante puede obtener accesso:
Permisos de superusuario/admin
Shell (aplicación o web)
Bases de datos
red
Fase 4 – Mantener el accesso
Se trata de retener los privilegios obtenidos
A veces un hacker blinda el sistema contra otros
posibles hacker, protegiendo las vulnerabilidades
encontradas, puertas traseras, etc
Fase 5 – Borrado de huellas
Se intenta no ser descubierto
Dependiendo de la técnica utilizada, los
mecanismos de defensa pueden darse cuenta o
no de que estamos invadiendo.
¿Y…como nos defendemos?
Necesitamos saber las respuestas a:
¿Qué puede saber un intruso de mi? (fase 1y 2)
¿Qué puede hacer un intruso con esa
informacion? (fase 3 y 4)
¿Se podría detectar un intento de ataque? Fase 5
Un mundo global (video)
“Si conoces
al enemigo y te conoces a ti
mismo, no necesitas temer al
resultado de cientos de batallas”
Sun Tzu, El Arte de la Guerra
ISC Manuel Alejandro Martínez Márquez
Orgullosamente egresado del ITC
Twitter: @alxhack
[email protected]
Gracias a todos por su atención