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
1. Hacking & Hardening Drupal
Ezequiel V´azquez De la calle (@RabbitLair)
Ezequiel V´azquez De la calle Hacking & Hardening Drupal
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. ´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. ´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. 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. Seguridad
Pilares de la seguridad
Confidencialidad
Integridad
Disponibilidad
Autenticaci´on
Ezequiel V´azquez De la calle Hacking & Hardening Drupal
11. ¿Por qu´e en profundidad?
El Abismo de Helm era inexpugnable. . .
Ezequiel V´azquez De la calle Hacking & Hardening Drupal
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. 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. 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. 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. 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. 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. 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. 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. 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. ´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. 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. Cross Site Scripting
En Drupal. . .
Ezequiel V´azquez De la calle Hacking & Hardening Drupal
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
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. 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. 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. 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. 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. 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. 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. ´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. 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. 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. Un vector de ataque simple
¡Demo time!
Ezequiel V´azquez De la calle Hacking & Hardening Drupal
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. ´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. 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. En resumen. . .
Ezequiel V´azquez De la calle Hacking & Hardening Drupal
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. Esto es todo, amigos...
¡Gracias!
@RabbitLair
ezequielvazq[at]gmail[dot]com
Ezequiel V´azquez De la calle Hacking & Hardening Drupal