Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hacking & Hardening Drupal

1,028 views

Published on

Slides de mi presentación sobre ataque y defensa a sistemas Drupal, en el marco de la II Jornada de Seguridad en las Comunicaciones y la Información, en la Escuela Superior de Ingenieros de la Universidad de Sevilla, el 9 de junio de 2015

Published in: Technology
  • Muchas gracias por subirla, me encantó tu presentación, estoy deseando iniciarme a programar este verano ^^
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Hacking & Hardening Drupal

  1. 1. Hacking & Hardening Drupal Ezequiel V´azquez De la calle (@RabbitLair) Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  2. 2. Sobre mi Estudios Ingeniero T´ecnico en Inform´atica - UCA M´aster en Ingenier´ıa del Software - US M´aster en Seguridad de las TIC - US Experiencia 5+ a˜nos como desarrollador web, 3+ en Drupal Actualmente: DevOps Drupal Seguridad, GNU/Linux, Python, Node.JS. . . Aficiones Rock’n’Roll (guitarra el´ectrica) y videojuegos Narrativa fant´astica, rol, cine, cerveza. . . Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  3. 3. ´Indice 1 Introducci´on 2 Hacking Drupal 3 Hardening Drupal 4 Live Demo 5 Conclusiones Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  4. 4. ´Indice 1 Introducci´on 2 Hacking Drupal 3 Hardening Drupal 4 Live Demo 5 Conclusiones Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  5. 5. Introducci´on ¿Y esto de qu´e va? CMS escrito en PHP Extensible mediante m´odulos y temas Arquitectura LAMP Software libre (GPL) Actualmente, Drupal 7 Lo mejor: La comunidad Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  6. 6. Seguridad Pilares de la seguridad Confidencialidad Integridad Disponibilidad Autenticaci´on Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  7. 7. Seguridad Principios b´asicos M´ınimo privilegio M´ınima exposici´on Eslab´on m´as d´ebil Proporcionalidad Seguridad en profundidad Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  8. 8. Servidor Arquitectura mas com´un para Drupal Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  9. 9. Vulnerabilidades Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  10. 10. Seguridad en profundidad Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  11. 11. ¿Por qu´e en profundidad? El Abismo de Helm era inexpugnable. . . Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  12. 12. ´Indice 1 Introducci´on 2 Hacking Drupal 3 Hardening Drupal 4 Live Demo 5 Conclusiones Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  13. 13. Recogida de informaci´on Hacking con buscadores (fichero robots.txt) “Fingerprint” de servidor, framework, versiones. . . Crawlers, spiders, robots. . . Herramientas autom´aticas: Burp, ZAP, Nikto2 Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  14. 14. Pruebas sobre configuraci´on M´etodos HTTP permitidos (PUT, DELETE, TRACE) Gesti´on de extensiones Configuraci´on de plataforma (Apache, PHP, MySQL. . . ) Revisar backups en el ´arbol web (*.sql, *.bak. . . ) Esc´aner de puertos (Nmap) Firewall/IDS/Web Application Firewall Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  15. 15. Gesti´on de identidad y autorizaci´on Definici´on de roles (filtros de entrada, permisos asignados) Enumeraci´on de cuentas de usuario (m´odulo views) Ataques de fuerza bruta (Hydra, m´odulos de Captcha) Referencias inseguras (cambiar [nid] en /node/[nid]) Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  16. 16. Autenticaci´on Credenciales por canal inseguro (MitM, m´odulo securepages) Pol´ıtica de contrase˜nas d´ebil (m´odulo password policy) Recordar contrase˜nas: ¿se vuelve a enviar la pass? Sistema de autenticaci´on (Drupal Ok, pero ¿modificado?) Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  17. 17. Gesti´on de la sesi´on Duraci´on de la sesi´on (session expire y autologoff ) Gesti´on de cookies (cifrado, atributos httpOnly y Secure) Robo de cookie de sesi´on = Robo de identidad Cross Site Request Forgery (no s´olo forms) Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  18. 18. Validaci´on de datos de entrada Cross Site Scripting SQL injection Poluci´on de par´ametros HTTP Inyecci´on de c´odigo Subida de ficheros En Drupal: filter xss db query check plain check markup check url Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  19. 19. Gesti´on de errores Exposici´on de c´odigos y textos de error Exposici´on de trazas Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  20. 20. M´as testing. . . Criptograf´ıa d´ebil Heartbleed Errores en l´ogica de negocio Tests en lado de cliente No solo web. . . Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  21. 21. ´Indice 1 Introducci´on 2 Hacking Drupal 3 Hardening Drupal 4 Live Demo 5 Conclusiones Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  22. 22. Cross Site Scripting ¿Qu´e es? Ejecuci´on de c´odigo Javascript Reflejado o almacenado Ataca al cliente: robo de cookies, descarga de malware. . . ¡La m´as com´un en Drupal! Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  23. 23. Cross Site Scripting En Drupal. . . Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  24. 24. Cross Site Scripting Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  25. 25. Cross Site Scripting Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  26. 26. SQL Injection ¿Qu´e es? Modificaci´on de consultas a base de datos B´asico, blind o time based Ataca al servidor: extrae informaci´on, o la modifica Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  27. 27. SQL Injection En Drupal. . . Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  28. 28. Cross Site Request Forgery ¿Qu´e es? Hacer que usuario pida URL sin que lo sepa Petici´on a un formulario con par´ametros GET Eliminar nodos, cambiar contrase˜na. . . Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  29. 29. Cross Site Request Forgery En Drupal. . . Utilizar siempre la Forms API drupal valid token para env´ıos GET Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  30. 30. Hijacking de sesi´on ¿Qu´e es? Robo de cookies para suplantar a un usuario identificado Drupal se encarga de la gesti´on de la sesi´on Mejor pr´actica: utilizar SSL en todo el portal Certificado v´alido, m´odulo securepages Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  31. 31. Bypass de autorizaci´on ¿Qu´e es? Usuario accede a URLs o secciones no permitidas En Drupal. . . Controlado mediante el sistema de men´u, roles y permisos Mejor pr´actica: M´ınimo privilegio posible Granularizar permisos tanto como sea necesario Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  32. 32. Referencias inseguras ¿Qu´e es? Acceder a contenido para el cual no se tiene permiso Permisos definidos, pero ¿se comprueban? Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  33. 33. Referencias inseguras Prevenci´on Comprobar permisos: user access Comprobar acceso a contenido: node access En consultas SQL: $select→addtag(’node access’); Utilizar la Forms API Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  34. 34. Securizar la configuraci´on Instalaci´on segura M´odulo security review M´odulo paranoia M´odulo update M´odulo password policy Limitar duraci´on de sesi´on Permisos “administer . . . ” ¡Ojo con los filtros de entrada! Desactivar y eliminar m´odulo php Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  35. 35. ´Indice 1 Introducci´on 2 Hacking Drupal 3 Hardening Drupal 4 Live Demo 5 Conclusiones Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  36. 36. Un vector de ataque simple Detecci´on de XSS almacenado (filtro “Full HTML”) Inyectar JS que env´ıa cookies a atacante (SOP, httpOnly) Atacante inyecta cookie en su navegador Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  37. 37. Un vector de ataque simple Activaci´on de m´odulo “PHP filter” Modificar nodo para que use este filtro Ejecutar comandos de sistema desde PHP (disable functions) Lanzar shell reversa con netcat (cortafuegos saliente) Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  38. 38. Un vector de ataque simple ¡Demo time! Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  39. 39. Un vector de ataque simple A partir de aqu´ı. . . Escalado de privilegios para obtener root (CVE-2014-0196) Persistencia del acceso T´ecnica de pivoting: escanear red interna ¡En la imaginaci´on (y en el contrato) est´a el l´ımite! Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  40. 40. ´Indice 1 Introducci´on 2 Hacking Drupal 3 Hardening Drupal 4 Live Demo 5 Conclusiones Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  41. 41. En resumen. . . Defensa en todas las capas Buenas pr´acticas Mucha documentaci´on, ¡no hay excusa! Buscar la proporcionalidad La importancia de la formaci´on Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  42. 42. En resumen. . . Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  43. 43. Referencias Linux Administrator’s Security Guide http://www.seifried.org/lasg Apache Security Tips http://httpd.apache.org/docs/current/misc/security tips.html PHP security manual http://php.net/manual/en/security.php Cracking Drupal http://www.crackingdrupal.com Writing secure code https://drupal.org/writing-secure-code Securing your site https://drupal.org/security/secure-configuration Ezequiel V´azquez De la calle Hacking & Hardening Drupal
  44. 44. Esto es todo, amigos... ¡Gracias! @RabbitLair ezequielvazq[at]gmail[dot]com Ezequiel V´azquez De la calle Hacking & Hardening Drupal

×