Professional Documents
Culture Documents
Seguridad en las
Aplicaciones Web
LabIS2
http://www.lsi.us.es/~quivir
Dpto. Lenguajes y Sistemas Informticos
Universidad de Sevilla
Contenido
Introduccin
Seguridad en
Seguridad en
Seguridad en
Seguridad en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
Contenido
Introduccin
Aplicaciones Web
Cunta seguridad es necesaria?
Amenazas ms importantes a las
aplicaciones web
Guas de seguridad
Seguridad
Seguridad
Seguridad
Seguridad
en
en
en
en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
Contenido
Introduccin
Seguridad en el Cliente
Cdigo mvil
Lenguajes de Macro: VBA
Lenguajes de Script: JavaScript y VBScript
Applets Java
Controles ActiveX
Seguridad en el Servidor
Seguridad en la Aplicacin
Seguridad en la Comunicacin
Seguridad en Sistemas Informt
Contenido
Introduccin
Seguridad en el Cliente
Seguridad en el Servidor
Servidor Web
Servidor de Bases de Datos
Lenguajes de servidor
Seguridad en la Aplicacin
Seguridad en la Comunicacin
Contenido
Introduccin
Seguridad en el Cliente
Seguridad en el Servidor
Seguridad en la Aplicacin
Control de acceso
Validacin de datos de entrada
Programacin segura
Seguridad en la Comunicacin
Contenido
Introduccin
Seguridad en
Seguridad en
Seguridad en
Seguridad en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
SSL
Programacin
Teora
Prctica
Viernes 7
Introduccin
Seguridad en el cliente
1. Cdigo mvil
Jueves 20
Seguridad en el servidor
Seguridad en la aplicacin:
control de acceso
Viernes 21
Seguridad en la aplicacin:
control de acceso
3. Control de acceso
Jueves 4
Seguridad en la aplicacin:
validacin de datos de entrada
4. Validacin de datos
Viernes 5
Seguridad en la aplicacin:
programacin segura
Seguridad en la comunicacin
5. SSL en Apache
Contenido
Introduccin
Seguridad en
Seguridad en
Seguridad en
Seguridad en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
Introduccin
Aplicaciones Web
Cunta seguridad es
necesaria?
Amenazas ms importantes a
las aplicaciones web
Guas de seguridad
10
Introduccin
Aplicaciones Web
11
Introduccin
Cunta seguridad es
necesaria?
12
Introduccin
Amenazas ms importantes:
Top 10
13
Introduccin
Entrada no validada
Control de acceso roto
Administracin de sesin y autentificacin rota
Fallos de Cross Site Scripting (XSS)
Desbordamiento del buffer
Fallos de inyeccin
Manejo inadecuado de errores
Almacenamiento inseguro
Negacin de servicio
Administracin de configuracin insegura
14
Introduccin
Guas de seguridad
15
Contenido
Introduccin
Seguridad en
Seguridad en
Seguridad en
Seguridad en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
16
Seguridad en el Cliente
Cdigo mvil
Lenguajes de Macro: VBA
JavaScript
VBScript
Applets Java
Controles ActiveX
17
Seguridad en el Cliente
Cdigo mvil
18
Seguridad en el Cliente
Cdigo mvil
19
Seguridad en el Cliente
Cdigo mvil
Applets de Java
Controles ActiveX
Un mtodo de proteccin comn es tener
siempre actualizado el software
20
Seguridad en el Cliente
Lenguajes de Macro: VBA
21
Seguridad en el Cliente
Lenguajes de Macro: VBA
22
Seguridad en el Cliente
Lenguajes de Macro: VBA
23
Seguridad en el Cliente
JavaScript
24
Seguridad en el Cliente
JavaScript
25
Seguridad en el Cliente
JavaScript
26
Seguridad en el Cliente
VBScript
27
Seguridad en el Cliente
Applets Java
28
Seguridad en el Cliente
Controles ActiveX
29
Seguridad en el Cliente
30
Seguridad en el Cliente
Controles ActiveX
31
Seguridad en el Cliente
Prctica 1: Cdigo mvil
Creacin de un formulario
Validacin de datos con JavaScript
Formas de saltarse la validacin JavaScript
32
Contenido
Introduccin
Seguridad en
Seguridad en
Seguridad en
Seguridad en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
33
Seguridad en el Servidor
Servidor Web
Servidor de Bases de Datos
Lenguajes de servidor
34
Seguridad en el Servidor
35
Seguridad en el Servidor
Servidor Web
36
Seguridad en el Servidor
Servidor Web
37
Seguridad en el Servidor
Servidor Web
38
Seguridad en el Servidor
Servidor Web
39
Seguridad en el Servidor
Servidor Web
40
Seguridad en el Servidor
Servidor Web
41
Seguridad en el Servidor
Servidor de Bases de Datos
42
Seguridad en el Servidor
Servidor de Bases de Datos
43
Seguridad en el Servidor
Servidor de Bases de Datos
44
Seguridad en el Servidor
Servidor de Bases de Datos
45
Seguridad en el Servidor
Lenguajes de servidor
46
Seguridad en el Servidor
Lenguajes de servidor
47
Seguridad en el Servidor
Lenguajes de servidor
48
Contenido
Introduccin
Seguridad en
Seguridad en
Seguridad en
Seguridad en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
49
Seguridad en la Aplicacin
Control de acceso
Validacin de datos de entrada
Programacin segura
50
Seguridad en la Aplicacin
Control de acceso
Autentificacin
Autorizacin
51
Seguridad en la Aplicacin
Autentificacin
52
Seguridad en la Aplicacin
Autentificacin HTTP bsica
53
Seguridad en la Aplicacin
54
Seguridad en la Aplicacin
Autentificacin HTTP bsica
Ventajas:
Inconvenientes:
55
Seguridad en la Aplicacin
Autentificacin HTTP bsica
56
Seguridad en la Aplicacin
Prctica 2: Autentificacin
HTTP bsica
57
Seguridad en la Aplicacin
Autentificacin basada en la
aplicacin
58
Seguridad en la Aplicacin
59
Seguridad en la Aplicacin
Passwords
60
Seguridad en la Aplicacin
Passwords
Automticamente
61
Seguridad en la Aplicacin
Passwords
62
Seguridad en la Aplicacin
63
Seguridad en la Aplicacin
Passwords
64
Seguridad en la Aplicacin
Sesiones
65
Seguridad en la Aplicacin
Sesiones
El mecanismo es el siguiente:
66
Seguridad en la Aplicacin
Sesiones
session_start
session_register
session_is_registered
session_unregister
session_destroy
67
Seguridad en la Aplicacin
Sesiones
68
Seguridad en la Aplicacin
Sesiones
69
Seguridad en la Aplicacin
Autorizacin
70
Seguridad en la Aplicacin
Autorizacin
71
Seguridad en la Aplicacin
Autorizacin
72
Seguridad en la Aplicacin
Autorizacin
73
Seguridad en la Aplicacin
Prctica 3: Control de acceso
74
Seguridad en la Aplicacin
Validacin de datos de entrada
Fuentes de entrada
Inyeccin
Estrategias de proteccin
Vulnerabilidades especficas
75
Seguridad en la Aplicacin
Fuentes de entrada
Cadenas URL
Cookies
Cabeceras HTTP
Campos de formularios
76
Seguridad en la Aplicacin
Fuentes de entrada cadenas
URL
77
Seguridad en la Aplicacin
Fuentes de entrada cadenas
URL
78
Seguridad en la Aplicacin
Fuentes de entrada - cookies
79
Seguridad en la Aplicacin
Fuentes de entrada cabeceras
80
Seguridad en la Aplicacin
Fuentes de entrada - cabeceras
81
Seguridad en la Aplicacin
Fuentes de entrada - formularios
82
Seguridad en la Aplicacin
Fuentes de entrada formularios
83
Seguridad en la Aplicacin
Fuentes de entrada - formularios
84
Seguridad en la Aplicacin
Inyeccin
85
Seguridad en la Aplicacin
Inyeccin de datos
Otro ejemplo:
print "<H2>Bienvenido/a, $username.</H2>";
86
Seguridad en la Aplicacin
Conectores y payload
Conector de prefijo
Payload
Conector de sufijo
El ataque est contenido en el payload y los
conectores lo encajan en la aplicacin
Para elegirlos es preciso un amplio
conocimiento del lenguaje, las herramientas y
las tcnicas utilizadas en la aplicacin
87
Seguridad en la Aplicacin
Conectores y payload
payload
sufijo
OR
1=1
OR login=
88
Seguridad en la Aplicacin
Conectores y payload
89
Seguridad en la Aplicacin
Conectores y payload
payload
OR
1=1
sufijo
90
Seguridad en la Aplicacin
Conectores y payload
91
Seguridad en la Aplicacin
Estrategias de proteccin
92
Seguridad en la Aplicacin
Estrategias de proteccin
93
Seguridad en la Aplicacin
Estrategias de proteccin
Tipo de dato
Longitud mxima y mnima
Datos obligatorios
Si hay una lista enumerada de posibles valores,
comprobar que est en ella
Si hay un formato o plantilla especfico, comprobar que lo
cumple
Si es texto libre, que slo contiene caracteres vlidos
Si se permiten caracteres peligrosos, sanearlos
94
Seguridad en la Aplicacin
Estrategias de proteccin
95
Seguridad en la Aplicacin
Estrategias de proteccin
96
Seguridad en la Aplicacin
Prctica 4: Validacin de datos
97
Seguridad en la Aplicacin
Vulnerabilidades especficas
Inyeccin SQL
Path Traversal
Buffer Overflow
98
Seguridad en la Aplicacin
Inyeccin SQL
Si el valor es
la consulta es:
99
Seguridad en la Aplicacin
Inyeccin SQL
100
Seguridad en la Aplicacin
Inyeccin SQL
101
Seguridad en la Aplicacin
Inyeccin SQL
102
Seguridad en la Aplicacin
Inyeccin SQL
103
Seguridad en la Aplicacin
Inyeccin de rdenes del SO
104
Seguridad en la Aplicacin
Inyeccin de rdenes del SO
105
Seguridad en la Aplicacin
Inyeccin de rdenes del SO
106
Seguridad en la Aplicacin
Inyeccin de rdenes del SO
107
Seguridad en la Aplicacin
Inyeccin de rdenes del SO
108
Seguridad en la Aplicacin
Inyeccin HTML (Cross-site Scripting)
109
Seguridad en la Aplicacin
Inyeccin HTML (Cross-site
Scripting)
110
Seguridad en la Aplicacin
Inyeccin HTML (Cross-site
Scripting)
111
Seguridad en la Aplicacin
Inyeccin HTML (Cross-site Scripting)
112
Seguridad en la Aplicacin
Inyeccin HTML (Cross-site Scripting)
113
Seguridad en la Aplicacin
Inyeccin HTML (Cross-site Scripting)
114
Seguridad en la Aplicacin
Path Traversal
115
Seguridad en la Aplicacin
Path Traversal
116
Seguridad en la Aplicacin
Path Traversal
117
Seguridad en la Aplicacin
Path Traversal
// en php.ini
118
Seguridad en la Aplicacin
Path Traversal
119
Seguridad en la Aplicacin
Buffer Overflow
120
Seguridad en la Aplicacin
Buffer Overflow
121
Seguridad en la Aplicacin
Programacin segura
Inicializacin de variables
Gestin de errores
Proteccin de informacin
122
Seguridad en la Aplicacin
Inicializacin de variables
123
Seguridad en la Aplicacin
Inicializacin de variables
124
Seguridad en la Aplicacin
Inicializacin de variables
125
Seguridad en la Aplicacin
Inicializacin de variables
126
Seguridad en la Aplicacin
Inicializacin de variables
127
Seguridad en la Aplicacin
Gestin de errores
128
Seguridad en la Aplicacin
Gestin de errores
129
Seguridad en la Aplicacin
Proteccin de informacin
130
Seguridad en la Aplicacin
Proteccin de informacin
131
Seguridad en la Aplicacin
Proteccin de informacin
132
Contenido
Introduccin
Seguridad en
Seguridad en
Seguridad en
Seguridad en
el
el
la
la
Cliente
Servidor
Aplicacin
Comunicacin
133
Seguridad en la Comunicacin
SSL
134
Seguridad en la Comunicacin
SSL
135
Seguridad en la Comunicacin
SSL
136
Seguridad en la Comunicacin
SSL
137
Seguridad en la Comunicacin
SSL
138
Seguridad en la Comunicacin
SSL
139
Seguridad en la Aplicacin
Prctica 5: SSL en Apache
140