PDF de programación - LECCIÓN 7: SEGURIDAD EN APLICACIONES WEB. INTRODUCCIÓN A LAS TÉCNICAS DE INYECCIÓN SQL

Imágen de pdf LECCIÓN 7: SEGURIDAD EN APLICACIONES WEB. INTRODUCCIÓN A LAS TÉCNICAS DE INYECCIÓN SQL

LECCIÓN 7: SEGURIDAD EN APLICACIONES WEB. INTRODUCCIÓN A LAS TÉCNICAS DE INYECCIÓN SQLgráfica de visualizaciones

Publicado el 11 de Septiembre del 2017
995 visualizaciones desde el 11 de Septiembre del 2017
305,3 KB
17 paginas
Creado hace 13a (02/05/2011)
Lección 7: INTRODUCCIÓN A LAS TÉCNICAS

DE INYECCIÓN SQL

Chema Alonso
[email protected]
Informática 64
Microsoft MVP en Enterprise Security

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

Incidentes de Seguridad I: Kaspersky

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

2

Incidentes de Seguridad II: NASA

Des-
cifrar

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

3

Arquitectura de una aplicación Web

Browser

WebServer

WebServer

Interfaz de Usuario

(GUI)

Lógica de la Aplicación

DCOM

WebService

Des-
cifrar

RPC

LDAP

BBDD

Almacén
De Datos

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

4

OWASP Top 10

Des-
cifrar

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

5

Inyecciones de Código

• Aplicaciones con mala comprobación de datos de entrada.

– Datos de usuario.

• Formularios
• Cookies
• ….

• Links
• Funciones Scripts
• Actions
• …

– Datos de llamadas a procedimientos.

Des-
cifrar

• Datos de usuario utilizados en consultas a base de datos.
• Mala construcción de consultas a bases de datos.
• Ataques

– SQL Injection, LDAP Injection, Xpath Injection
– ….

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

6

Inyecciones de Código: Ejemplo

– Autenticación de usuario contra base de datos.

Usuario

Clave

****************
Des-
cifrar

Select idusuario from tabla_usuarios
Where nombre_usuario=‘$usuario’
And clave=‘$clave’;

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

7

Inyecciones de Código: Ejemplo

Usuario

Administrador

Clave

‘ or ‘1’=‘1

Select idusuario from tabla_usuarios
Where nombre_usuario=‘Administrador’
And clave=‘’ or ‘1’=‘1’;

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

8

Impacto

• Permiten al atacante:

– Saltar restricciones de acceso.
– Elevación de privilegios.
– Extracción de información de la Base de Datos
– Parada de SGBDR.
– Ejecución de comandos en contexto usuario bd

dentro del servidor.

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

9

Tipos de Ataques: Inbound

• Acceso a información con procedimientos de

listado.
http://www.miweb.com/prog.asp?parametro1=hola

http://www.miweb.com/prog.asp?parametro1=‘ union select nombre,
clave,1,1,1 from tabla_usuarios; otra instrucción; xp_cmdshell(“del
c:\boot.ini”); shutdown --

o
http://www.miweb.com/prog.asp?parametro1=1

http://www.miweb.com/prog.asp?parametro1=-1 union select .....; otra

instrucción; --

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

10

Tipos de Ataques: Outbound

• El atacante vuelca datos utilizando los
mensajes de error de la aplicación y el
repositorio de datos

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

11

Ataques a ciegas

• La aplicación Web no muestra ningún mensaje

de error.
– No es posible un ataque outbound

• La aplicación no procesa comandos

– No es posible un ataque inbound

• Se inyectan condicionantes True y False.

Ejemplo:
– http://server/miphp.php?id=1 and 1=1
– http://server/miphp.php?id=1 and 1=2

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

12

Ataques a ciegas

• ¿Como reconocer diferentes comportamientos?

– Da un código de error
– Da una página de error
– Cambia el hash de la firma
– Cambia el árbol html
– Tarda más en responder
– …

• Si la página reacciona de forma diferente a inyecciones True y
False, entonces se puede extraer datos haciendo búsquedas
booleanas
– http://www.servidor.com/mostrar_noticias.php?v_id=1 and
(100=(select top 1 ascii(substring(login,1,1)) from usuarios))

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

13

Ataques basados en tiempos

• Si el contenido de la respuesta es idéntico en ambos

casos, aún es posible conseguir nuestro objetivo
variando condicionalmente el tiempo de respuesta
del servidor
– Si la condición inyectada es verdadera, la aplicación

tardará unos segundos en contestar

– Si la condición es falsa, la aplicación devolverá la misma

respuesta, pero en el tiempo habitual

• Se pueden utilizar las mismas técnicas de inyección

descritas anteriormente

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

14

Inyección SQL basada en tiempos

• ¿Cómo podemos conseguir el retardo?

– Utilizando instrucciones de retardo implementadas en el propio gestor

de bases de datos

• SQL Server: waitfor delay
• Oracle: dbms_lock.sleep
• MySQL: sleep
• Postgres: pg_sleep

– Utilizando consultas pesadas que consuman muchos recursos del

servidor (CPU o memoria)

• CROSS JOIN que involucren muchas tablas

– De cualquier otra forma (ej: xp_cmdshell 'ping…')

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

15

Contramedidas

• No confianza en medias de protección en cliente.

• Comprobación de datos de entrada.

• Construcción de sentencias SQL con componentes seguros.

• Fortificación de Servidor Web.

– Códigos de error.
– Restricción de verbos, longitudes, etc…
– Filtrado de contenido HTTP en Firewall (WAF).

• Fortificación de SGBD.

– Restricción de privilegios de motor/usuario de acceso desde web.
– Aislamiento de bases de datos.

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

16

Madrid, España, mayo 2011

Video intypedia007es © intypedia 2011 Creative Commons

Contacto: [email protected]
  • Links de descarga
http://lwp-l.com/pdf6912

Comentarios de: LECCIÓN 7: SEGURIDAD EN APLICACIONES WEB. INTRODUCCIÓN A LAS TÉCNICAS DE INYECCIÓN SQL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad