Top Banner
Hacking & Hardening Drupal Ezequiel V´ azquez De la calle (@RabbitLair) Ezequiel V´ azquez De la calle Hacking & Hardening Drupal
44

Hacking & Hardening Drupal

Jul 26, 2015

Download

Technology

zekivazquez
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hacking & Hardening Drupal

Hacking & Hardening Drupal

Ezequiel Vazquez De la calle (@RabbitLair)

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 2: 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

Page 3: 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

Page 4: 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

Page 5: 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

Page 6: Hacking & Hardening Drupal

Seguridad

Pilares de la seguridad

Confidencialidad

Integridad

Disponibilidad

Autenticacion

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 7: 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

Page 8: Hacking & Hardening Drupal

Servidor

Arquitectura mas comun para Drupal

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 9: Hacking & Hardening Drupal

Vulnerabilidades

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 10: Hacking & Hardening Drupal

Seguridad en profundidad

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 11: Hacking & Hardening Drupal

¿Por que en profundidad?

El Abismo de Helm era inexpugnable. . .

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 12: 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

Page 13: 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

Page 14: 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

Page 15: 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

Page 16: 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

Page 17: 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

Page 18: 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

Page 19: Hacking & Hardening Drupal

Gestion de errores

Exposicion de codigos y textos de error

Exposicion de trazas

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 20: 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

Page 21: 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

Page 22: 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

Page 23: Hacking & Hardening Drupal

Cross Site Scripting

En Drupal. . .

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 24: Hacking & Hardening Drupal

Cross Site Scripting

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 25: Hacking & Hardening Drupal

Cross Site Scripting

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 26: 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

Page 27: Hacking & Hardening Drupal

SQL Injection

En Drupal. . .

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 28: 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

Page 29: 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

Page 30: 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

Page 31: 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

Page 32: 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

Page 33: 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

Page 34: 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

Page 35: 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

Page 36: 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

Page 37: 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

Page 38: Hacking & Hardening Drupal

Un vector de ataque simple

¡Demo time!

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 39: 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

Page 40: 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

Page 41: 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

Page 42: Hacking & Hardening Drupal

En resumen. . .

Ezequiel Vazquez De la calle Hacking & Hardening Drupal

Page 43: 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

Page 44: Hacking & Hardening Drupal

Esto es todo, amigos...

¡Gracias!

@RabbitLairezequielvazq[at]gmail[dot]com

Ezequiel Vazquez De la calle Hacking & Hardening Drupal