Está en la página 1de 14

SEGURIDAD EN APLICACIONES WEB

FASE 2

PRESENTADO POR:

MARLODY R. GOMEZ URBANO

CODIGO 27143741

GRUPO: 233008-4

PRESENTADO A:

ANIVAR NESTOR CHAVES

TUTOR

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA.


ESPECIALIZACIÓN EN SEGURIDAD INFORMÁTICA
SEGURIDAD EN APLICACIONES WEB
PASTO 2018
PROTOCOLOS DE LA WEB, HTTP, SSL, TLS

QUE ES UN PROTOCOLO WEB

Es un método estándar que permite la comunicación bajo un conjunto de reglas y


procedimientos que deben respetarse para el envío y la recepción de datos a través de
una red.

Entre los principales protocolos de seguridad que se manejan actualmente realizo


siguiente la descripción detallada:

Es un protocolo que permite el intercambio de información hipertextual (enlaces) en las


páginas web. Se trata de un protocolo genérico orientado a objetos, que puede usarse
para muchas tareas como servidores de nombres y sistemas distribuidos el cual sigue
un esquema petición-respuesta entre un cliente y un servidor y se comunican
intercambiando mensajes individuales (en contraposición a las comunicaciones que
utilizan flujos continuos de datos). Los mensajes que envía el cliente, normalmente un
navegador Web, se llaman peticiones, y los mensajes enviados por el servidor, se
llaman respuestas.

Al cliente que efectúa la petición (un navegador web o un spider) se lo conoce como
"user agent" (agente del usuario). A la información transmitida se la llama recurso y se
la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden
ser archivos, el resultado de la ejecución de un programa, una consulta a una base de
datos, la traducción automática de un documento y se lo se utiliza para transmitir todo
tipo de documentos (imágenes, audio, video, PDF, etc.) y para crear aplicaciones Web.

HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre
conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente
mantener estado. Para esto se usan las cookies, que es información que un servidor
puede almacenar en el sistema cliente. Esto les permite a las aplicaciones web instituir
la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden
guardarse en el cliente por tiempo indeterminado.

Para realizar solicitudes a un servidor por medio del protocolo HTTP, es obligatorio el
uso de unos métodos que vienen pre-definidos en este protocolo los cuales le indican
al servidor cual es la acción que se desea realizar sobre uno o varios recursos en
concreto, a estos métodos también se les conoce por el nombre de “verbos”.

GET: Obtiene información del servidor. Obtenemos tanto la cabecera de la página como
el cuerpo del mensaje o el contenido de la página web.
HEAD: Obtiene la cabecera de la pagina. Es lo mismo que el método GET, pero en este
caso sólo nos devuelve la cabecera.

POST: Empleado para enviar información al servidor. Se suele utilizar para enviar
información desde formularios como usuario y password que no queremos que sea
visible.

PUT: Envía un objeto al servidor. Sirve para crear o registrar información en el servidor.

DELETE: Solicita al servidor que borre el recurso indicado en la URI.

OPTIONS: Devuelve los métodos habilitados o soportados por el servidor.

TRACE: Nos permite ver los mensajes que se envían entre el cliente y servidor. Por
ejemplo se utiliza para ver la petición que ha llegado al servidor para comprobar si un
elemento intermedio (proxy, gateway, tunel, etc.) la ha modificado.

CONNECT: Para ver si se tiene acceso a un servidor. Este método se reserva para uso
con proxys. Permitirá que un proxy pueda dinámicamente convertirse en un túnel. Por
ejemplo para comunicaciones con SSL.

RIESGOS

ATAQUES DE CROSS-SITE SCRIPTING

Es un tipo de vulnerabilidad de seguridad informática típicamente encontrada en


aplicaciones web que permiten la inyección de código por usuarios maliciosos en
páginas web. Los atacantes típicamente se valen de código HTML y de scripts
ejecutados en el cliente.
Ataques de Cross-Site Request Forgery

Este tipo de ataque permite al atacante enviar peticiones HTTP a voluntad desde la
máquina de la víctima. Es difícil determinar cuándo una petición HTML se ha originado
por un ataque de este tipo.

Cuando un atacante conoce el formato que debe tener una URL para lograr la ejecución
de una acción en el sistema, ha logrado encontrar la posibilidad de explotar este tipo de
ataques. Ahora lo que necesita el atacante es simplemente hacer que una víctima visite
la URL.

Un recurso que se utiliza comúnmente para realizar este tipo de ataques suele tener
embebida la petición en una imagen. En este caso el atacante sólo necesita crear alguna
etiqueta HTML del siguiente tipo:

<img src="http://ejemplo.org/compra.php-param=valor&param2=valor" />

Existen acciones que podemos tomar para contrarrestar este tipo de ataques, una de
estas es preferir el método POST para el procesamiento de formas en lugar del GET,
otra posibilidad es solicitar confirmación por parte del solicitante antes de realizar los
procesos (a costa de reducir la usabilidad en la aplicación).

Peticiones HTTP falsificadas

Un ataque más sofisticado que el anterior es enviar peticiones falsas empleando


herramientas especiales para este propósito.

Para ello, se emplean herramientas de línea de comandos o plugins agregados a los


navegadores, con estos se pone a la escucha de los servicios web que típicamente se
conectan a través del puerto 80. En la ilustración 7 podemos observar los campos que
pueden modificarse con Tamper Data.
Headers interceptados.

En realidad un atacante puede confeccionar a gusto sus peticiones HTTP, la fortaleza


de nuestro sistema será medible por su capacidad de detectar que peticiones recibidas
deben ser escuchadas y procesadas de acuerdo a los parámetros y valores que se
vayan a recibir.
PROTOCOLO SSL

Es un protocolo diseñado para permitir que las aplicaciones puedan transmitir


información segura por una red de Internet son protocolos criptográficos que
proporcionan privacidad e integridad en la comunicación entre dos puntos en una red
de comunicación. Esto garantiza que la información transmitida por dicha red no pueda
ser interceptada ni modificada por elementos no autorizados, garantizando de esta
forma que sólo los emisores y los receptores legítimos sean los que tengan acceso a la
comunicación de manera íntegra.

Características de SSL v3

Características SSL

Separación de responsabilidades:

Utiliza algoritmos independientes para el cifrado, autenticación e integridad de datos,


con claves diferentes (claves secretas) para cada función. Esto permite la utilización de
acuerdo con las leyes, por ejemplo las leyes de exportación de EEUU o las leyes anti-
criptografía de Francia.

Eficiencia:

Aunque la fase de saludo utiliza algoritmos de clave pública, la operativa de intercambio


de datos se realiza mediante cifrado y des-cifrado de clave privada. Los algoritmos de
clave privada son más rápidos. Además la fase de saludo no tiene que repetirse para
cada comunicación entre un cliente y un servidor, la “clave secreta” negociada puede
conservarse entre conexiones SSL. Esto permite que las nuevas conexiones SSL inicien
la comunicación segura de inmediato, sin necesidad de realizar lentas operaciones de
clave pública.

Autenticación con base en certificados:

Se utilizan certificados X.509 para la autenticación. Los certificados de servidores son


obligatorios, mientras que los de cliente son opcionales.

Independiente de protocolos:

Aunque SSL se diseñó para funcionar sobre TCP/IP, puede hacerlo sobre cualquier
protocolo confiable orientado a conexiones
Protección contra ataques:

SSL protege frente a ataques de hombre en el medio (MITM) o de reproducción.En un


ataque de hombre en el medio (MITM), el atacante intercepta todas las comunicaciones
entre las dos partes, haciendo a cada una de ellas creer que se comunica con la otra.
SSL protege contra estos ataques mediante certificados digitales que nos garantizan
con quien se está hablando.

En un ataque de reproducción, un atacante captura las comunicaciones entre las dos


partes y reproduce los mensajes. SSL no permite este tipo de ataques.

Soporte a algoritmos heterogéneos:

Aunque depende de las implementaciones, SSL suele dar soporte a diversos algoritmos:
Intercambio de claves (RSA y Diffie – Hellman).

Compendio (MD5, SHA-1).

Cifrado (RC2, RC4, DES, Triple DES, Idea, Fortezza).

Soporte de compresión:

SSL permite comprimir los datos del usuario antes de ser cifrados mediante múltiples
algoritmos de compresión.

Compatibilidad hacia atrás con SSL v2:

Los servidores de SSL v3 pueden recibir conexiones de clientes SSL v2 y manejar el


mensaje de manera automática.

Este se compone de dos capas:

SSL Record Protocol. Está ubicada sobre algún protocolo de transporte confiable
(como por ejemplo TCP) y es usado para encapsular varios tipos de protocolos de mayor
nivel.

SSL Handshake Protocol. Es uno de los posibles protocolos que pueden encapsularse
sobre la capa anterior y permite al cliente y al servidor autenticarse mutuamente,
negociar un algoritmo de cifrado e intercambiar llaves de acceso.

Una de las ventajas del SSL es que es independiente del protocolo de aplicación, ya
que es posible ubicarlo por encima del mismo en forma transparente.

Las conexiones realizadas por medio de este protocolo tienen las siguientes
propiedades básicas:
Privada. Después de un proceso inicial de "handshake" en el cual se define una clave
secreta, se envía la información encriptada por medio de algún método simétrico (DES,
RC4).

Segura. La identidad de cada extremo es autenticada usando métodos de ciftrado


asimétricos o de clave pública (RSA, DSS).

Confiable. El transporte del mensaje incluye un control de la integridad del mismo


usando una MAC cifrada con SHA y MD5.

Una sesión SSL posee diferentes estados y es responsabilidad del SSL Hanshake
Protocol la coordinación de los mismos entre el cliente y el servidor para que ambos
funcionen en forma consistente, a pesar del hecho que no estén exactamente en
paralelo. Además, cada sesión SSL puede tener múltiples conexiones seguras y cada
parte puede tener múltiples sesiones seguras.

El estado de las sesiones incluye los siguientes elementos:

Session Identifier: Es una secuencia arbitraria de bytes elegida por el servidor para
identificar una sesión en estado activo o retomable.Peer Certificate: Certificado X509
de la parte. Puede ser nulo.

Compression Method: El algoritmo utilizado antes de realizar el encriptado.

Cipher Spec: Especifica el algoritmo de compresión de los datos (puede ser ninguno,
DES, etc.) y el algoritmo para la MAC, tal como MD5 o SHA.

Master Secret: Es un secret de 48 bytes compartido entre el cliente y el servidor.

Las Resumable: Es un flag que indica si la sesión puede ser utilizada para iniciar
nuevas conexiones.

El estado de las sesiones incluye los siguientes elementos:


Server and Client Random: Secuencia de bytes elegidas por el servidor y el cliente
para cada conexión.
Server Write MAC Secret: Es el secret usado en operaciones MAC sobre datos escritos
por el servidor.
Client Write MAC Secret: Es el secret usado en operaciones MAC sobre datos escritos
por el cliente.

Server Write Key: Es la clave de cifrado para los datos que van del servidor al cliente.

Client Write Key: Es la clave de cifrado para los datos van del cliente al servidor.

Initialization Vectors: Utilizado para bloques de cifrado en estado CBC.

Sequence Numbers: Cada parte mantiene una secuencia separada de números para
los mensajes transmitidos y recibidos para cada conexión. Cuando una de las partes
envía o recibe un mensaje de cambio Cipher Spec, la secuencia correspondiente es
puesta a cero.

Contramedidas

Basándose en la información actual, parece que la principal contramedida sería


desactivar la compresión SSL/TLS, una verdadera lástima en escenarios de conexiones
con poco ancho de banda, especialmente en aquellos sitios que contienen muchas
imágenes pequeñas o con Ajax pesados que requieren muchas peticiones pequeñas.

También y debido a que el ataque se centra en descifrar las credenciales de sesión, las
mejores prácticas estándar para la protección de estas tokens también podrían limitar el
impacto:

 Invalidar las credenciales de sesión al salir/idle para limitar la duración de la


exposición.
 Invalidar y volver a emitir tokens de sesión periódicamente para limitar la
duración de la exposición.
 Tokens de sesión asociados a una IP de origen específica para evitar su
reutilización en otros lugares.
 Regenerar los tokens de sesión enlazados a un origen cuando esa fuente envía
una solicitud con un token no válido. Esto limita la capacidad de un atacante de
realizar fuerza bruta o adivinar tokens.
 Monitorizar los logs del servidor para identificar a un ataque en curso: al intentar
enumerar los tokens de sesión, el agente de la víctima generará un gran número
de peticiones al servidor web. Un IPS podría además detener el ataque de una
forma proactiva.
 Las actualizaciones de software podrían hacer frente a este ataque y
probablemente estarán disponible pronto, y hay algunos indicios de que muchos
fabricantes ya han actualizado sus productos de forma silenciosa.
PROTOCOLO TLS

Es un protocolo mediante el cual se establece una conexión segura por medio de un


canal cifrado entre el cliente y servidor. Así el intercambio de información se realiza en
un entorno seguro y libre de ataques. La última propuesta de estándar está
documentada en la referencia RFC 2246.

Normalmente el servidor es el único que es autenticado, garantizando así su identidad,


pero el cliente se mantiene sin autenticar, ya que para la autenticación mutua se
necesita una infraestructura de claves públicas (o PKI) para los clientes. Estos
protocolos permiten prevenir escuchas (eavesdropping), evitar la falsificación de la
identidad del remitente y mantener la integridad del mensaje en una aplicación cliente-
servidor.

Funcionamiento del Protocolo

El protocolo está dividido en dos niveles:

Protocolo de registro TLS (TLS Record Protocol).

Protocolo de mutuo acuerdo TLS (TLS Handshake Protocol).

El de más bajo nivel es el Protocolo de Registro, que se implementa sobre un protocolo


de transporte fiable como el TCP. El protocolo proporciona seguridad en la conexión con
dos propiedades fundamentales:

La conexión es privada. Para encriptar los datos se usan algoritmos de cifrado simétrico.
Las claves se generan para cada conexión y se basan en un secreto negociado por otro
protocolo (como el de mutuo acuerdo). El protocolo también se puede usar sin
encriptación.

La conexión es fiable. El transporte de mensajes incluye una verificación de integridad.

El Protocolo de mutuo acuerdo, proporciona seguridad en la conexión con tres


propiedades básicas:

La identidad del interlocutor puede ser autentificada usando criptografía de clave


pública. Esta autentificación puede ser opcional, pero generalmente es necesaria al
menos para uno de los interlocutores.
La negociación de un secreto compartido es segura.

La negociación es fiable, nadie puede modificar la negociación sin ser detectado por los
interlocutores.

El protocolo TLS está diseñado para autenticar la identidad del emisor y del receptor,
así como la confidencialidad e integridad de la información intercambiada:

• Autenticación: la identidad del emisor y receptor son confirmadas.

• Confidencialidad: los datos enviados se encriptan de manera que una tercera persona
pueda entender el mensaje.

• Integridad: los datos recibidos no han sido alterados, por accidente o


fraudulentamente.

La llave privada se utiliza para encriptar los datos, es conservada por el emisor (el sitio
web). La llave pública se utiliza para desencriptar la información y se envía a los
receptores (navegadores web) por medio de un certificado. Cuando utiliza TLS en
Internet, el certificado se entrega por medio de una autoridad de certificación, como
Verisign®. El sitio web paga a la autoridad certificadores por entregar un certificado que
garantice la autenticación del servidor y que contenga la llave pública que permita el
intercambio de datos en modo seguro.

DESCRIPCIÓN DEL PROTOCOLO TSL

se basa en tres fases básicas:

Negociación: Los dos extremos de la comunicación (cliente y servidor) negocian que


algoritmos criptográficos utilizarán para autenticarse y cifrar la información, Actualmente
existen diferentes opciones:

Autenticación y Claves: Los extremos se autentican mediante certificados digitales e


intercambian las claves para el cifrado, según la negociación.

Transmisión Segura: los extremos pueden iniciar el tráfico de información cifrada y


autentica.

OBJETIVOS TLS

Seguridad criptográfica. El protocolo se debe emplear para establecer una conexión


segura entre dos partes.

Interoperabilidad. Aplicaciones distintas deben poder intercambiar parámetros


criptográficos sin necesidad de que ninguna de las dos conozca el código de la otra.
Extensibilidad. El protocolo permite la incorporación de nuevos algoritmos
criptográficos.

Eficiencia. Los algoritmos criptográficos son costosos computacionalmente, por lo que


el protocolo incluye un esquema de cache de sesiones para reducir el número de
sesiones que deben inicializarse desde cero (usando criptografía de clave pública).

APLICACIONES DEL PROTOCOLO TLS

El protocolo SSL/TLS tiene multitud de aplicaciones en uso actualmente. La mayoría


de ellas son versiones seguras de programas que emplean protocolos que no lo son.
Hay versiones seguras de servidores y clientes de protocolos como el http, nntp, ldap,
imap, pop3

MEDIAS DE SEGURIDAD DEL PROTOCOLO TLS

Numera todos los registros y usa el número de secuencia en MAC. Usa un resumen de
mensaje mejorado con una clave (de forma que solo con dicha clave se pueda
comprobar el MAC).

Protección contra varios ataques conocidos (incluyendo ataques man-in-the-middle),


como los que implican un degradado del protocolo a versiones previas (por tanto, menos
seguras), o conjuntos de cifrados más débiles.

El mensaje que finaliza el protocolo handshake (Finished) envía un hash de todos los
datos intercambiados y vistos por ambas partes. La función pseudo aleatoria divide los
datos de entrada en 2 mitades y las procesa con algoritmos hash diferentes (MD5 y
SHA), después realiza sobre ellos una operación XOR. De esta forma se protege a sí
mismo de la eventualidad de que algunos de estos algoritmos se tornen vulnerables en
el futuro.
REFERENCIAS BIBLIOGRAFICAS

BINARIA, E. (31 de 03 de 2012). Certificados de Seguridad SSL, funcionamiento, tipos y


características. Obtenido de http://www.expresionbinaria.com/certificados-de-
seguridad-ssl-funcionamiento-tipos-y-caracteristicas/

Books.google.com.co. (s.f.). Instalacion y configuracion de servicios web. Obtenido de


Protocolo HTTP:
https://books.google.com.co/books?id=aOb3rTabO44C&pg=PA150&lpg=PA150&dq=1.
+Protocolos+de+la+Web+a.+HTTP+CARACTERISTICAS+PRINCIPALES&source=bl&ots=k
4IpuNleQl&sig=9V-wozsT_4YwAJY1Z02KnaAC3B4&hl=es-419&sa=X&ved=0ahUKEwjvz-
aIke3ZAhUGzlkKHaSXCWE4ChDoAQhTMAg#v=

Ecured.cu. (14 de 03 de 2018). Obtenido de Protocolo de Transferencia de Hipertexto:


https://www.ecured.cu/Protocolo_de_Transferencia_de_Hipertexto

Ecured.cu. (14 de 03 de 2018). Protocolo TLS (Transport Layer Security. Obtenido de


https://www.ecured.cu/TLS

Mexico, U. N. (10 de 03 de 2017). Aspectos Básicos de la Seguridad en Aplicaciones Web.


Obtenido de https://www.seguridad.unam.mx/historico/vulnerabilidadesDB/

ROEL, A. H. (s.f.). El protocolo SSL. Obtenido de


http://penta2.ufrgs.br/gereseg/unlp/tut1998/ssl.htm