Vulnerabilidades en sitios web(español)

23
1 Vulnerabilidades en sitios web Vulnerabilidades en sitios web Aradi Pineda Barranca Alba Nidya Soto Domínguez Instituto Tecnológico de Tuxtepec Abril 2014

Transcript of Vulnerabilidades en sitios web(español)

Page 1: Vulnerabilidades en sitios web(español)

1

Vulnerabilidades en sitios web

Vulnerabilidades en sitios web

Aradi Pineda Barranca

Alba Nidya Soto Domínguez

Instituto Tecnológico de Tuxtepec

Abril 2014

Page 2: Vulnerabilidades en sitios web(español)

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

Page 3: Vulnerabilidades en sitios web(español)

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”.

Page 4: Vulnerabilidades en sitios web(español)

4

Vulnerabilidades en sitios web

PALABRAS CLAVE/KEYWORDS

WPScan

Nmap

TamperData

OWASP

Page 5: Vulnerabilidades en sitios web(español)

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.

Page 6: Vulnerabilidades en sitios web(español)

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.

Page 7: Vulnerabilidades en sitios web(español)

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.

Page 8: Vulnerabilidades en sitios web(español)

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.

Page 9: Vulnerabilidades en sitios web(español)

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.

Page 10: Vulnerabilidades en sitios web(español)

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.

Page 11: Vulnerabilidades en sitios web(español)

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.

Page 12: Vulnerabilidades en sitios web(español)

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.

Page 13: Vulnerabilidades en sitios web(español)

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.

Page 14: Vulnerabilidades en sitios web(español)

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.

Page 15: Vulnerabilidades en sitios web(español)

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.

Page 16: Vulnerabilidades en sitios web(español)

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.

Page 17: Vulnerabilidades en sitios web(español)

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.

Page 18: Vulnerabilidades en sitios web(español)

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

Page 19: Vulnerabilidades en sitios web(español)

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

Page 20: Vulnerabilidades en sitios web(español)

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.

Page 21: Vulnerabilidades en sitios web(español)

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.

Page 22: Vulnerabilidades en sitios web(español)

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.

Page 23: Vulnerabilidades en sitios web(español)

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)