Seminario de SEGURIDAD WEB. Pedro Villena Fernández www.consultoriainnova.com



Documentos relacionados
Detectar y solucionar infecciones en un sitio web

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

RETO HACKER DE VERANO

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

DOCENTES FORMADORES UGEL 03 PRIMARIA

Pentesting con OWASP Zed Attack Proxy

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

MANUAL COPIAS DE SEGURIDAD

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

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

LA INTRANET -Manual general-

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

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

Desarrollo seguro en Drupal. Ezequiel Vázquez De la calle

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

Curso de PHP con MySQL Gratis

La inmensa mayoría de las páginas son vulnerables, a unos u otros fallos.

CASO PRÁCTICO. CASOS PRÁCTICOS Internet (CP15 y CP16)

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS

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

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

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

Software Criptográfico FNMT-RCM

Ataques XSS en Aplicaciones Web

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Quienes somos. Eduardo Arriols Roberto Lopez

INTRODUCCIÓN A LA SEGURIDAD EN SISTEMAS Y WEBS

SIEWEB. La intranet corporativa de SIE

Toda base de datos relacional se basa en dos objetos

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

Sitios remotos. Configurar un Sitio Remoto

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

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Internet Information Server

CONFEDERACIÓN DE EMPRESARIOS DE MÁLAGA

Correo Electrónico: Webmail: Horde 3.1.1

WINDOWS : TERMINAL SERVER

Studium, Campus Virtual de la Universidad de Salamanca.

Práctica 6 - Página Web

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

Cómo tener tu Tumblr con un domino propio

Índice. 1. Introducción al XSS. 2. Taller Práctico Explotando la Vulnerabilidad. 3. Robo de cookies Uso de estas. 4. Arreglando la vulnerabilidad.

Aplicaciones seguras con ClaseSeguridad

Guía de Inicio Respaldo Cloud

UNIDAD DIDÁCTICA Nº 7 USO DE LOS RECURSOS EN MOODLE

Manual del Usuario. Portal Web Para uso exclusivo de Ministros de Estado.

DESARROLLA TU BLOG O PÁGINA

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

LiLa Portal Guía para profesores

PDF created with pdffactory Pro trial version

Hostaliawhitepapers. Usar Plesk para, poner en marcha nuestro dominio.

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

GUÍA PARA LA INSTALACIÓN Y USO DE WORDPRESS BY MASTERHACKS. Guía de instalación y uso de Wordpress Página 1

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Recomendaciones de Seguridad Red Social Twitter

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

Presentaciones compartidas con Google Docs (tutorial)

MANUAL DE INICIACIÓN A JOVELLANOS VIRTUAL J. A. Espejo coordinador.tic@iesjovellanos.org 1

FOROS. Manual de Usuario

Manual de Panel de Control de Hosting Compartido

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Para instalar el software FacturaScripts, primero deberemos descargarlo. Para ello, accedemos a la url:

APÉNDICE E: MANUAL DE USUARIO PARA EL SISTEMA DE MONITOREO DE REDES LAN.

Crear un servidor Web en IIS

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

Manual de usuario de IBAI BackupRemoto

Gobierno Electrónico ANEXOS ANEXO A: INSTALACIÓN, CONFIGURACIÓN Y ACTUALIZACIÓN DE JOOMLA, MÓDULOS Y COMPONENTES. Alexandra Paola Guerrero Chuquín

Es un entorno de desarrollo web que nos va a permitir tener nuestro propio servidor o host local (instalado en nuestro ordenador).

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

MANUAL DE USUARIO CMS- PLONE

El ejemplo de wiki más conocido es la enciclopedia universal colaborativa wikipedia.

Tenemos que instalar los programas de los usuarios también (los anteriormente mencionados) y los siguientes que vamos a nombrar.

Creación y administración de grupos locales

GUÍA BÁSICA USUARIO MOODLE 2.6

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

Manual de usuario investigador

10. El entorno de publicación web (Publiweb)

Metasploit framework, al igual que nessus, su versión paga es mucho más informática que la gratuita.

Guía Rápida de Inicio

Offensive State Auditoría de Aplicaciones Web

CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Preguntas más frecuentes

MANUAL DE INSTALACIÓN Y CONFIGURACIÓN

RETO FORENSE EPISODIO III Resumen Ejecutivo

Luis Omar Decena Gómez Mat.: Sistema Operativo 2. Prof.: José Doñe. < Crear un Servidor IIS en Windows 2003 Server>.

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

Seguridad en Sitios Web de Alto Tráfico. Ing. Enrique Hurtarte Juárez

(Certificado de Empresa): guía para las empresas

Manual de usuario de Windows Live Writer

Programa de gestión Normativa y Requisitos Legales

Servidor web E-Sniper

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Manual de instalación Actualizador masivo de Stocks y Precios

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

INSTALACIÓN DE SIESTTA 2.0 EN UN HOSTING (Ejemplo para Guebs.com)

Transcripción:

Seminario de SEGURIDAD WEB Pedro Villena Fernández www.consultoriainnova.com

Algunas cosas antes de empezar... Este seminario NO tiene la intención de piratear otras webs. Los ataques que aprenderemos NO deben probarse en aplicaciones webs que no son nuestras. La única finalidad es aprender los fallos que se pueden dar para evitarlos.

INDICE 1.- Introducción 2.- 3.- Fingerprinting y exploits

Introduccion Qué es necesario para que un sitio sea seguro?

Introducción 1.-Confidencialidad. Los datos solo podrán ser modificados por aquellas personas que tengan permiso para hacerlo. 2.-Integridad. Los datos se deben mantener sin modificar, como se dejaron en su origen.

Introducción 3.-Disponibilidad. Los datos deben estar disponibles y accesibles cuando se requiera el acceso a ellos. 4.-Autenticidad. Los datos deben ser de la persona que los creo y no ser modificados. Va ligado a la integridad.

Introducción Por qué se atacan webs?

Introducción Robar información sensible

Introducción Defacement (fama)

Introducción Implantar Malware: sirven para infectar a victimas que visitan la web y crear botnets (redes zombies)

Introduccion Quién protege ante estos ataques?

Introducción OWASP http://www.owasp.org/

Introducción Open Web Application Application Security Project Sin fines de lucro, organización de voluntarios Promueve el desarrollo de software seguro Orientada a la prestación de servicios orientados a la Web Se centra principalmente en el "back-end" mas que en cuestiones de diseño web Un foro abierto para el debate Un recurso gratuito para cualquier equipo de desarrollo de software

Introducción Open Web Application Application Security Project Materiales de Educación OWASP Top 10 Guía de Desarrollo OWASP Guía de Testing OWASP Guía OWASP para aplicaciones Web Seguras Muchos mas Software WebGoat WebScarab ESAPI

Introducción OWASP TOP 10: https://www.owasp.org/index.php/top_10_2013-top_10

INDICE 1.- Introducción 2.- 3.- Fingerprinting y exploits

Top de fallos registrados según OWASP

que veremos: SQL Injection (y Blind SQL Injection) Cross-Site Scripting (XSS) Cross Site Request Forgeries (CSRF) Command Execution File inclusion File upload Brute Force

Para hacer las pruebas utilizaremos DVWA

DVWA (Damn Vulnerable Web App) es un sitio web que tiene las principales vulnerabilidades. Tiene 3 niveles de seguridad, desde LOW (lo que nunca se debe hacer), hasta HIGHT (la implementación segura del código) Existen otras alternativas como por ejemplo Webgoat (de OWASP) y Web for Pentester

SQL INJECTION

Se produce cuando se ejecutan consultas de SQL con datos recibidos del usuario, y estos no han sido procesados. sql_query= SELECT * FROM users WHERE username = '". $usuario. "' AND userpass = '". $password. "'"; El objetivo principal es obtener todos los datos posibles de la BDD, como por ejemplo contraseñas de los usuarios; o saltarse condicionales.

Un truco que se suele utilizar, siempre que no sea Blind SQL Injection (a ciegas), es poner el símbolo ' o en los campos, y ver si devuelve error. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1 Si esto sucediera, es casi seguro que hay un SQL Injection en esa consulta

Cosas que se suelen probar siempre: 1' OR 1=1-1' OR '1' = '1 ' '' ') or ('a'='a ") or ("a"="a or a=a-admin'-' or 0=0 -" or 0=0 -or 0=0 -' or 'x'='x " or "x"="x ') or ('x'='x SELECT * FROM users WHERE username = 'admin' -- AND userpass = 'password'

Con lo que obtenemos:

Cómo solucionar este problema? Si esperamos un entero, hacer casting hacia ese tipo. Utilizando funciones como addclashes (de php) Utilizando funciones del framework que utilicemos (los ORM también implementan la seguridad para evitar esto)

XSS

El XSS (Cross-Site Scripting) consiste en ejecutar código HTML o Javascript en la página. buscar.php?d=busqueda buscar.php?d=<script type="text/javascript">scriptaqui();</script> Desde hace poco tiempo los navegadores interceptan muchos estos ataques: Internet Explorer, Chrome o Firefox mediante No-Script.

Suelen existir dos tipos de XSS: XSS persistente: se guardan en BDD o archivos, como por ejemplo en un nombre de usuario o mensaje de un foro. XSS reflejado: el XSS suele estar incrustado en la URL, y normalmente si el usuario entra directamente se saltaría el XSS.

Qué pasa si caemos en un XSS? Robo de sesión Phising Escaneo de puertos de intranet Fallos de navegador

Explotando un XSS

Cómo solucionar este problema? Eliminando todas las etiquetas html, con funciones como strip_tags Parseando los elementos html, y pasandolos a códigos no ejecutables (con htmlentities)

CSRF

Muchos sitios webs realizan acciones mediante llamadas a URL. Aquí es donde se podría ejecutar un CSRF (Cross-Site Request Forgery) csrf/?password_new=tales&password_conf=tales&change=change Si enviamos esta URL a una víctima y hace clic en ese enlace, estará cambiando la contraseña sin ser consciente de ello.

Para poder realizar este ataque, tenemos que comprobar que los parámetros se puedan recibir por medio de GET. En un principio se pueden enviar por POST, pero quizás también se acepten por GET.

Cómo solucionar este problema? Insertando un token en el formulario, para que vaya cambiando y no sea siempre el mismo. Aceptando parámetros solo por post.

COMMAND EXECUTION

Hay veces que las páginas web tienen que acceder a comandos del sistema, y necesitan obtener algún parámetro por parte del usuario: <?php $host=$_get['host']; system("ping ".$host);?> En el ejemplo anterior vamos a hacer un ping a una IP, pero como no se ha parseado correctamente la llamada, podemos poner un && ls y nos devolverá el directorio de ficheros.

Con lo que obtenemos:

Algunas de las funciones que más posibilidades tiene de sufrir Command execution son: exec() passthru() shell_exec() system() Habría que utilizar operadores como & o para lanzar un segundo comando.

Cómo solucionar este problema? Validando los datos. Limitando los caracteres Restringir el uso de operadores &,, etc

FILE INCLUSION

Este ataque se da cuando incluimos ficheros ejecutables directamente por URL o por POST. http://sitiovulnerable.com/menu.php?seccion=usuarios.php Se pueden distinguir dos tipos: LFI (Local File Inclusion): Incluyendo ficheros del propio servidor. RFI (Remote File Inclusion): Incluyendo ficheros de otro servidor.

Cuando se realiza LFI, es normal coger archivos de configuración o el archivo htpasswd del sistema (si es UNIX).

Cuando se realiza RFI, lo normal es incluir alguna web shell como la C99, para así ganar control sobre el sistema.

Cómo solucionar este problema? Comprobando que el archivo sea local y exista en nuestro servidor. Eliminando caracteres como. y /. Eliminando cualquier carácter extraño.

FILE UPLOAD

Consiste en engañar al sistema para subir un archivo distinto al esperado, o subirlo en una ruta totalmente diferente. $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/"; $target_path = $target_path. basename( $_FILES['uploaded']['name']); move_uploaded_file($_files['uploaded']['tmp_name'], $target_path); Si se consigue la capacidad de subir ficheros, lo normal es subir una web shell como la C99.

Si esto se consigue, el atacante tendrá acceso directo al sistema. Si se consigue cambiar la ruta de subida de ficheros, pero no se pueden subir archivos ejecutables (por ejemplo únicamente podemos poenr imágenes), se suelen hacer DEFACES.

Cómo solucionar este problema? Comprobando además de la extensión del fichero, su tipo (ya que se puede saltar esa comprobación) Filtrando que el nombre de fichero no tenga.. ni /, u otros simbolos parecidos.

BRUTE FORCE

Consiste en probar millones de contraseñas hasta dar con la contraseña que buscamos. En la práctica este ataque no suele tener mucha efectividad, ya que la velocidad para realizarlo (online) es muy baja, siendo únicamente rentable utilizar un diccionario (contraseñas más utilizadas).

Contraseñas mas útilizadas:

Cómo realizar un bruteforce? Con FireForce, extensión de Firefox

Cómo solucionar este problema? Mostrando un captcha después de X intentos Bloqueando la IP después de fallar X veces Poniendo tokens en el formulario

INDICE 1.- Introducción 2.- 3.- Fingerprinting y exploits

Fingerprinting El fingerprinting es el primer paso que se realiza al probar un servidor web y busca recopilar la mayor cantidad de información posible.

Fingerprinting Buscaremos los siguientes datos: Qué aplicaciones web corren? Y en qué versiones? Hay rutas o archivos que pudieran considerarse como sensibles? Sobre qué servidor trabaja?

Fingerprinting Identificando el servidor web Mediante las cabeceras que devuelve (utilizando extensiones como Firefox Live HTTP Headers )

Fingerprinting Identificando el servidor web Mediante los errores que se devuelven. Muchas veces las páginas de error contienen la versión del servidor.

Fingerprinting Identificando el servidor web Cuidado! Esta información se puede engañar para mostrar resultados erróneos: Se pueden modificar las cabeceras para poner que un Apache es en realidad un IIS Se pueden cambiar las páginas de error por las de otro servidor.

Fingerprinting Obteniendo el tipo de aplicación: Mirando el código html. La mayoría de los CMS o aplicaciones webs suelen tener una etiqueta meta con el nombre, o un comentario indicandolo al pie de página.

Fingerprinting Obteniendo el tipo de aplicación: Mirando la estructura de carpetas. Teniendo un poco de conocimientos sobre plataformas comúnes, podremos identificarla por la carpeta en la que se guarden los css, imágenes o componentes.

Fingerprinting Obteniendo el tipo de aplicación: Probando a buscar el backend, ya que suele tener el logotipo de la plataforma: /administrator /admin /wp-admin /administrador..

Fingerprinting Una vez que se sepa la plataforma, hay que averiguar la versión. Podemos ir mirando el checksum (md5 de archivos) que se suelen modificar a lo largo de versiones. Se suele hacer una base de datos con estos md5 para agilizar el proceso. Ejemplo: blindelephant (python)

Fingerprinting

Introduccion Por qué ocultar la versión y la plataforma?

Fingerprinting Existen númerosas vulnerabilidades en las aplicaciones sin actualizar. Muchas veces, aunque la plataforma este actualizada, salen fallos y tardan varios dias en solucionarse. Siempre que sea posible lo recomendable es actualizar siempre que sea posible.

Fingerprinting

Preguntas, dudas, sugerencias?