Upload
zekivazquez
View
564
Download
0
Embed Size (px)
Citation preview
Seguridad en Drupal
Zequi Vazquez
Zequi Vazquez @RabbitLair Seguridad en Drupal
Sobre mi
¿Y quien es este tıo?
Zequi Vazquez
DevOps & Backend
Estudiante de doctorado
Hacking & Seguridad
Rock’n’Roll
Videojuegos & Libros
¡Cerveza!
Zequi Vazquez @RabbitLair Seguridad en Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Zequi Vazquez @RabbitLair Seguridad en Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Zequi Vazquez @RabbitLair Seguridad en Drupal
Introduccion
¿Esto de que va?
CMS escrito en PHP
Extensible mediantemodulos y temas
Software libre (GPL)
Actualmente, Drupal 7
Lo mejor: La comunidad
Equipo de seguridad
Zequi Vazquez @RabbitLair Seguridad en Drupal
Seguridad
Pilares de la seguridad
Confidencialidad
Integridad
Disponibilidad
Autenticacion
Zequi Vazquez @RabbitLair Seguridad en Drupal
Vulnerabilidades
Zequi Vazquez @RabbitLair Seguridad en Drupal
Seguridad en profundidad
El Abismo de Helm era inexpugnable. . .
Zequi Vazquez @RabbitLair Seguridad en Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Zequi Vazquez @RabbitLair Seguridad en Drupal
Recogida de informacion
Hacking con buscadores (fichero robots.txt)
“Fingerprint” de servidor, framework, versiones. . .
Crawlers, spiders, robots. . .
Herramientas automaticas: Burp, ZAP, Nikto2
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en 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])
Zequi Vazquez @RabbitLair Seguridad en 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?)
Zequi Vazquez @RabbitLair Seguridad en 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)
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en Drupal
Gestion de errores
Exposicion de codigos y textos de error
Exposicion de trazas
Zequi Vazquez @RabbitLair Seguridad en Drupal
Mas testing. . .
Criptografıa debil
Heartbleed
Errores en logica de negocio
Tests en lado de cliente
No solo web. . .
Zequi Vazquez @RabbitLair Seguridad en Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Zequi Vazquez @RabbitLair Seguridad en 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!
Zequi Vazquez @RabbitLair Seguridad en Drupal
Cross Site Scripting
En Drupal. . .
Zequi Vazquez @RabbitLair Seguridad en Drupal
Cross Site Scripting
Zequi Vazquez @RabbitLair Seguridad en Drupal
Cross Site Scripting
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en Drupal
SQL Injection
En Drupal. . .
Zequi Vazquez @RabbitLair Seguridad en 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. . .
Zequi Vazquez @RabbitLair Seguridad en Drupal
Cross Site Request Forgery
En Drupal. . .
Utilizar siempre la Forms API
drupal valid token para envıos GET
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en Drupal
Referencias inseguras
¿Que es?
Acceder a contenido para el cual no se tiene permiso
Permisos definidos, pero ¿se comprueban?
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en 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)
Zequi Vazquez @RabbitLair Seguridad en Drupal
Un vector de ataque simple
¡Demo time!
Zequi Vazquez @RabbitLair Seguridad en Drupal
Un vector de ataque simple
¡Vamos a palmar!
Escalado de privilegios para obtener root
Persistencia del acceso
Tecnica de pivoting : escanear red interna
¡En la imaginacion (y en el contrato) esta el lımite!
Zequi Vazquez @RabbitLair Seguridad en Drupal
Indice
1 Introduccion
2 Hacking Drupal
3 Hardening Drupal
4 Live Demo
5 Conclusiones
Zequi Vazquez @RabbitLair Seguridad en Drupal
En resumen. . .
Defensa en todas las capas
Buenas practicas
Mucha documentacion, ¡no hay excusa!
Buscar la proporcionalidad
La importancia de la formacion
Zequi Vazquez @RabbitLair Seguridad en Drupal
En resumen. . .
Zequi Vazquez @RabbitLair Seguridad en 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
Zequi Vazquez @RabbitLair Seguridad en Drupal
Esto es todo, amigos...
¡Gracias!
@RabbitLairezequielvazq[at]gmail[dot]com
Zequi Vazquez @RabbitLair Seguridad en Drupal