Post on 08-Jan-2017
1Rooted Satellite Valencia
Una panorámica sobre seguridad en entornos web
Satellite Edition
2Rooted Satellite Valencia
Guía de presentación1.- Introducción.2.- El ecosistema web.3.- Vulnerabilidades y explotación.4.- Buenas prácticas.5.- Herramientas, recursos y créditos.
3Rooted Satellite Valencia
1.- Introducción¿A quien se enfoca la charla?
– Newcomers. Empezamos con una buena base.
– Experienced. Ya llevamos un tiempo programando, pero la seguridad ha sido circunstancial.
– Todo el mundo. ¡Aprende a mirar y navega seguro!
4Rooted Satellite Valencia
El terrenoComo desarrollador web, como en todo, hay mucho que aprender:– Servidores– Programación Back-end– Programación Front-end– Metodologías y paradigmas.– Otros (maquetación, SEO, etc…)
La especialización viene después.
5Rooted Satellite Valencia
Las armasServidores– Java (Tomcat, Glassfish), PHP (Apache, nginx,
etc…)Lenguajes de programación– Front-end (Javascript), Back-end (PHP, Java,
Phyton, etc…)Frameworks: – Java (Spring, Struts), PHP (CodeIgniter, Laravel,
Zend), Phyton (Django), etc…Conviene conocer y manejar unos cuantos.
6Rooted Satellite Valencia
El dueloConocer, comprender y dominar las herramientas.Practicar.Leer.
7Rooted Satellite Valencia
From scratch vs FrameworksMe gusta hacerlo todo por mí mismo.– No hay dependencias con nada/nadie.– Recopilación de código genérico.– Framework propio.
Uso de frameworks:– No hay necesidad de reinventar la rueda.– Solución a problemas que aun ni conocemos.– Soporte de la comunidad.
8Rooted Satellite Valencia
2.- El ecosistema webNos vamos a centrar en los ataques directos sobre aplicaciones web, pero repasamos algunos puntos de seguridad en servidores. En todos los puntos puede existir una vulnerabilidad explotable.– Mala configuración. – Herramientas/contenido instalad@s por
defecto. – Puertos/Servicios habilitados sin necesidad.
9Rooted Satellite Valencia
SituacionesEn empresas de hosting, es su responsabilidad proporcionar un entorno seguro (a priori). Entornos de prueba, servidores caseros, empresas pequeñas, hostings propios, etc… Es nuestra responsabilidad.
10Rooted Satellite Valencia
Algunas precauciones (Xampp)Desactivar directivas innecesarias (según caso):– Listado de directorio – (-)Indexes – Ejecución de CGI – (-)ExecCGI– Restricción de acceso a directorios. (Order, Allow)– Métodos HTTP (DELETE, PUT, TRACE, etc…)
Cambiar/Establecer contraseñas.Php.iniMod_security (Apache WAF)
11Rooted Satellite Valencia
Algunas precauciones (Tomcat)
Contenedor de aplicaciones Java (Tomcat, incluido en Xampp)– Establecer usuario/grupo/permisos– (Des)Habilitar los conectores/métodos
(in)necesarios.– Ajustar variables en archivo server.xml
• maxPostSize, maxHttpHeaderSize….• Ocultar información (server y xpoweredBy)• Desactivar allowTrace (HTTP TRACE)
– Tratamiento adecuado de excepciones
12Rooted Satellite Valencia
3.- Vulnerabilidades webBasado en el informe "Top 10 OWASP 2013"Formato:– Descripción de la vulnerabilidad– Principales medidas de protección.– Ejemplos.
13Rooted Satellite Valencia
3.1.- Cross-site scripting (XSS)Aprovecha un incorrecto filtrado de los datos enviados por un usuario para modificar la respuesta del servidor.Principalmente se transporta por url (GET), pero también se puede explotar por formularios POST.Inyecta un código en la página que se ejecuta cuando un usuario accede.El atacante tiene un servidor controlado que actúa como receptor de la información enviada por las víctimas.Difusión de un enlace manipulado. Redes sociales, campañas de mailing, etc…
14Rooted Satellite Valencia
XSS - TiposReflejado: Una URL transporta un parámetro modificado que actúa al ser accedido por un visitante. Persistente: Se da al guardar en una BD el payload, disparándose cada vez que un usuario visita la página.Basado en DOM: El payload no es procesado por el servidor, sino directamente por el cliente, al ser una etiqueta de la URL.
15Rooted Satellite Valencia
XSS Reflejado
16Rooted Satellite Valencia
XSS Persistente
17Rooted Satellite Valencia
XSS Basado en DOM
18Rooted Satellite Valencia
ProtecciónNUNCA confiar en los datos de usuario.Asegurarse de filtrar todos los datos recibidos, oUsar herramientas que gestionen la sanitización y el filtrado.Filtrar '<', '>' y métodos js como atributos.Por ejemplo:– CodeIgniter: clase configurable para el filtrado.– Laravel, Blade y “{{ }}” vs “{!! !!}”– Htmlentities() y htmlspecialchars() en PHP
19Rooted Satellite Valencia
3.2.- SQL InjectionSe da cuando un dato enviado no es filtrado adecuadamente, y es usado en una cadena SQL.No se limita a SQL. Puede darse en LDAP, Xpath (XML), NoSQL, etc…Según la gravedad, puede comprometer toda la base de datos, el servidor de BD’s, estructura de los datos y la privacidad de los usuarios.
20Rooted Satellite Valencia
SQL Injection - Ejemplos
21Rooted Satellite Valencia
ProtecciónNUNCA confiar en
los datos de usuario.Asegurarse de escapar todas las comillas \' \"Prepared Statmenets en ORM’s como Hibernate.Frameworks y CMS’s incorporan sus propios ORM’s o hacen uso de terceros.
22Rooted Satellite Valencia
Ejemplos
XPath - Caracteres prohibidos
Hibernate (Java) - Prepares Statements
PHP - PDO Prepared Statements
23Rooted Satellite Valencia
3.3.- Autenticación/SesionesPerdida de autenticación. Fallos en la protección de usuarios y contraseñas, y en los procesos relacionados con la autenticación
Gestión de sesiones. Todo lo relacionado con la forma de un servidor de gestionar los identificadores se sesión de un usuario.
24Rooted Satellite Valencia
Perdida de autenticaciónAgrupa todo lo referente a:– Cifrado de contraseñas.– Lógica de usuarios.
• Creación de usuarios.• Recuperación/Cambio de contraseña.• Autenticación automática.
Conviene agrupar todas las funciones en un solo modulo para limitar los fallos y facilitar el mantenimiento.
25Rooted Satellite Valencia
Gestión de sesionesConfigurar/revisar/optimizar los mecanismos de asignación y gestión de ID de sesión.Evitar:– Sesiones precedibles.– Otras vulnerabilidades (XSS, login sobre HTTPS
pero navegación sobre HTTP) que pueden capturar la sesión.
– La sesión no debe ser la misma para un usuario antes y después de logearse. (Fijación de sesión)
– HttpOnly
26Rooted Satellite Valencia
Ejemplo de fijación de sesión
27Rooted Satellite Valencia
3.4.- Referencias insegurasCuando la lógica del software no controla quien accede a que (objetos).Cuando un usuario puede realizar operaciones que no debería (funciones).Supongamos:– Dos tipos de usuarios A y B.– Dos tipos de Objetos A' ∈ A y B' ∈ B.– Dos tipos de operaciones Visualizar ∈ (A, B) y
Borrar ∈ (B).
28Rooted Satellite Valencia
Este día estaba matemático....
29Rooted Satellite Valencia
ObjetosUna vulnerabilidad de Ref. Insegura a Objetos se daría cuando, un sistema donde:– pruebas.com/user/A/view/itemA's • pruebas.com/user/B/view/itemB's
Permite que: – pruebas.com/user/A/view/itemB's – pruebas.com/user/B/view/itemA's
Puede ser directa (ejemplo), o indirecta, donde objeto C' perteneciente a A' pero solo gestionable por usuarios B puede ser gestionado por un usuario A.
30Rooted Satellite Valencia
FuncionesSemejante a las referencias a objetos pero con las funcionalidades:– pruebas.com/user/A/create/itemA's – pruebas.com/user/B/edit/itemA's – pruebas.com/user/B/delete/itemA's
Se daría si el usuario A pudiera modificar la URL para acceder a:– pruebas.com/user/A/delete/itemA's
31Rooted Satellite Valencia
ConsideracionesPara protegerse hay que diseñar una estructura clara de permisos y propiedades.Para cada operación hay que preguntarse:– ¿Quién es?– ¿Este objeto le pertenece?– ¿Tiene permiso para realizar esta operación?
32Rooted Satellite Valencia
3.5.- Configuraciones incorrectas
Ya se ha mencionado lo que respecta a servidores en el punto dos.Cuando la aplicación web está creada from scratch, cada equipo de desarrolladores es responsable de crear un entorno seguro.Al usar Frameworks o CMS's, hay que atender a las opciones de configuración (claves criptográficas, configuración de base de datos, subida de archivos, etc...)
33Rooted Satellite Valencia
EjemplosWordpress define unas claves para la gestión de los hashes de passwords y autenticaciones.
CodeIgniter tiene una clase para la gestión criptográfica de los datos.
34Rooted Satellite Valencia
3.6.- Exposición de datos sensibles
HTTP es un protocolo abierto, y la información viaja en texto plano.Cualquier dato de carácter confidencial debería viajar cifrado tanto desde el cliente (externo) como internamente. (HTTPS, otros)La generación de hashes (md5, base64) no bastan por si mismas. AES, Twofish, Serpent...
35Rooted Satellite Valencia
3.7.- CSRF (XSRF)Un sitio web contiene una petición oculta a otra web, que el cliente ejecuta al visitar la primera.La petición es ejecutada por el usuario como propia.La víctima debe estar logeado en la web objetivo.
36Rooted Satellite Valencia
Ejemplos
37Rooted Satellite Valencia
ProtecciónUsar un token único para cada operación y usuario.Doble autenticación o uso de CAPTCHAS para operaciones sensibles.
38Rooted Satellite Valencia
3.8.- Componentes vulnerablesUsar versiones actualizadas:– Navegadores– Lenguajes de programación.– Frameworks, CMS’s– Plugins de los anteriores, etc…
Revisar CVE, comunidades, foros especializados.
39Rooted Satellite Valencia
3.9.- Redirecciones y reenvíos.Se manda a los usuarios de un sitio a otro de una web (interno), o a otro sitio (externo).El destino es obtenido mediantes datos del usuario.Incorrecto filtrado de datos.
40Rooted Satellite Valencia
Ejemplos CRLF / HTTP Response Splitting. Obtiene dos respuestas del servidor a una solicitud, sobreescribiendo la primera.Se da cuando las cabeceras contienen doble \r\n (%0d%0a )– Defacements– Cache Poisoning– Page Hijacking
41Rooted Satellite Valencia
CRLF
42Rooted Satellite Valencia
ProtecciónFiltrar caracteres \r\n en distintas codificaciones.Validar el dato que determina la redirección, asegurando que sea válido y autorizado.Usar sistemas de mapeo de url’s o routing, y redireccionar a esos valores.
43Rooted Satellite Valencia
4.- ConclusionesUsar herramientas que incluyan contramedidas.– Comprobación de vulnerabilidades.– Versiones actualizadas.
Si se va a trabajar from scratch, blindar sectores críticos.Trabajar sobre HTTPS siempre que se traten datos sensibles.
44Rooted Satellite Valencia
Conclusiones (2)No confiar NUNCA en los datos del usuario.No confiar NUNCA
en los datos del usuario (es que son el doble de…)
Filtrar adecuadamente los datos recibidos para todas las peticiones.
45Rooted Satellite Valencia
5.- WarehouseOWASP, documentación y ZAP.Plugins Firefox:– Data Tamper.– Proxy Selector
Prácticas:– PentesterLab– Damn Vulnerable Web Application– http://amanhardikar.com/mindmaps/Practice.ht
ml
46Rooted Satellite Valencia
Agradecimientos y fuentesRootedCONOWASPSecurity By DefaultSecurity Art Work (Bastionados)Y muchos más…
47Rooted Satellite Valencia
¡Gracias!