SlideShare una empresa de Scribd logo
1 de 30
ACK Security
Group
LOS 7 PECADOS DEL DESARROLO WEB
&
TENTACIÓN DEL USUARIOS EN APLICACIONES MOVILES
Ing. Elvin Vidal Mollinedo Mencia
¿Quien sºoy?
“Profesional de seguridad
+ 9 años de experiencia en desarrollo seguro e infraestructura de telecomunicaciones,
manejando de normativas CISA(COBIT), SOX(Ley Sarbanes Oxley), pentesting web,
pentesting WI FI y electronica (hardware libre)”
emollinedo@it-rational.com
www.it-rational.com
Pecado I: Inyección
Una inyección ocurre cuando los datos no
validados (ni confiables) son enviados a un
interprete como parte de un comando o consulta.
Los datos hostiles del atacante pueden engañar al
interprete, ejecutar comandos, o acceder datos
no autorizados
El atacante puede:
- Descargar BD completas
- Añadir o eliminar información a la BD
- Ejecutar comandos de SO
- Comprometer la BD o el servidor
Solicitud numérica (cliente)
http://www.foo.bar/ver_productos.XXX?id= 1 or 1=1
Aplicación (servidor)
select * from productos where prod_id = X
Solicitud alfanumérica (cliente)
http://www.foo.bar/ver_productos.XXX?nombre= nada’ or ‘a’=‘a
Aplicación (servidor)
select * from productos where prod_nombre = ‘ X’
Inyecciones
INICIO DE SESION
Usuario:
Password:
Ingresar
admin'--
no importa
Código que genera el Query
sql = “SELECT * FROM usuarios
WHERE usuario = ‘” + usuario +
“’ and clave = ‘” + clave + “’”
Así se interpreta el query por el motor de BD
SELECT * FROM usuarios WHERE
usuario = ‘admin’--’ and clave
= ‘no importa’
Este es un ejemplo de la vida real de un sitio que recibía pagos por tarjeta de crédito.
Si alguien se pregunta si esto tan grave puede ser real pues...
Inyección
INICIO DE SESION
Usuario:
Password:
Ingresar
’UNION/**/..
no importa
Código que genera el Query
sql = “SELECT * FROM usuarios
WHERE usuario = ‘” + usuario +
“’ and clave = ‘” + clave + “’”
Así se interpreta el query por el motor de BD
SELECT * FROM usuarios WHERE
usuario = ‘’ UNION SELECT
CAST(usuario as int),version(),1,1,1
FROM usuarios
WHERE usuario > ‘a’--’ and
clave = ‘no importa’
Este es un ejemplo de la vida real de un sitio que recibía pagos por tarjeta de crédito.
'UNION/**/SELECT/**/
CAST(usuario/**/as/**/int),
Version(),1,1,1/**/
FROM/**/usuarios/**/
WHERE/**/usuario/**/>/**/‘a
'--
OS Command Injection (OSi)
Ejecución de comandos con información brindada por el “usuario”
https://misitioinseguro.com/generarpdf.php?nombre=miinfo;
cat /etc/passwd > /var/www/passwd
Así se interpreta el comando al ejecutarse
generarpdf reporte.html miinfo;
cat /etc/passwd > /var/www/passwd.pdf
El comando generarpdf genera un archivo PDF a partir de una platilla html
Adicionalmente con el comando cat genera el archivo passwd.pdf en la raíz del sitio a partir del archivo
passwd (Contraseñas)
Por fortuna para el atacante el archivo passwd.pdf puede ser
descargado desde:
https://misitioinseguro.com/passwd.pdf
Prevención y remediación
1. SQLi
•Consultas parametrizadas
•Procedimientos almacenados
•Validación de entradas "* ‘ , ; : & % “ -( ) / < > + "
2. OS Command Injection
•Listas blancas
•Validación de Entradas
3. Consejos comunes para hardening
•No utilizar el SA en su aplicación
•Cuenta de sistema operativo con permisos limitados
Todas las validaciones se deben realizar
en ambos lados: cliente y servidor
Pecado II: Fallo de autenticación
Ocurre cuando usuarios anónimos intentan acceder a
cuentas de usuarios válidos del sistema, cuando usuarios
validos intentan obtener mayores privilegios de los reales o
intentan “disfrazar” o eliminar acciones dentro del sistema
Sesiones
1.Para mantener el estado de la sesión se provee un identificador (Session_ID o Token) que es compartido entre el
usuario y la aplicación web
2.Los atacantes pueden ejecutar dos tipos de Session Hijacking (secuestro de sesión):
Orientados: el atacante impersonaliza a un usuario específico y privilegiado
Genérico: impersonaliza a un usuario genérico del cual desconoce sus accesos
Nombre de la Sesión de las aplicaciones
PHP --> PHPSESSID
J2EE --> JSESSIONID
ColdFusion --> CFID y CFTOKEN
ASP --> ASPSESSIONID
ASP.NET --> ASP.NET_SessionId
Sesiones
La sesión no debe tener información sensible (o debe estar cifrada) y debe ser almacenada en el servidor
Podría (no deseable) contener dirección IP, User-Agent, e-mail, nombre de usuario, rol, privilegio, preferencias
del usuario, último acceso, timeouts, etc.
Credenciales y Sesiones
No enviar información sensible en el URL
http://example.com/accion; jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?parametro=valor
No almacenar información sensible en Cookies
Cookie: User=Juanito
Cookie: Password=123
Sesiones
Ingeniería Social
http://seguro.com/login.xxx?SessionID=1234
1
2
3
Como evitar la Perdida de
Autenticación y Gestión de Sesiones
 Verificar la arquitectura
Autenticación debería ser simple, centralizada y estandarizada
Utilizar el gestor desesiones estándar provisto por el servidor de aplicaciones – no inventar uno
propio!
Estar seguro que SSL protege tanto las credenciales como las sesiones de usuario todo el
tiempo
 Verificar la implementación
No utilizar solamente análisis automático
Verificar el certificado SSL
Examinar todas las funciones relacionadas a autenticación
Verificar que “cierre de sesión” efectivamente destruya la sesión
Utilizar OWASP’s WebScarab para testear la implementación
Pecado III
XSS (Cross Site Scripting)
 Cross Site Scripting (XSS): ejecución de scripts y comandos no
deseados a través de aplicaciones web, explotando la confianza del
usuario
 Se originan por la validación incorrecta de variables que permiten
ejecutar scripts en campos de entrada
 El atacante inyecta código malicioso (HTML y scripts) que son
ejecutados en el entorno del navegador del cliente afectado
XSS (Cross Site Scripting)
 Mediante el control del navegador del usuario es posible
realizar ataques de:
 Robo de sesión e identidad, mediante la
 manipulación de las cookies
 Phishing, mediante la modificación de la interface normal del
sitio
 Redirección a sitios dañinos
 Existen tres tipo de XSS:
 Reflejados/No almacenados
 Almacenados
 DOM-XSS
XSS 1
2
3
Atacante establece una trampa - actualiza perfil
Victima visualiza la página – accede al perfil
Aplicación con
vulnerabilidad
Script silenciosamente envia la sesion de la victima al atacante
Como evitar Fallas de XSS
No incluir entradas suministradas por el usuario en la página de salida
Recomendación Principal: Codificar todos los datos de entrada en la página de salida (Utilizar OWASP’s
ESAPI para dicha tarea):
http://www.owasp.org/index.php/ESAPI
Siempre efectuar una validación ‘positiva’ de todas las entradas realizadas por el usuario
Definir políticas de Content Security Policy (W3C) (HTML5)
Pecado IV
Referencia directa a objetos
Una referencia directa a objetos ocurre cuando un
desarrollador expone una referencia a un objeto de
implementación interno, tal como un fichero, directorio, o
base de datos.Sin un chequeo de control de acceso u otra
protección, los atacantes pueden manipular estas
referencias para acceder datos no autorizados.
Referencia directa a objetos
Atacante identifica su número de
cuenta
6065
?acct=6065
Lo modifica a un número parecido
?acct=6066
Atacante visualiza los datos de la
cuenta de la víctima
Como evitar Referencias Directas
Inseguras a Objetos
Eliminar la referencia directa a objetos
Reemplazarla con un valor temporal de mapeo (ej. 1, 2, 3)
ESAPI proporciona soporte para mapeos numéricos y aleatorios
Validar la referencia directa al objeto
Verificar que el valor del parámetro se encuentra adecuadamente formateado
Verificar que el usuario se encuentra autorizado a acceder el objeto determinado
Restricciones en los parámetros funcionan muy bien!
Access
Reference
Map
http://app?file=Report123.xls
http://app?file=1
http://app?id=9182374
http://aoo?id=7d3J93
Report123.xls
Acct:9182374
Pecado V
Configuración defectuosa
Una buena seguridad requiere tener definida e implementada una
configuración segura para la aplicación, marcos de trabajo, servidor
de aplicación, servidor web, base de datos, y plataforma. Todas estas
configuraciones deben ser definidas, implementadas, y mantenidas ya
que por lo general no son seguras por defecto. Esto incluye mantener
todo el software actualizado, incluidas las librerías de código utilizadas
por la aplicación.
Configuraciones inseguras
Se requiere un proceso concertado, repetible y replicable, para desarrollar y mantener una
correcta configuración de seguridad de la aplicación.
Ejemplos:
• Plataformas vulnerables sin los últimos parches de seguridad
• Configuraciones iniciales o funciones innecesarias activadas
• Usuarios de sistema operativo o bases de datos con permisos excesivos
Prevenir configuraciones inseguras
Los programas de auditoría de seguridad son por lo general buenos
para abarcar grandes cantidades de pruebas para detectar la falta
de parches de seguridad así como la existencia de configuraciones
por defecto, la verificación manual posteriormente será una
responsabilidad muy importante por parte del profesional de
seguridad.
Pecado VI
Protección Insuficiente en la capa de
Transporte
Las aplicaciones frecuentemente fallan al autenticar, cifrar, y
proteger la confidencialidad e integridad de tráfico de red
sensible. Cuando esto ocurre, es debido a la utilización de
algoritmos débiles, certificados expirados, inválidos, o
sencillamente no utilizados correctamente.
Protección Insuficiente en la capa de
Transporte (TLS)
 Se utiliza SSL para proteger todo el tráfico relacionado con la
autenticación? (Contra ataques MiTM)
 Se utiliza SSL para todos los recursos de páginas y servicios privados?
 Se debe evitar el acceso SSL únicamente a determinados recursos de una página ya que
esto provoca advertencias en el navegador y puede exponer el identificador de sesión de
los usuarios.
 Sólo se soportan algoritmos considerados fuertes.
 Todas las cookies de sesión tienen el atributo “secure” activado.
 El certificado debe ser legítimo y estar configurado correctamente
para este servidor. Un usuario acostumbrado a lidiar con mensajes de error en su sitio perderá
la desconfianza a un sitio falso con las mismas características
Protección Insuficiente en la capa de
Transporte (TLS)
Pecado VII
LFI y LFD
 Vulnerabilidades que se hacen presentes cuando se permite que el usuario incluya
archivos en la aplicación
 Local File Inclusion (LFI): inclusión de archivos locales, donde se encuentre el sitio
web vulnerable
 Local File Disclousure (LFD): permite la descarga de archivos en codigo fuente
directo.
Evitar LFD y LFI
 UrlScan por defecto bloquea: exe, bat, cmd, com, htw, ida, idq, htr, idc, printer, ini,
pol, dat, etc.
 Validar extenciones mediante un lista blanca
 En PHP se puede utilizar Mod_Security y/o Suhosin
Todas las validaciones se deben validar en ambos lados: cliente y servidor
Pecado con las aplicaciones moviles
Ing. Elvin Vidal Mollinedo Mencia
emollinedo@it-rational.com
GRACIAS

Más contenido relacionado

La actualidad más candente

A3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo real
A3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo realA3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo real
A3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo real
a3sec
 
Seguridad en redes Unidad V
Seguridad en redes Unidad VSeguridad en redes Unidad V
Seguridad en redes Unidad V
Jose A. Garcia
 
Seguridad en servidores
Seguridad en servidoresSeguridad en servidores
Seguridad en servidores
Taty Millan
 
Nmap.potosim
Nmap.potosimNmap.potosim
Nmap.potosim
gh02
 
Test de penetración
Test de penetraciónTest de penetración
Test de penetración
Gema López
 

La actualidad más candente (20)

Symantec endpoint protection
Symantec endpoint protectionSymantec endpoint protection
Symantec endpoint protection
 
El e-dni como herramienta de seguridad
El e-dni como herramienta de seguridadEl e-dni como herramienta de seguridad
El e-dni como herramienta de seguridad
 
A3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo real
A3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo realA3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo real
A3sec Webinar AlienVault USM - Sistemas de detección de ataques en tiempo real
 
Unidad 3 - Seguridad Lógica
Unidad 3 - Seguridad LógicaUnidad 3 - Seguridad Lógica
Unidad 3 - Seguridad Lógica
 
Seguridad en Servidores Dedicados
Seguridad en Servidores DedicadosSeguridad en Servidores Dedicados
Seguridad en Servidores Dedicados
 
Luz lisby diapositivas........
Luz lisby diapositivas........Luz lisby diapositivas........
Luz lisby diapositivas........
 
Cybersecurity
CybersecurityCybersecurity
Cybersecurity
 
[SOS 2009] Microsoft Technet: TMG Preview Técnico
[SOS 2009] Microsoft Technet: TMG Preview Técnico[SOS 2009] Microsoft Technet: TMG Preview Técnico
[SOS 2009] Microsoft Technet: TMG Preview Técnico
 
Seguridad en redes Unidad V
Seguridad en redes Unidad VSeguridad en redes Unidad V
Seguridad en redes Unidad V
 
Framework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 SeguridadFramework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 Seguridad
 
Protección y seguridad en SO
Protección y seguridad en SOProtección y seguridad en SO
Protección y seguridad en SO
 
Seguridad en servidores
Seguridad en servidoresSeguridad en servidores
Seguridad en servidores
 
Amenazas windows 10
Amenazas windows 10Amenazas windows 10
Amenazas windows 10
 
AlienVault
AlienVaultAlienVault
AlienVault
 
Hackers en los sistemas de las administraciones públicas
Hackers en los sistemas de las administraciones públicasHackers en los sistemas de las administraciones públicas
Hackers en los sistemas de las administraciones públicas
 
Nmap.potosim
Nmap.potosimNmap.potosim
Nmap.potosim
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Evaluación - Test de penetracion
Evaluación  - Test de penetracionEvaluación  - Test de penetracion
Evaluación - Test de penetracion
 
Test de penetración
Test de penetraciónTest de penetración
Test de penetración
 
Métodos vulnerabilidad activos
Métodos vulnerabilidad activosMétodos vulnerabilidad activos
Métodos vulnerabilidad activos
 

Similar a Los 7 pecados del Desarrollo Web

Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datos
William Suárez
 
Modulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LANModulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LAN
srkamote
 

Similar a Los 7 pecados del Desarrollo Web (20)

Seguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_securitySeguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_security
 
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASP
 
Temas owasp
Temas owaspTemas owasp
Temas owasp
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017
 
Owasp Top10 Spanish
Owasp Top10 SpanishOwasp Top10 Spanish
Owasp Top10 Spanish
 
Clase 6 Practica.pptx
Clase 6 Practica.pptxClase 6 Practica.pptx
Clase 6 Practica.pptx
 
Curso basicoseguridadweb slideshare3
Curso basicoseguridadweb slideshare3Curso basicoseguridadweb slideshare3
Curso basicoseguridadweb slideshare3
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Los 10 principales riesgos en aplicaciones web #CPMX5
Los 10 principales riesgos en aplicaciones web #CPMX5Los 10 principales riesgos en aplicaciones web #CPMX5
Los 10 principales riesgos en aplicaciones web #CPMX5
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHPSeguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Microsoft Windows Server 2003 Y Windows 2000
Microsoft Windows Server 2003 Y Windows 2000Microsoft Windows Server 2003 Y Windows 2000
Microsoft Windows Server 2003 Y Windows 2000
 
Microsoft Windows Server 2003 Y Windows 2000 I
Microsoft Windows Server 2003 Y Windows 2000 IMicrosoft Windows Server 2003 Y Windows 2000 I
Microsoft Windows Server 2003 Y Windows 2000 I
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datos
 
Web app attacks
Web app attacksWeb app attacks
Web app attacks
 
Modulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LANModulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LAN
 
Cómo realizar un test de intrusión a una aplicación Web
Cómo realizar un test de intrusión a una aplicación WebCómo realizar un test de intrusión a una aplicación Web
Cómo realizar un test de intrusión a una aplicación Web
 
El Estado de la Seguridad de IBM i en 2020
El Estado de la Seguridad de IBM i en 2020El Estado de la Seguridad de IBM i en 2020
El Estado de la Seguridad de IBM i en 2020
 
Securiza tu red con Snort y sus amigos
Securiza tu red con Snort y sus amigosSecuriza tu red con Snort y sus amigos
Securiza tu red con Snort y sus amigos
 

Último

Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
Marc Liust
 

Último (18)

presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 

Los 7 pecados del Desarrollo Web

  • 1. ACK Security Group LOS 7 PECADOS DEL DESARROLO WEB & TENTACIÓN DEL USUARIOS EN APLICACIONES MOVILES
  • 2. Ing. Elvin Vidal Mollinedo Mencia ¿Quien sºoy? “Profesional de seguridad + 9 años de experiencia en desarrollo seguro e infraestructura de telecomunicaciones, manejando de normativas CISA(COBIT), SOX(Ley Sarbanes Oxley), pentesting web, pentesting WI FI y electronica (hardware libre)” emollinedo@it-rational.com www.it-rational.com
  • 3. Pecado I: Inyección Una inyección ocurre cuando los datos no validados (ni confiables) son enviados a un interprete como parte de un comando o consulta. Los datos hostiles del atacante pueden engañar al interprete, ejecutar comandos, o acceder datos no autorizados El atacante puede: - Descargar BD completas - Añadir o eliminar información a la BD - Ejecutar comandos de SO - Comprometer la BD o el servidor
  • 4. Solicitud numérica (cliente) http://www.foo.bar/ver_productos.XXX?id= 1 or 1=1 Aplicación (servidor) select * from productos where prod_id = X Solicitud alfanumérica (cliente) http://www.foo.bar/ver_productos.XXX?nombre= nada’ or ‘a’=‘a Aplicación (servidor) select * from productos where prod_nombre = ‘ X’
  • 5. Inyecciones INICIO DE SESION Usuario: Password: Ingresar admin'-- no importa Código que genera el Query sql = “SELECT * FROM usuarios WHERE usuario = ‘” + usuario + “’ and clave = ‘” + clave + “’” Así se interpreta el query por el motor de BD SELECT * FROM usuarios WHERE usuario = ‘admin’--’ and clave = ‘no importa’ Este es un ejemplo de la vida real de un sitio que recibía pagos por tarjeta de crédito. Si alguien se pregunta si esto tan grave puede ser real pues...
  • 6. Inyección INICIO DE SESION Usuario: Password: Ingresar ’UNION/**/.. no importa Código que genera el Query sql = “SELECT * FROM usuarios WHERE usuario = ‘” + usuario + “’ and clave = ‘” + clave + “’” Así se interpreta el query por el motor de BD SELECT * FROM usuarios WHERE usuario = ‘’ UNION SELECT CAST(usuario as int),version(),1,1,1 FROM usuarios WHERE usuario > ‘a’--’ and clave = ‘no importa’ Este es un ejemplo de la vida real de un sitio que recibía pagos por tarjeta de crédito. 'UNION/**/SELECT/**/ CAST(usuario/**/as/**/int), Version(),1,1,1/**/ FROM/**/usuarios/**/ WHERE/**/usuario/**/>/**/‘a '--
  • 7. OS Command Injection (OSi) Ejecución de comandos con información brindada por el “usuario” https://misitioinseguro.com/generarpdf.php?nombre=miinfo; cat /etc/passwd > /var/www/passwd Así se interpreta el comando al ejecutarse generarpdf reporte.html miinfo; cat /etc/passwd > /var/www/passwd.pdf El comando generarpdf genera un archivo PDF a partir de una platilla html Adicionalmente con el comando cat genera el archivo passwd.pdf en la raíz del sitio a partir del archivo passwd (Contraseñas) Por fortuna para el atacante el archivo passwd.pdf puede ser descargado desde: https://misitioinseguro.com/passwd.pdf
  • 8. Prevención y remediación 1. SQLi •Consultas parametrizadas •Procedimientos almacenados •Validación de entradas "* ‘ , ; : & % “ -( ) / < > + " 2. OS Command Injection •Listas blancas •Validación de Entradas 3. Consejos comunes para hardening •No utilizar el SA en su aplicación •Cuenta de sistema operativo con permisos limitados Todas las validaciones se deben realizar en ambos lados: cliente y servidor
  • 9. Pecado II: Fallo de autenticación Ocurre cuando usuarios anónimos intentan acceder a cuentas de usuarios válidos del sistema, cuando usuarios validos intentan obtener mayores privilegios de los reales o intentan “disfrazar” o eliminar acciones dentro del sistema
  • 10. Sesiones 1.Para mantener el estado de la sesión se provee un identificador (Session_ID o Token) que es compartido entre el usuario y la aplicación web 2.Los atacantes pueden ejecutar dos tipos de Session Hijacking (secuestro de sesión): Orientados: el atacante impersonaliza a un usuario específico y privilegiado Genérico: impersonaliza a un usuario genérico del cual desconoce sus accesos Nombre de la Sesión de las aplicaciones PHP --> PHPSESSID J2EE --> JSESSIONID ColdFusion --> CFID y CFTOKEN ASP --> ASPSESSIONID ASP.NET --> ASP.NET_SessionId
  • 11. Sesiones La sesión no debe tener información sensible (o debe estar cifrada) y debe ser almacenada en el servidor Podría (no deseable) contener dirección IP, User-Agent, e-mail, nombre de usuario, rol, privilegio, preferencias del usuario, último acceso, timeouts, etc. Credenciales y Sesiones No enviar información sensible en el URL http://example.com/accion; jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?parametro=valor No almacenar información sensible en Cookies Cookie: User=Juanito Cookie: Password=123
  • 13. Como evitar la Perdida de Autenticación y Gestión de Sesiones  Verificar la arquitectura Autenticación debería ser simple, centralizada y estandarizada Utilizar el gestor desesiones estándar provisto por el servidor de aplicaciones – no inventar uno propio! Estar seguro que SSL protege tanto las credenciales como las sesiones de usuario todo el tiempo  Verificar la implementación No utilizar solamente análisis automático Verificar el certificado SSL Examinar todas las funciones relacionadas a autenticación Verificar que “cierre de sesión” efectivamente destruya la sesión Utilizar OWASP’s WebScarab para testear la implementación
  • 14. Pecado III XSS (Cross Site Scripting)  Cross Site Scripting (XSS): ejecución de scripts y comandos no deseados a través de aplicaciones web, explotando la confianza del usuario  Se originan por la validación incorrecta de variables que permiten ejecutar scripts en campos de entrada  El atacante inyecta código malicioso (HTML y scripts) que son ejecutados en el entorno del navegador del cliente afectado
  • 15. XSS (Cross Site Scripting)  Mediante el control del navegador del usuario es posible realizar ataques de:  Robo de sesión e identidad, mediante la  manipulación de las cookies  Phishing, mediante la modificación de la interface normal del sitio  Redirección a sitios dañinos  Existen tres tipo de XSS:  Reflejados/No almacenados  Almacenados  DOM-XSS
  • 16. XSS 1 2 3 Atacante establece una trampa - actualiza perfil Victima visualiza la página – accede al perfil Aplicación con vulnerabilidad Script silenciosamente envia la sesion de la victima al atacante
  • 17. Como evitar Fallas de XSS No incluir entradas suministradas por el usuario en la página de salida Recomendación Principal: Codificar todos los datos de entrada en la página de salida (Utilizar OWASP’s ESAPI para dicha tarea): http://www.owasp.org/index.php/ESAPI Siempre efectuar una validación ‘positiva’ de todas las entradas realizadas por el usuario Definir políticas de Content Security Policy (W3C) (HTML5)
  • 18. Pecado IV Referencia directa a objetos Una referencia directa a objetos ocurre cuando un desarrollador expone una referencia a un objeto de implementación interno, tal como un fichero, directorio, o base de datos.Sin un chequeo de control de acceso u otra protección, los atacantes pueden manipular estas referencias para acceder datos no autorizados.
  • 19. Referencia directa a objetos Atacante identifica su número de cuenta 6065 ?acct=6065 Lo modifica a un número parecido ?acct=6066 Atacante visualiza los datos de la cuenta de la víctima
  • 20. Como evitar Referencias Directas Inseguras a Objetos Eliminar la referencia directa a objetos Reemplazarla con un valor temporal de mapeo (ej. 1, 2, 3) ESAPI proporciona soporte para mapeos numéricos y aleatorios Validar la referencia directa al objeto Verificar que el valor del parámetro se encuentra adecuadamente formateado Verificar que el usuario se encuentra autorizado a acceder el objeto determinado Restricciones en los parámetros funcionan muy bien! Access Reference Map http://app?file=Report123.xls http://app?file=1 http://app?id=9182374 http://aoo?id=7d3J93 Report123.xls Acct:9182374
  • 21. Pecado V Configuración defectuosa Una buena seguridad requiere tener definida e implementada una configuración segura para la aplicación, marcos de trabajo, servidor de aplicación, servidor web, base de datos, y plataforma. Todas estas configuraciones deben ser definidas, implementadas, y mantenidas ya que por lo general no son seguras por defecto. Esto incluye mantener todo el software actualizado, incluidas las librerías de código utilizadas por la aplicación.
  • 22. Configuraciones inseguras Se requiere un proceso concertado, repetible y replicable, para desarrollar y mantener una correcta configuración de seguridad de la aplicación. Ejemplos: • Plataformas vulnerables sin los últimos parches de seguridad • Configuraciones iniciales o funciones innecesarias activadas • Usuarios de sistema operativo o bases de datos con permisos excesivos
  • 23. Prevenir configuraciones inseguras Los programas de auditoría de seguridad son por lo general buenos para abarcar grandes cantidades de pruebas para detectar la falta de parches de seguridad así como la existencia de configuraciones por defecto, la verificación manual posteriormente será una responsabilidad muy importante por parte del profesional de seguridad.
  • 24. Pecado VI Protección Insuficiente en la capa de Transporte Las aplicaciones frecuentemente fallan al autenticar, cifrar, y proteger la confidencialidad e integridad de tráfico de red sensible. Cuando esto ocurre, es debido a la utilización de algoritmos débiles, certificados expirados, inválidos, o sencillamente no utilizados correctamente.
  • 25. Protección Insuficiente en la capa de Transporte (TLS)  Se utiliza SSL para proteger todo el tráfico relacionado con la autenticación? (Contra ataques MiTM)  Se utiliza SSL para todos los recursos de páginas y servicios privados?  Se debe evitar el acceso SSL únicamente a determinados recursos de una página ya que esto provoca advertencias en el navegador y puede exponer el identificador de sesión de los usuarios.  Sólo se soportan algoritmos considerados fuertes.  Todas las cookies de sesión tienen el atributo “secure” activado.  El certificado debe ser legítimo y estar configurado correctamente para este servidor. Un usuario acostumbrado a lidiar con mensajes de error en su sitio perderá la desconfianza a un sitio falso con las mismas características
  • 26. Protección Insuficiente en la capa de Transporte (TLS)
  • 27. Pecado VII LFI y LFD  Vulnerabilidades que se hacen presentes cuando se permite que el usuario incluya archivos en la aplicación  Local File Inclusion (LFI): inclusión de archivos locales, donde se encuentre el sitio web vulnerable  Local File Disclousure (LFD): permite la descarga de archivos en codigo fuente directo.
  • 28. Evitar LFD y LFI  UrlScan por defecto bloquea: exe, bat, cmd, com, htw, ida, idq, htr, idc, printer, ini, pol, dat, etc.  Validar extenciones mediante un lista blanca  En PHP se puede utilizar Mod_Security y/o Suhosin Todas las validaciones se deben validar en ambos lados: cliente y servidor
  • 29. Pecado con las aplicaciones moviles
  • 30. Ing. Elvin Vidal Mollinedo Mencia emollinedo@it-rational.com GRACIAS