2. Índice
S Injection.
S Cross-SiteScripting (XSS).
S Gestión de la sesión.
S Autenticación y autorización.
26/5/12 2 Navaja Negra - CRASH - Fco. Honrubia
3. Injection
S Un ataque de este tipo como SQL, OS y LDAP injection se produce
cuando datos sin verificar llegan a un interprete como parte de un
comando o consulta. Estos datos pueden hace que el interprete
ejecute comandos y/o acceda a datos para los que no debería tener
autorización.
26/5/12 3 Navaja Negra - CRASH - Fco. Honrubia
4. Injection
S SQL injection.
S String query = "SELECT account_balance FROM user_data
WHERE user_name = " +
request.getParameter("customerName");
S try {
S Statement statement = connection.createStatement( … );
ResultSet results = statement.executeQuery( query );
S }
26/5/12 4 Navaja Negra - CRASH - Fco. Honrubia
5. Injection
S Soluciones:
S Utilizar PreparedStatements (Consultas parametrizadas).
S String query = "SELECT account_balance FROM user_data WHERE user_name
= ? ";
S PreparedStatement pstmt = connection.prepareStatement( query );
S pstmt.setString( 1, custname);
S Utilizar Procedimientos almacenados.
S Escapar todas las entradas de usuario.
S Adicionales:
S Disminuir al mínimo los privilegios de las consultas.
S Validación mediante lista blanca de las entradas.
26/5/12 5 Navaja Negra - CRASH - Fco. Honrubia
6. Injection
S ORM’s
S Hibernate
S MyBatis
S El propio driverjdbc escapa los parámetros.
S OJO:
S Query unsafeHQLQuery = session.createQuery("from
Inventory where productID='"+userSuppliedParameter+"'");
S Query safeHQLQuery =
session.createQuery(“fromoInventorywhereproductID =
:param”);
S safeHQLQuery.setString(“param”,”valor”) ;
26/5/12 6 Navaja Negra - CRASH - Fco. Honrubia
7. Índice
S Injection.
S Cross-SiteScripting (XSS).
S Gestión de la sesión.
S Autenticación y autorización.
26/5/12 7 Navaja Negra - CRASH - Fco. Honrubia
8. Cross-SiteScripting (XSS)
S Los ataques XSS se producen cuando una aplicación
envía a un navegador web datos sin validar ni escapar.
Estos ataques permiten al atacante ejecutar scripts en el
navegador de la victima.
S Obtener su sesión.
S Redirigir a la victima a sitios maliciosos.
S …
26/5/12 8 Navaja Negra - CRASH - Fco. Honrubia
9. Cross-SiteScripting (XSS)
S Son ataques complicados de detectar.
S Normalmente son fáciles de corregir.
S Salvo que en nuestra aplicación tengamos que permitir al
usuario introducir código html.
S OJO: no es suficiente con filtrar las entradas -> filtrar
también los datos que vienen de partes “seguras”.
26/5/12 9 Navaja Negra - CRASH - Fco. Honrubia
10. Cross-SiteScripting (XSS)
S Ejemplo JSP vulnerable:
S <textarearows="5" cols="50">
S <%= request.getAttribute(”userName")%>
S </textarea>
26/5/12 10 Navaja Negra - CRASH - Fco. Honrubia
11. Cross-SiteScripting (XSS)
S Uso de frameworks
S JSF
S Struts
S JSTL
S …
S Con cualquiera de ellos filtra automáticamente estos
datos.
S <s:textfieldkey="username" name="userName"/>
26/5/12 11 Navaja Negra - CRASH - Fco. Honrubia
12. Cross-SiteScripting (XSS)
S Si tenemos que permitir el uso de html en las entradas
de usuario (Editor de texto)
S Utilizar una lista blanca.
S Permitir negritas:
S texto_filtrado.replace("<b>","<b>").replace("</b>","</b
>";
S Filtrar todo lo demás.
26/5/12 12 Navaja Negra - CRASH - Fco. Honrubia
13. Índice
S Injection.
S Cross-SiteScripting (XSS).
S Gestión de la sesión.
S Autenticación y autorización.
26/5/12 13 Navaja Negra - CRASH - Fco. Honrubia
14. Gestión de la sesión
S El problema relacionado con la gestión de la sesión es el
robo de la misma, normalmente es muy simple con un
sniffer robar el identificador de sesión del usuario.
26/5/12 14 Navaja Negra - CRASH - Fco. Honrubia
15. Gestión de la sesión
S Reducir el robo de sesión.
S No poner sesionId en urls.
S Cuando un usuario hace login regenerar la sesión.
S currentSession.invalidate();
S HttpSession newSession = request.getSession(true)
S Controlar el logout del usuario para invalidar la sesión.
S Controlar el timeout de la sesión.
26/5/12 15 Navaja Negra - CRASH - Fco. Honrubia
16. Gestión de la sesión
S Frameworks (SrpringSecurity)
S <session-management session-fixation-
protection="migrateSession"/>
S Tomcat 7
S Solución mas fiable es usar https
26/5/12 16 Navaja Negra - CRASH - Fco. Honrubia
17. Índice
S Injection.
S Cross-SiteScripting (XSS).
S Gestión de la sesión.
S Autenticación y autorización.
26/5/12 17 Navaja Negra - CRASH - Fco. Honrubia
18. Autenticación y autorización
S Autenticación: un usuario es quién dice ser.
S Autorización: el usuario tiene acceso solo a los recursos
que debe tener.
S Existen diversas formas de autenticación y autorización,
basada en servidor o a nivel de aplicación
26/5/12 18 Navaja Negra - CRASH - Fco. Honrubia
19. Autenticación y autorización
S Autenticación basada en servidor
S HTTP Basic Authentication (sale una ventana emergente para pedir
usuario y pass)
S HTTP Digest Authentication (igual pero cifrado en md5)
S FormBasedAuthentication (formulario web de loginj_securtity_check)
S HTTPS ClientAuthentication (soporte de certificados)
S Problemas login con aplicaciones de terceros…
26/5/12 19 Navaja Negra - CRASH - Fco. Honrubia
20. Autenticación y autorización
S Autorización basada en servidor:
S Concepto de reino “realms” en los que se encapsula cada
usuario (rol).
26/5/12 20 Navaja Negra - CRASH - Fco. Honrubia
21. Autenticación y autorización
S A nivel de aplicación: es muy complicado conseguir una
aplicación segura.
S Uso de frameworks:
S Spring Security
S Apache Shiro
26/5/12 21 Navaja Negra - CRASH - Fco. Honrubia
22. Autenticación y autorización
S ¿Qué proporcionan estos frameworks?
S Autenticación.
S Autorización.
S Sessionmanagement.
S Criptografía.
26/5/12 22 Navaja Negra - CRASH - Fco. Honrubia
23. Autenticación y autorización
S Apache Shiro:
S Fácil Configuración.
S Fácil integración con entornos distribuidos.
S Integración con aplicaciones de escritorio.
S Soporte LDAP, Kerberos…
S …
26/5/12 23 Navaja Negra - CRASH - Fco. Honrubia
24. Autenticación y autorización
S Spring Security:
S Fácil Configuración (10 líneas XML).
S No invasivo (No afecta a objetos de negocio).
S Soporte OpenID (Google, IBM, Sun, Yahoo…).
S Soporte LDAP, Kerberos...
S Log in con redes sociales (Spring Social).
S Secure Web Services
S …
26/5/12 24 Navaja Negra - CRASH - Fco. Honrubia
25. Referencias
S http://www.owasp.org
S http://static.springsource.org/spring-security/site/
S http://shiro.apache.org
26/5/12 25 Navaja Negra - CRASH - Fco. Honrubia