Pedro Villena Fernández www.consultoriainnova.com
Seminario de
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
INDICE
1.- Introducción
2.- Principales ataques
Introduccion
Introducción
1.-Confidencialidad. Los datos solo podrán ser modificados por aquellas personas que tengan permiso para hacerlo.
Introducción
3.-Disponibilidad. Los datos deben estar disponibles y accesibles cuando se requiera el acceso a ellos.
Introducción
Introducción
Introducción
Introducción
Introduccion
Introducción
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
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
Introducción
OWASP TOP 10:
INDICE
1.- Introducción
2.- Principales ataques
Principales ataques
Principales ataques
Principales ataques que veremos:
– SQL Injection (y Blind SQL Injection)
– Cross-Site Scripting (XSS)
– Cross Site Request Forgeries (CSRF)
– Command Execution
– File inclusion
– File upload
Principales ataques
Principales ataques
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)
Principales ataques
Principales ataques
Se produce cuando se ejecutan consultas de SQL con datos recibidos del usuario, y estos no han sido procesados.
El objetivo principal es obtener todos los datos
posibles de la BDD, como por ejemplo contraseñas de los usuarios; o saltarse condicionales.
sql_query=
Principales ataques
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.
Si esto sucediera, es casi seguro que hay un SQL Injection en esa consulta
Principales ataques
Cosas que se suelen probar siempre:
1' OR 1=1--1' OR '1=1--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
Principales ataques
Principales ataques
¿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
Principales ataques
Principales ataques
El XSS (Cross-Site Scripting) consiste en ejecutar código HTML o Javascript en la página.
Desde hace poco tiempo los navegadores interceptan muchos estos ataques: Internet Explorer, Chrome o Firefox mediante No-Script.
buscar.php?d=Busqueda
Principales ataques
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
Principales ataques
¿Qué pasa si caemos en un XSS?
– Robo de sesión
– Phising
– Escaneo de puertos de intranet
Principales ataques
Principales ataques
¿Cómo solucionar este problema?
– Eliminando todas las etiquetas html, con funciones
como strip_tags
– Parseando los elementos html, y pasandolos a
Principales ataques
Principales ataques
Muchos sitios webs realizan acciones mediante
llamadas a URL. Aquí es donde se podría ejecutar un CSRF (Cross-Site Request Forgery)
Si enviamos esta URL a una víctima y hace clic en ese enlace, estará cambiando la contraseña sin ser consciente de ello.
Principales ataques
Para poder realizar este ataque, tenemos que
comprobar que los parámetros se puedan recibir por medio de GET.
Principales ataques
¿Cómo solucionar este problema?
– Insertando un token en el formulario, para que
vaya cambiando y no sea siempre el mismo.
Principales ataques
Principales ataques
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:
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
<?php
Principales ataques
Principales ataques
Algunas de las funciones que más posibilidades tiene de sufrir Command execution son:
Habría que utilizar operadores como “&” o “|” para lanzar un segundo comando.
exec() passthru() shell_exec()
Principales ataques
¿Cómo solucionar este problema?
– Validando los datos.
– Limitando los caracteres
Principales ataques
FILE
Principales ataques
Este ataque se da cuando incluimos ficheros
ejecutables directamente por URL o por POST.
Se pueden distinguir dos tipos:
– LFI (Local File Inclusion): Incluyendo ficheros del
propio servidor.
– RFI (Remote File Inclusion): Incluyendo ficheros
de otro servidor.
Principales ataques
Principales ataques
Principales ataques
¿Cómo solucionar este problema?
– Comprobando que el archivo sea local y exista en
nuestro servidor.
– Eliminando caracteres como “.” y “/”.
Principales ataques
Principales ataques
Consiste en engañar al sistema para subir un archivo distinto al esperado, o subirlo en una ruta totalmente diferente.
Si se consigue la capacidad de subir ficheros, lo normal es subir una web shell como la C99.
Principales ataques
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
Principales ataques
¿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
Principales ataques
Principales ataques
Consiste en probar millones de contraseñas hasta dar con la contraseña que buscamos.
Principales ataques
Principales ataques
¿Cómo realizar un bruteforce?
Principales ataques
¿Cómo solucionar este problema?
– Mostrando un captcha después de X intentos
– Bloqueando la IP después de fallar X veces
INDICE
1.- Introducción
2.- Principales ataques
Fingerprinting
Fingerprinting
Buscaremos los siguientes datos:
– ¿Qué aplicaciones web corren?
– ¿Y en qué versiones?
– ¿Hay rutas o archivos que pudieran considerarse
como sensibles?
Fingerprinting
Identificando el servidor web
– Mediante las cabeceras que devuelve (utilizando
Fingerprinting
Identificando el servidor web
– Mediante los errores que se devuelven. Muchas
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
Fingerprinting
Obteniendo el tipo de aplicación:
– Mirando el código html. La mayoría de los CMS o
Fingerprinting
Obteniendo el tipo de aplicación:
– Mirando la estructura de carpetas. Teniendo un
poco de conocimientos sobre plataformas
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
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.
Introduccion
¿Por qué ocultar
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.