Post on 24-May-2015
1
Vulnerabilidades en sitios web
Vulnerabilidades en sitios web
Aradi Pineda Barranca
Alba Nidya Soto Domínguez
Instituto Tecnológico de Tuxtepec
Abril 2014
2
Vulnerabilidades en sitios web
AGRADECIMIENTOS
A MIS PADRES:
Con todo mi cariño y mi amor para las personas que hicieron todo en la vida para
que yo pudiera lograr mis sueños, por motivarme y darme la mano cuando sentía
que el camino terminaba, a ustedes por siempre mi corazón y mi agradecimiento.
Aradi Pineda Barranca
Para poder realizar este proyecto de la mejor manera posible fue necesario el
apoyo de muchas personas a las cuales quiero agradecer.
En primer lugar a Dios haberme dado la vida y por darme la familia que me dio.
A mi madre por su apoyo incondicional y por alentarme a hacer las cosas de la
mejor manera posible al igual el apoyo brindado para la realización de este
software, a Vicente que me ha ayudado a la largo de mis estudios y me ha
apoyado en todo lo que me propongo.
A mi hermano por su amor, apoyo incondicional y por alentarme a ser una mejor
persona en la vida.
Gracias también a mis amigos por ayudarme y apoyarme sin condiciones y por
formar parte de mi vida en estos 4 años dentro y fuera de clases. Gracias por la
amistad que me brindan.
Alba Nidya Soto Domínguez
3
Vulnerabilidades en sitios web
RESUMEN & ABSTRACT
Al resguardar información, una aplicación web puede ser el objetivo de usuarios
maliciosos que buscan tener acceso a ella. De la misma forma, al implementarse la
aplicación los analistas, diseñadores y desarrolladores pueden dejar, sin saberlo,
algún hueco de seguridad. Adicionalmente, el software y hardware empleado para
la puesta en marcha de la aplicación pueden tener una vulnerabilidad o hueco de
seguridad.
Por ello, es conveniente estar al tanto de los posibles riesgos que afectan a las
aplicaciones web, así como el impacto que tienen y las acciones que se pueden
tomar para corregir tales situaciones.
OWASP es un grupo de seguridad y profesionales de aplicaciones web con varios
años de experiencia para ayudar a remediar algunos de los problemas que se
presentan en el campo del desarrollo de aplicaciones web.
Este grupo se enfoca en el entendimiento y mejoramiento de la seguridad para las
aplicaciones y servicios web.
Entre otras cosas, OWASP tiene disponibles guías gratuitas de desarrollo,
recomendaciones de buenas prácticas, información actualizada de vulnerabilidades
comunes en aplicaciones web y una herramienta de aprendizaje de seguridad en
aplicaciones web conocida como “WebGoat”.
4
Vulnerabilidades en sitios web
PALABRAS CLAVE/KEYWORDS
WPScan
Nmap
TamperData
OWASP
5
Vulnerabilidades en sitios web
INTRODUCCIÓN
En 1980, Tim Berners-Lee, desarrolló ENQUIRE, como una base de datos personal
de gente y modelos de software, pero también como una forma de interactuar con
el hipertexto. En 1990, Berners-Lee había desarrollado todas las herramientas
necesarias para trabajar la Web: HTTP, HTML, el primer servidor web,
WorldWideWeb y el primer navegador web.
Los sitios web tienen un sin fin de vulnerabilidades que hacen que estos corran un
gran riesgo de ser atacados desde varios puntos, con este documento se espera
tener las herramientas teóricas para el dominio de los temas que se abordarán en
cada uno de los apartados.
El objetivo es impulsar a las organizaciones que utilizan sitios web a madurar en la
comprensión y gestión de aplicaciones de seguridad.
6
Vulnerabilidades en sitios web
MÉTODOS Y MATERIALES
VULNERABILIDADES DE SEGURIDAD EN UN SISTEMA
Al resguardar información, una aplicación web puede ser objetivo de usuarios
maliciosos que buscan tener acceso a ella. De la misma forma, al implementarse la
aplicación los analistas, diseñadores y desarrolladores pueden dejar, sin saberlo,
algún hueco de seguridad. Adicionalmente, el software y hardware empleado para
la puesta en marcha de la aplicación pueden tener alguna vulnerabilidad o hueco
de seguridad.
Por ello, es conveniente estar al tanto de os posibles riesgos que afectan a las
aplicaciones web, así como el impacto que tienen y las acciones que se pueden
tomar para corregir tales situaciones.
OWASP realiza un recuento de los ataques y vulnerabilidades más críticas en
aplicaciones web. Se reportan con ejemplos y detalles que explican esos riesgos
para desarrolladores de software, administradores e interesados en seguridad web.
El objetivo es impulsar a las organizaciones a madurar en la comprensión y gestión
de aplicaciones de seguridad.
7
Vulnerabilidades en sitios web
TOP 10 DE OWASPP
1. Inyección
Consiste en el envío de código malicioso al sistema por parte de un usuario o bien
por parte de otro sistema, muchas veces el código es enviado en texto plano.
El código puede intentarse enviar por cualquier entrada:
• Consultas al directorio activo.
• Consultas a la base de datos.
• Entradas en formas web.
• Consultas XPath.
• Comandos del sistema operativo.
• Entradas de funciones.
Sucede cuando no se están validando adecuadamente las entradas proporcionadas
por el usuario, confiando en que éste ingresa al sistema.
CONSECUENCIAS
• Pérdida y/o corrupción de datos.
• Negación de acceso.
ACCIONES
• Implementar código seguro: validación de entradas, incluso las provenientes
de otros sistemas.
• Uso de herramientas para realizar la búsqueda de vulnerabilidades a ataques
de inyección.
• Es altamente recomendable mantener datos no confiables separados de
comandos y consultas.
8
Vulnerabilidades en sitios web
• Uso de API’s seguras (no intérpretes).
2. Pérdida de autenticación y gestión de sesiones
Son las vulnerabilidades relacionadas con la pérdida de autenticación y gestión de
sesiones. Son críticas en la seguridad de las aplicaciones y en especial de las
aplicaciones web, ya que permiten a un atacante suplantar la información de un
determinado usuario, pudiendo llegar a obtener una cuenta de administración que
le permita sabotear los controles de autorización y registro de la aplicación.
CONSECUENCIAS
• Acceso no autorizado a cualquier tipo de información que se encuentre
almacenada en el servidor.
• Acceso a servicios que han sido comprometidos.
ACCIONES
• Considerar una buena autenticación de los usuarios.
• Proteger los datos de sesión (id, token, contraseña).
• Realizar seguimiento robusto de sesiones.
• Evitar vulnerabilidades del tipo XSS, ya que pueden provocar el secuestro de
datos de sesión.
9
Vulnerabilidades en sitios web
3. Cross-Site Scripting (XSS)
Es la inserción de cadenas de texto no validas en la propia aplicación web, por parte
de un usuario malicioso (puede estar dentro del sistema, como usuario o
administrados, o fuera de él), el cual espera que sea ejecutado para obtener
información o algún beneficio.
Se encuentra clasificado en tres tipos diferentes:
• Almacenado. Es aquel código que se queda almacenado de forma
permanente dentro del servidor de aplicaciones web. Por ejemplo, en la base
de datos.
• Reflejado. Es el código que no se almacena en la base de datos de la
aplicación web que es atacada, si no que se ejecuta en el momento en que
se ingresa en alguna de las entradas que no valida la entrada proporcionada.
• Basado en DOM. Es aquel código que modifica el DOM de la aplicación web
original.
CONSECUENCIAS
• Secuestro de sesiones de usuario.
• Destrucción de sitios web.
• Instalación de código malicioso en navegadores.
• Re-direccionamiento a sitios maliciosos.
ACCIONES
• Llevar a cabo pruebas de análisis de código.
• Uso de herramientas de escaneo estáticas y dinámicas.
• Separar datos no confiables del contenido activo del navegador.
• Validación de entradas de datos.
10
Vulnerabilidades en sitios web
4. Referencia directa insegura a objetos
Consiste en sustituir el valor de algún parámetro que hace referencia a un objeto
por el de otro objeto y se le da acceso aunque no esté autorizado.
CONSECUENCIAS
• Acceso a información restringida.
• Acceso a toda información que es referenciada por parámetros similares.
ACCIONES
• Realizar análisis del código y pruebas manuales.
• Realizar verificaciones a nivel código para referencias directas a recursos
restringidos.
• Hacer uso de referencias indirectas por usuario o sesión.
• Comprobar el acceso de los usuarios hacia los objetos.
11
Vulnerabilidades en sitios web
5. Configuración errónea de seguridad
Es un fallo o error en la configuración de seguridad definida e implementada para la
aplicación, marcos de trabajo, servidor de aplicación, servidor web, servidor de base
de datos y la plataforma. Todas estas configuraciones deben ser definidas,
implementadas, y mantenidas. Esto incluye mantener todo el software al dia,
incluyendo las librerías de código que utiliza la aplicación.
Puede ocurrir en:
• Plataformas.
• Servidores web.
• Servidores de aplicaciones.
• Ambientes de trabajo.
• Códigos personalizados.
Hace uso de:
• Cuentas predeterminadas.
• Paginas no usadas.
• Software no actualizado o no parchado.
• Archivos o directorios no protegidos.
CONSECUENCIAS
• Acceso no autorizado a datos o funciones del sistema.
ACCIONES
• Usar herramientas automáticas para ubicar: actualizaciones pendientes,
configuraciones defectuosas, cuentas predeterminadas activas, servicios
activos no necesarios.
• Asegurar todos los niveles de la pila de la aplicación.
12
Vulnerabilidades en sitios web
6. Exposición de datos sensibles
Consiste en no proteger adecuadamente los datos sensibles, tales como tarjetas de
crédito, identificaciones de impuestos, y las credenciales de autenticación. Los
atacantes pueden robar o modificar los datos para llevar a cabo fraude de tarjetas
de crédito, robo de identidad u otros delitos, puede suceder con datos almacenados
o mientras se realiza se transmisión.
CONSECUENCIAS
Robo de datos confidenciales, como los registros de salud, credenciales,
datos personales, tarjetas de crédito, etc.
ACCIONES
Cifrar los datos sensibles almacenados y durante su transmisión.
No almacenar datos confidenciales innecesariamente.
Cifrar las contraseñas que se almacenan con un algoritmo diseñado
específicamente para la protección de contraseña, como bcrypt, PBKDF2 o
scrypt.
Desactivar la función de autocompletar en los formularios de captura de datos
sensibles y desactivar el almacenamiento en caché de las páginas que
contienen datos sensibles.
13
Vulnerabilidades en sitios web
7. Falta de control de acceso a nivel de funciones
Es la falta de controles de acceso para funciones privadas de las aplicaciones web.
Si no se verifican peticiones, los atacantes serán capaces de forzar peticiones con
el fin de acceder a las funciones de la aplicación sin la autorización apropiada.
CONSECUENCIAS
Acceso a funciones privadas de la aplicación por usuarios comunes.
Acceso y modificación de los datos del sistema.
ACCIONES
Implementar módulos de autenticación para las funciones privadas del
sistema.
14
Vulnerabilidades en sitios web
8. CSRF (Cross-Site Request Forgery)
Es un ataque que obliga al usuario ejecutar acciones no deseadas en una
aplicación web en la que este actualmente autenticado. Con un poco de ayuda de
ingeniería social (como el envío de un enlace por correo electrónico o mediante el
chat), un atacante puede obligar a los usuarios de la aplicación web ejecutar
acciones a selección del atacante. Si el usuario objetivo es la cuenta de
administrador, esto puede poner en peligro toda la aplicación web.
CONSECUENCIAS
Se puede acceder, modificar y utilizar cualquier dato o función que se este
autorizado a usar.
ACCIONES
Revisión de código fuente.
Realizar pruebas de penetración.
Descartar como protección las cookies de sesión, las direcciones IP origen y
otro tipo de información.
Analizar enlaces y formularios que invoquen funciones que permitan cambiar
estados.
15
Vulnerabilidades en sitios web
9. Uso de componentes con vulnerabilidades conocidas
Consiste en el uso de componentes, tales como bibliotecas, frameworks y otros
módulos de software vulnerables, que casi siempre se ejecutan con privilegios de
administrador. Si se explota un componente vulnerable, puede facilitar la perdida de
datos importantes o toma de control del servidor.
CONSECUENCIAS
Inyecciones de código.
XSS.
Romper controles de acceso.
ACCIONES
Mantener actualizado cada componente implementado.
En caso de usar componentes que sean desarrollos propios, realizar pruebas
de seguridad sobre ellos.
16
Vulnerabilidades en sitios web
10. Redirecciones y reenvíos no validos
Es una redirección o reenvío por parte de las aplicaciones web a otras páginas o
sitios web, sin una correcta validación. Los atacantes pueden redirigir a las víctimas
a sitios de malware o phishing.
CONSECUENCIAS
Robo de credenciales de autenticación.
Instalación de malware.
Phishing.
ACCIONES
Realizar un mapeo del sitio (spidering) para detectar redirecciones
maliciosas.
Evitar el uso de redirects y forwards.
Si se utilizan, no añadir los parámetros de usuario en el destino.
Si no se pueden evitar los parámetros de destino, asegurarse que el valor
proporcionado es válido y autorizado por el usuario.
17
Vulnerabilidades en sitios web
METODOLOGÍA PARA PRUEBAS DE PENETRACIÓN
1. Pruebas de penetración (pentest)
Un pentest es una prueba realizada a aplicaciones web, en la cual se intentan
reproducir acciones de usuarios maliciosos (internos y externos a la organización).
Estas acciones cubren tanto la interacción con la aplicación como la parte de
configuraciones y software empleado.
Ayuda a encontrar los huecos de seguridad que pueden permitir acceso a
información sensible, modificar la funcionalidad original del sitio, entre otras
acciones.
Las pruebas de penetración deben considerar aspectos como:
Pruebas de SQL Injection.
Pruebas de Cross-Site Scripting (XSS).
Pruebas de JavaScript.
Alertas de red y escaneo de puertos.
VENTAJAS
Generación de informes oportunos.
Mejoras en la estrategia.
Mejoras en la aplicación.
DESVENTAJAS
Riesgo de no disponibilidad.
Riesgo de pérdida o alteración de la información.
18
Vulnerabilidades en sitios web
Para realizar una prueba de penetración es necesario seguir una metodología para
que todo lleve un orden y se logren los resultados esperados.
2. Metodología de las pruebas de penetración
Fases de las pruebas de penetración:
Planeación.
Reconocimiento.
Escaneo.
Explotación.
Documentación.
2.1 Planeación
Permite definir totalmente el proyecto, marcando los límites y estableciendo los
elementos a evaluar y lo más importante, obteniendo la autorización que respaldara
al pentester durante toda su actividad, tanto técnica como legalmente.
De manera general se pueden listar los siguientes elementos en esta etapa de
preparación:
Entrevista con el solicitante.
Información de consecuencias de las pruebas.
Integración de equipo de trabajo.
Permiso.
Acuerdo de confidencialidad.
Contrato.
2.2. Reconocimiento
Es el proceso de investigación de la organización destino para reunir información
respecto de las fuentes disponibles, tales como los servicios de registro de dominios
19
Vulnerabilidades en sitios web
y sitios web. Algunas personas incluyen técnicas como la ingeniería social y el
dumpsterdiving en la fase de reconstrucción de información.
El especialista en pentest debe intentar conseguir la mayor cantidad de información
como sea posible acerca del objetivo. El reconocimiento se puede hacer utilizando
dos técnicas: pasiva y activa.
Una técnica pasiva es la mejor opción para empezar, ya que normalmente podría
existir un IDS u otras formas de protección. Se trata de descubrir la información
pública disponible en Internet, folletos, entre otros.
Una técnica activa es más intrusiva, la cual podría consistir en utilizar una
herramienta automatizada o en aplicar ingeniería social.
2.3. Escaneo
El objetivo en esta fase es encontrar las entradas vulnerables del objeto de
evaluación, tales como puntos de acceso inalámbrico, sistemas disponibles, puertos
en escucha y las vulnerabilidades.
El escaneo es el proceso de encontrar aperturas en la organización de destino, tales
como puertas de acceso a Internet, puntos de acceso inalámbricos, sistemas
disponibles, los puertos en escucha y las listas de vulnerabilidades. Algunas
herramientas muy comunes para esta etapa son:
Escaneo de puertos
Nmap
Escaneo de vulnerabilidades
Nessus
2.4. Explotación
Al final de la fase de escaneo se identificaron las posibles vulnerabilidades
potenciales y cierta información como el SO, el cual es de mucha utilidad ya que
20
Vulnerabilidades en sitios web
permitirá crear un vector de ataque que ayude a elegir las herramientas, exploits o
las técnicas adecuadas para poder explotar los sistemas. En esta fase se prueban
las vulnerabilidades con una clasificación de alto riesgo otorga por el escáner de
vulnerabilidades ya que posiblemente sean las que permitan explotar el objetivo de
evaluación.
Esta fase tiene como objetivos:
Reducir o eliminar falsos positivos.
Conocer el impacto real de una vulnerabilidad.
En esta fase se prueban las vulnerabilidades encontradas en la fase anterior se
revisan y se evalúan detalladamente ya que en ocasiones las herramientas pueden
listar falsos positivos; si se logra explotar alguno de estos fallos se garantizaran el
acceso al sistema o divulgación de información sensible.
2.5. Documentación
La documentación en esta fase incluye los siguientes puntos:
Resumen ejecutivo.
Introducción.
Metodología.
Hallazgos.
Alto riesgo.
Riesgo medio.
Bajo riesgo.
Recomendaciones.
El objetivo de esta fase es archivar los resultados obtenidos desde el inicio de la
fase de reconocimiento hasta la fase de explotación para generar un informe final
de los hallazgos encontrados durante el proceso completo de las pruebas.
21
Vulnerabilidades en sitios web
RESULTADOS
Al momento de la elaboración de este artículo se esperaba que el lector localizara
las vulnerabilidades que pueden existir en los sitios web, así mismo si el lector era
quien elaboraba estos sitios se mantuviera alerta y prevenid de los diferentes
riesgos que existen.
Como ha de suponerse, existen varios libros, artículos y reportes del tema, que
informan sobre los riesgos que existen cuando es elaborado un sitio web.
Se lograron estudiar diferentes vulnerabilidades en aplicaciones web y mecanismos
que permiten la disminución de riesgos de estas.
Los conocimientos adquiridos permitieron al lector realizar diferentes pruebas para
detectar vulnerabilidades y así este, pueda enfocarse en las fallas que encuentre.
22
Vulnerabilidades en sitios web
DISCUSIÓN
Se obtuvieron los resultados esperados, el lector se sintió atraído y motivado en la
realización de pruebas para determinar si su sitio web tenía o tiene algún fallo.
Se espera con este trabajo que la persona que lo consulte despeje sus dudas y se
atreva a investigar las a fondo sobre las vulnerabilidades que existen y a las cuales
se encuentra expuesto.
23
Vulnerabilidades en sitios web
REFERENCIAS
(Open Web Application Security Project OWASP Top 10, s.f.)
(Pruebas de penetración, s.f.)
(Foundation, 2008)
(Análisis de vulnerabilidades y auditorías de seguridad bajo demanda, s.f.)
(México, 2013)