ADMINISTRACION DE REDES SECUENCIA DE COMANDOS EN SITIOS CRUZADOS(XSS)

Slides:



Advertisements
Presentaciones similares
Presentación – Web Attack
Advertisements

Escribir en un wiki. Insertar imágenes y enlaces
Introducción a la programación (Clase 2)
Curso de PHP Tema 5: Sesiones.
Internet y tecnologías web
Koldo Parra de la Horra 1 MANUAL DEL PUBLICADOR EN JOOMLA (9) Todo lo que necesitas saber para publicar tus artículos en la página Web del Centro Insertar.
Enlaces con variables en la URL en PHP Programación en Internet II.
Modelando aplicaciones
Errores comunes al desarrollar websites
OBJETO REQUEST. El objeto Request Por qué el objeto request Funcionamiento Colecciones: – Transferencia de variables por URL –Transferencia de variables.
Curso de PHP Tema 6: Seguridad.
José Antonio Rastoll Pérez Presentación PI. Índice 1. EL OBJETO SESSION Introducción. Propiedades. Funcionamiento. Variables de sesión, desventajas y.
TECNOLOGÍA IDC Internet Database Connector Trinitario Gómez López.
Controlde acceso mediante sesiones índice 1. Introducción 2. Comenzar sesión Control de acceso mediante sesiones 3. Estructura de página 4. Autentificación.
ADMINISTRACION DE REDES TEMA REDIRECCIONES Y REENVÍOS NO VALIDADOS
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
Desarrollo de sitios web con PHP y MySQL Tema 5: Sesiones José Mariano González Romano
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Ingeniero Anyelo Quintero
EL CORREO ELECTRONICO. Introducción : El correo electrónico es el servicio de Internet con más usuarios de todo el mundo. Con este servicio se pueden.
ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE GABRIEL ANDRES AGUIRRE JARAMILLO INSTITUTO TECNOLOGICO.
Ingeniero Anyelo Quintero
Almacenar variables en cookies en PHP
Los Diez Riesgos Más Importantes en Aplicaciones WEB Top A1-Inyección Oscar William Monsalve Luis Alberto Suarez Jorge Eliecer Betancur Diana Marcela.
The OWASP Foundation OWASP AppSec Aguascalientes 2010 Guía de Desarrollo Seguro Francisco Aldrete Miembro de OWASP capítulo Aguascalientes.
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
PHP TODO SOBRE PHP.
PROTOCOLO H T T P.
Ventajas y desventajas de enviar variables por el método GET
ATAQUES POR INYECCION DE CODIGO SQL
Publicación de bases de datos Access en la web
UD 1: “Adopción de pautas de seguridad informática” Análisis de las principales vulnerabilidades de un sistema informático. Luis Alfonso Sánchez Brazales.
introducción al lenguaje
Introducción al Lenguaje. ¿Qué es PHP? O Es un lenguaje de programación que es interpretado por un servidor web. O El lenguaje es genérico. PHP está orientado.
Sebastián Franco Henao
CREAR UNA WEB Documento extraído de Sector PC On Line
XSS CROSS SITE SCRIPTING Es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera parte.
Formularios La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con.
Introducción a ataques de tipo inyección: Inyección SQL
EDWIN ACOSTA PINILLA DIEGO FERNANDO CASTRO JHON SEBASTIAN CASTRO.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Servidor web Alumna: María Verónica Mancheno Materia: Gestión de Información Web Profesor: José Medina Moreira.
 Claudia Jordan Idrovo.  Son los puntos de enganche para cada conexión de red que realizamos. El protocolo TCP (el utilizado en internet) identifica.
EQUIPO:#3 GRUPO:304 NOMBRES: Lizbeth Nava Barón y Erick Ali Mejía.
S EGURIDAD Y A LTA D ISPONIBILIDAD Nombre: Adrián de la Torre López 24/09/ Adrián de la Torre López.
MANUAL DE USO DE WORDPRESS NOMBRE: GUIDO GONZALEZ FECHA: 28/03/2015. CURSO: 1RO BACHILLERATO “C”
Problemas Juridicos en Tecnologias de la Informacion Legislacion del Comercio Electronico Universidad Mundial.
Tema 6 – Servicio de Correo Electrónico
NOMBRES: Daniel Andrés Martínez Pérez Jhon Alejandro Carrizosa Ovalle Jaiver Giovanny Sánchez García CURSO: JORNADA: Tarde.
Ihr Logo PHP Parte 2 “php toma muchas sintaxis de lenguajes de alto nivel conocidos para poder trabajar”
File Transfer Protocol.
NOMBRE: KENIA MACÍAS. RECOMENDACIONES PARA HACER UN FORMULARIO En un sistema web, en muchas ocasiones es necesario obtener información del usuario y para.
Internet y sus servicios
Se producen cuando una aplicación recibe datos no confiables y estos no han sido validados adecuadamente antes de procesarlos, lo cual puede llevar a que.
Estructuras web De navegación Y Visual. Investigación de requerimientos ¿Qué es lo que quiere el cliente? – ¿Qué desea comunicar?, y ¿Cómo? – ¿Qué información.
Tema 11 Bases de Datos y el Lenguaje SQL
Realización de las tareas básicas de internet. ¿Qué es Internet? Podemos definir a Internet como una "red de redes", es decir, una red que no sólo interconecta.
Análisis de las principales vulnerabilidades de un sistema informático. Gabriel Montañés León.
Práctica Profesional PHP.
Secuencia de Comandos en Sitios Cruzados XSS
Manual PHP Básico Camilo Cartagena.
INTERFAZ DE ACCESS  Access es un sistema gestor de bases de datos relacionales (SGBD). Una base de datos suele definirse como un conjunto de información.
Introducción al Lenguaje. ¿Qué es PHP? O Es un lenguaje de programación que es interpretado por un servidor web. O El lenguaje es genérico. PHP está orientado.
Integrante: Mariana Alcalá Hdz María del Carmen Andrade G. Alondra E. García Mtz Joselyn Gpe García V. Antonio de Jesús Hdz R. Cristian Jesús Ruvalcaba.
A NÁLISIS DE LAS PRINCIPALES VULNERABILIDADES DE UN SISTEMA INFORMÁTICO Luis Villalta Márquez.
OWASP APPSEC RIO DE LA PLATA dcotelo13
Web y Multimedia II Integrantes: Piero Álvarez Mayra Atience Jhonney Bermeo Johanna Cabrera Gabriela Cango.
Errores de Servidor Primer nivel – Piramide SEO. Error 404 y 503 Hay dos tipos de errores comunes que podemos encontrarnos navegando por un sitio web,
Introducción a programación web Martin Esses. Formularios HTML se utilizan para pasar datos a un servidor. Un formulario HTML puede contener elementos.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
Transcripción de la presentación:

ADMINISTRACION DE REDES SECUENCIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE GABRIEL ANDRES AGUIRRE JARAMILLO INSTITUTO TECNOLOGICO METROPOLITANO ITM

Secuencias de comandos en sitios cruzados (XSS) . El XSS es básicamente el intentar explotar vulnerabilidades habitualmente en entornos web mediante la inyección de código. El término inyección de código, hace referencia al intentar hacer ejecutar un código ajeno dentro de otro programa. . XSS, del inglés Cross-Site Scripting es un tipo de inseguridad informática o agujero de seguridad basado en la explotación de vulnerabilidades del sistema de validación de HTML incrustado

Secuencias de comandos en sitios cruzados (XSS) XSS: Esta vulnerabilidad puede estar presente en 2 formas: Directa (Persistente): este tipo de XSS comúnmente filtrado, y consiste en embeber código HTML peligroso en sitios que lo permitan; incluyendo así etiquetas como <script> o <iframe>. Indirecta (Reflejada): este tipo de XSS consiste en modificar valores que la aplicación web utiliza para pasar variables entre dos páginas, sin usar sesiones y sucede cuando hay un mensaje o una ruta en la URL del navegador, en una cookie, o cualquier otra cabecera HTTP. Funciona localizando puntos débiles en la programación de los filtros de HTML si es que existen, para publicar contenido (como blogs, foros, etc.).

Secuencias de comandos en sitios cruzados (XSS) Normalmente el atacante tratara de insertar tags como <iframe>, o <script>, pero en caso de fallar, el atacante puede tratar de poner tags que casi siempre están permitidas y es poco conocida su capacidad de ejecutar código. De esta forma el atacante podría ejecutar código malicioso. Ejemplos: Una posibilidad es usar atributos que permiten ejecutar código. <BR SIZE="&{alert('XSS')}"> <FK STYLE="behavior: url (http://yoursite/xss.htc);"> <DIV STYLE="background-image: url (javascript:alert('XSS'))">   También se puede crear un DIV con background-image: url (javascript:eval(this.fu)) como estilo y añadir al DIV un campo llamado fu que contenga el código a ejecutar, por ejemplo: <div fu="alert('Hola mundo');" STYLE="background-image: url (javascript:eval(this.fu))">

Secuencias de comandos en sitios cruzados (XSS) XSS Indirecto (reflejado), supongamos que un sitio web tiene la siguiente forma: http://www.example.com/home.asp?frame=menu.asp y que al acceder se creará un documento HTML enlazando con un frame a menu.asp. En este ejemplo, ¿qué pasaría si se pone como URL del frame un código java script?: java script:while(1)alert("Este mensaje saldrá indefinidamente");

Secuencias de comandos en sitios cruzados (XSS) Si este enlace lo pone un atacante hacia una víctima, un visitante podrá verlo y verá que es del mismo dominio, suponiendo que no puede ser nada malo y de resultado tendrá un bucle infinito de mensajes. Un atacante en realidad trataría de colocar un script que robe las cookies de la víctima, para después poder personificarse como con su sesión, o hacer automático el proceso con el uso de la biblioteca cURL o alguna similar. De esta forma, al recibir la cookie, el atacante podría ejecutar acciones con los permisos de la víctima sin tan siquiera necesitar su contraseña. Otro uso común para estas vulnerabilidades es lograr hacer phishing, quiere ello decir que la víctima ve en la barra de direcciones un sitio, pero realmente está en otra. La víctima introduce su contraseña y se la envía al atacante.

Secuencias de comandos en sitios cruzados (XSS) Una página como la siguiente: error.php?error=Usuario%20Invalido, es probablemente vulnerable a XSS indirecto, ya que si escribe en el documento "Usuario Inválido", esto significa que un atacante podría insertar HTML y JavaScript si así lo desea. Por ejemplo, un tag como <script> que ejecute código java script, cree otra sesión bajo otro usuario y mande la sesión actual al atacante. Para probar vulnerabilidades de XSS en cookies, se puede modificar el contenido de una cookie de forma sencilla, usando el siguiente script. Sólo se debe colocar en la barra de direcciones, y presionar 'Enter'. javascript:void prompt("Introduce la cookie:",document.cookie).replace(/[^;]+/g,function(_) {document. cookie=_;});

Secuencia de comandos en sitios cruzados (XSS) En cuanto a las formas más comunes de efectuar ataques XSS, encontramos: SQL Injection Se puede utilizar esta técnica cuando se prevee que un campo dentro de una página interviene dentro de alguna consulta en la base de datos. A modo de ejemplo, si suponemos un escenario con una página de login, por ejemplo, gmail.com; es lógico pensar que cuando ponemos nuestro nombre de usuario (“usuario”) y contraseña (“contraseña”), el servidor tendrá que preguntar a la base de datos: SELECT identificador FROM usuarios WHERE username = 'usuario' AND password = 'contraseña’

SQL Injection En este escenario si no se comprueba que el nombre de usuario y la contraseña no sean sentencias SQL se podría escribir como contraseña password’ OR ‘x’='x’, con lo que la consulta a la base de datos sería: SELECT identificador FROM usuarios WHERE username = 'usuario' AND password = 'password' OR 'x'='x'

HTML Injection: Al igual que ocurre en el ataque anterior, se puede utilizar la inyección de código HTML cuando se prevee que el dato que se introduce en algún campo de un formulario o parámetro de la web será mostrado en la página resultado. A modo de ejemplo, la forma más básica de comprobar si un buscador es susceptible a XSS por inyección de HTML es introducir en la casilla del buscador: <strong>test</strong>

HTML Injection: Si el buscador muestra en la página de resultados algo así como: Resultados para <strong>test</strong>, no es probable que sea susceptible a este tipo de ataques, si por el contrario muestra resultados para test , es muy probable que el servidor sea susceptible a este tipo de ataques.

Eliminación de restricciones Básicamente, el ataque consiste en eliminar restricciones impuestas por la programación de una página web, siempre y cuando estas restricciones se lleven a cabo en el cliente. Es decir, se llevan a cabo en nuestro navegador.

Eliminación de restricciones Dentro de la formas de explotar esta vulnerabilidad se pueden encontrar dos tipos. Se puede modificar en “tiempo real” una página web, para por ejemplo sobrescribir una función de validación y siempre de un resultado positivo. O por otro lado, se puede capturar una petición válida al servidor, modificarla a nuestro gusto y volverla a enviar.

Eliminación de restricciones De esta forma el ejemplo anterior quedaría: SELECT identificador FROM usuarios WHERE username = ? AND password = ? Ahora sólo quedaría decir qué es cada uno de los parámetros, lo importante es que en esta operación se dice de qué tipo son los mismos, por lo que por ejemplo introducir un número cuando se espera una cadena daría error. En Java por poner un ejemplo, se realizaría con: preparedStatementObject.setString(1,"usuario"); preparedStatementObject.setString(2, "contraseña");

Servidores o Aplicaciones Web HTTPS no evita XSS. HTTPS es un protocolo que asegurará que la conexión entre el servidor y el cliente es segura, pero no asegura nada de los datos intercambiados. Filtrado de código HTML que se permite introducir por los usuarios. Esto es especialmente problemático en componentes encargados de los comentarios en un blog o foro. Se puede utilizar un pre-filtrado en código cliente (que será ejecutado en el navegador del usuario), pero sólo como medida adicional de prevención.

Servidores o Aplicaciones Web Evitar utilizar sólo parámetros que viajan con la página para autenticar un usuario. El ejemplo más típico es que aunque exista un parámetro &ID=[cadena de caracteres], eso sólo debe ser utilizado como media adicional En ocasiones sería recomendable comprobar el campo REFERER de la petición HTTP para saber de dónde viene una petición, pero también hay que tener en cuenta que es un campo opcional. Evitar filtrar por codificaciones, este ejemplo quizá parezca bastante absurdo, pero se dan casos donde por ejemplo se filtra un tag que contenga javascript, pero no se filtra jav[caracter x09]ascript y a efectos prácticos es lo mismo.

XSS, Cómo evitarlo? Bases de datos Evitar que se puedan ejecutar más de una sentencia SQL en un mismo comando. Utilización de Prepared Statements: ¿Y eso qué es? Básicamente el término prepared statement hace referencia a un tipo de consultas SQL que no se ejecutan concatenando cadenas de caracteres. El funcionamiento es primero construir el esqueleto de la sentencia SQL y luego decir qué parámetros van en cada punto.

A CONTINUACION LA PRUEBA, PASO A PASO

DEMOSTRACION 1

Código para atacar

Página ya atacada

DEMOSTRACION 2

Código para atacar

Página a atacar

Página ya atacada