Hacking & Hardening Drupal Ezequiel V´ azquez De la calle (@RabbitLair) Ezequiel V´ azquez De la calle Hacking & Hardening Drupal
Hacking & Hardening Drupal
Ezequiel Vazquez De la calle (@RabbitLair)
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Sobre mi
Estudios
Ingeniero Tecnico en Informatica - UCA
Master en Ingenierıa del Software - US
Master en Seguridad de las TIC - US
Experiencia
5+ anos como desarrollador web, 3+ en Drupal
Actualmente: DevOps Drupal
Seguridad, GNU/Linux, Python, Node.JS. . .
Aficiones
Rock’n’Roll (guitarra electrica) y videojuegos
Narrativa fantastica, rol, cine, cerveza. . .
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Introduccion
¿Y esto de que va?
CMS escrito en PHP
Extensible mediantemodulos y temas
Arquitectura LAMP
Software libre (GPL)
Actualmente, Drupal 7
Lo mejor: La comunidad
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Seguridad
Pilares de la seguridad
Confidencialidad
Integridad
Disponibilidad
Autenticacion
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Seguridad
Principios basicos
Mınimo privilegio
Mınima exposicion
Eslabon mas debil
Proporcionalidad
Seguridad en profundidad
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
¿Por que en profundidad?
El Abismo de Helm era inexpugnable. . .
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Recogida de informacion
Hacking con buscadores (fichero robots.txt)
“Fingerprint” de servidor, framework, versiones. . .
Crawlers, spiders, robots. . .
Herramientas automaticas: Burp, ZAP, Nikto2
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Pruebas sobre configuracion
Metodos HTTP permitidos (PUT, DELETE, TRACE)
Gestion de extensiones
Configuracion de plataforma (Apache, PHP, MySQL. . . )
Revisar backups en el arbol web (*.sql, *.bak. . . )
Escaner de puertos (Nmap)
Firewall/IDS/Web Application Firewall
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Gestion de identidad y autorizacion
Definicion de roles (filtros de entrada, permisos asignados)
Enumeracion de cuentas de usuario (modulo views)
Ataques de fuerza bruta (Hydra, modulos de Captcha)
Referencias inseguras (cambiar [nid] en /node/[nid])
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Autenticacion
Credenciales por canal inseguro (MitM, modulo securepages)
Polıtica de contrasenas debil (modulo password policy)
Recordar contrasenas: ¿se vuelve a enviar la pass?
Sistema de autenticacion (Drupal Ok, pero ¿modificado?)
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Gestion de la sesion
Duracion de la sesion (session expire y autologoff )
Gestion de cookies (cifrado, atributos httpOnly y Secure)
Robo de cookie de sesion = Robo de identidad
Cross Site Request Forgery (no solo forms)
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Validacion de datos de entrada
Cross Site Scripting
SQL injection
Polucion de parametros HTTP
Inyeccion de codigo
Subida de ficheros
En Drupal:
filter xssdb querycheck plaincheck markupcheck url
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Gestion de errores
Exposicion de codigos y textos de error
Exposicion de trazas
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Mas testing. . .
Criptografıa debil
Heartbleed
Errores en logica de negocio
Tests en lado de cliente
No solo web. . .
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Cross Site Scripting
¿Que es?
Ejecucion de codigo Javascript
Reflejado o almacenado
Ataca al cliente: robo de cookies, descarga de malware. . .
¡La mas comun en Drupal!
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
SQL Injection
¿Que es?
Modificacion de consultas a base de datos
Basico, blind o time based
Ataca al servidor: extrae informacion, o la modifica
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Cross Site Request Forgery
¿Que es?
Hacer que usuario pida URL sin que lo sepa
Peticion a un formulario con parametros GET
Eliminar nodos, cambiar contrasena. . .
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Cross Site Request Forgery
En Drupal. . .
Utilizar siempre la Forms API
drupal valid token para envıos GET
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Hijacking de sesion
¿Que es?
Robo de cookies para suplantar a un usuario identificado
Drupal se encarga de la gestion de la sesion
Mejor practica: utilizar SSL en todo el portal
Certificado valido, modulo securepages
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Bypass de autorizacion
¿Que es?
Usuario accede a URLs osecciones no permitidas
En Drupal. . .
Controlado mediante elsistema de menu, roles ypermisos
Mejor practica:Mınimo privilegio posible
Granularizar permisos tantocomo sea necesario
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Referencias inseguras
¿Que es?
Acceder a contenido para el cual no se tiene permiso
Permisos definidos, pero ¿se comprueban?
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Referencias inseguras
Prevencion
Comprobar permisos: user access
Comprobar acceso a contenido: node access
En consultas SQL: $select→addtag(’node access’);
Utilizar la Forms API
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Securizar la configuracion
Instalacion segura
Modulo security review
Modulo paranoia
Modulo update
Modulo password policy
Limitar duracion de sesion
Permisos “administer . . . ”
¡Ojo con los filtros de entrada!
Desactivar y eliminar modulo php
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Un vector de ataque simple
Deteccion de XSS almacenado (filtro “Full HTML”)
Inyectar JS que envıa cookies a atacante (SOP, httpOnly)
Atacante inyecta cookie en su navegador
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Un vector de ataque simple
Activacion de modulo “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 Vazquez De la calle Hacking & Hardening Drupal
Un vector de ataque simple
A partir de aquı. . .
Escalado de privilegios para obtener root (CVE-2014-0196)
Persistencia del acceso
Tecnica de pivoting : escanear red interna
¡En la imaginacion (y en el contrato) esta el lımite!
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
En resumen. . .
Defensa en todas las capas
Buenas practicas
Mucha documentacion, ¡no hay excusa!
Buscar la proporcionalidad
La importancia de la formacion
Ezequiel Vazquez De la calle Hacking & Hardening Drupal
Referencias
Linux Administrator’s Security Guidehttp://www.seifried.org/lasg
Apache Security Tipshttp://httpd.apache.org/docs/current/misc/security tips.html
PHP security manualhttp://php.net/manual/en/security.php
Cracking Drupalhttp://www.crackingdrupal.com
Writing secure codehttps://drupal.org/writing-secure-code
Securing your sitehttps://drupal.org/security/secure-configuration
Ezequiel Vazquez De la calle Hacking & Hardening Drupal