UNIDAD 1:TAREA1 – IMPLEMENTACIÓN DEL SITIO Y PUESTA EN MARCHA
DE LAS APLICACIONES
TRABAJO COLABORATIVO
Alumno:
Jorge Luis Aguilar Conde Código 85456009
Julián Méndez Orozco Código 1093213119
Seguridad en Aplicaciones Web
Grupo Colaborativo 233008_1
Tutor: Edgar Mauricio López
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA (UNAD).
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERA
ZCBC CEAD JAG
INGENIERIA DE SISTEMAS
BOGOTÁ D. C.
Septiembre 24 de 2019.
PUNTO 1.
HTTP
El http (por su siglas en inglés HyperText Transfer Protocol o Protocolo de
Transferencia de Hipertexto) es un protocolo que sirve para la transmisión de
información en la web, dicho de otra manera establece una comunicación entre un
computador solicitante y un servidor web que contiene dicha información, esta
comunicación se realiza en un mismo idioma gracias a la función del protocolo
http, se puede afirmar que es el modelo cliente-servidor, y además la información
resultante no se encuentra cifrada.
HTTPS
HTTPS es el Protocolo de Transferencia de Hipertexto Seguro, es decir es un
protocolo de comunicación que protege la integridad y la confidencialidad de los
datos entre el computador solicitante y el servidor web. Para habilitar el https se
debe conseguir un certificado de seguridad que lo emite una CA o Autoridad de
Certificación. La información que viaja mediante el https se encuentra protegida
gracias al uso de los certificados de seguridad SSL/TLS que son protocolos de
seguridad que funcionan en la capa de aplicación y en la capa de transporte del
modelo OSI.
Fuente: [Link]
Se puede afirmar que el protocolo https para funcionar necesita de un certificado
SSL/TLS, y estos se utilizan cuando exista información personal o sensible que se
tenga que proteger, como los usuarios, y claves de aplicativos, cuentas bancarias
entre otras cosas.
SSL
SSL por sus siglas en ingles Secure Sockets Layer, es un protocolo cuya finalidad
es permitir transmitir información de ida y vuelta de manera segura. Las
aplicaciones que utilizan el protocolo SSL lo hacen para cifrar y descifrar la
información enviada entre las partes.
Para establecer una conexión segura SSL, se debe tener una clave de cifrado que
le asigna una autoridad de certificación en forma de un Certificado. Se crea una
clave pública y una privada. La pública permite que los datos sean cifrados por
cualquier persona y solo pueden ser descifrados por el servidor web que tiene la
clave privada. Reciprocamente la información cifrada con la clave privada se
descifran con la clave pública, lo que garantiza que la información sea original
desde sus inicios.
Fuente: [Link]
El protocolo SSL es antiguo, fue creado a principios de los 1990, la última versión
es SSL 3.0 fue lanzada en 1996, pero en 2015 fue declarada obsoleta por el IETF
(Internet EngineeringTaskForce, en español, Grupo de Trabajo de Ingeniería de
Internet) su reemplazo es el protocolo TLS.
Se debe tener en cuenta que un certificado SSL contiene la siguiente información:
- Nombre del titular del certificado
- Número de serie del certificado y fecha de vencimiento
- Firma digital de la autoridad que emite el certificado
- Copia de la clave pública del titular del certificado
TLS
Se define como TransportLayer Security (TLS) o seguridad en capas de
transporte, es un protocolo que encripta la información y garantiza las
comunicaciones en la web. También se puede afirmar que el TLS es una versión
actualizada y más segura del protocolo SSL.
Fuente: [Link]
permite-descifrar-mensajes-cifrados-rsa/
El TLS encripta la información mediante dos protocolos en capas diferentes: el
protocolo de autenticación (llamado TLS RecordProtocol) y el de mutuo acuerdo
(conocido también como TLS HandshakeProtocol).
a) TLS RecordProtocol: Se realiza la autenticación para que la transmisión de
datos sea mediante una conexión privada y confiable, el cifrado se lleva a cabo
con la integridad del emisor-receptor.
b) TLS HandshakeProtocol: Cada mensaje se especifica en el protocolo, en un
campo (llamado content_type) y se realiza cifrado y empaquetado con un código
de autentificación (o MAC).
El protocolo TLS, se realiza en un canal seguro y el cifrado se lleva a cabo entre
cliente y servidor en donde se negocia el cifrado o criptografía del mensaje, por
último, se autentifican las claves del cifrado y se realiza una transmisión segura.
Se debe tener en cuenta que el protocolo SSL se ubica en la capa de sesión del
modelo OSI, y el protocolo TLS se encuentra en la capa de transporte.
TLS es el estándar Web para encriptar las comunicaciones entre los usuarios y el
protocolo SSL, en la mayoría de los casos en sitios de comercio electrónico.
PUNTO 2.
Cross Site Scripting
Conocido como XSS, que traduce Secuencias de comandos de sitios cruzados y
consiste en un ataque que inyecta código malicioso en un sitio web. Para este tipo
de ataques se utiliza el lenguaje JavaScript en la mayoría de los casos. Se debe
tener en cuenta que para las páginas web dinámicas parte del código se ejecuta
del lado del usuario y otra del lado del servidor web, cuando existe este tipo de
ataques el código se ejecuta del lado de los usuarios por intermedio del navegador
que esté utilizando.
En los diferentes tipos de ataque XSS, se puede:
- Sustraer las cookies que se encuentran alojadas en los equipos de los usuarios.
- Modificar la apariencia de las páginas web con el fin de se vea y se maneje de
manera diferente.
- Descargar malware o código malicioso para cambiar la configuración del usuario.
- Acceder a sitios no autorizados.
- Instalar publicidad.
- Vulnerar conexiones SSL.
Existen dos tipos de ataques XSS, el persistente y el no persistente.
En el ataque XSS persistente, se conoce también como directo o XSS
almacenado y consiste en que el código malicioso se guarda en la base de datos
del lado del servidor, exactamente en el sitio web, es muy dañino porque es
insistente en múltiples solicitudes o peticiones, además ataca a varios usuarios en
una solo solicitud.
En el XSS no persistente, que también es llamado XSS reflejado o indirecto, se
envía código malicioso como una solicitud HTTP y su ataque se puede dar en un
momento determinado, esto ocurre cuando un usuario hace clic en una parte del
código malicioso y este se disparará únicamente en ese instante.
Como nota curiosa al ataque Cross Site Scripting - XSS, no se llamó con las
iniciales CSS para que no existiera confusión con el lenguaje de Hojas de Estilo en
Cascada o CSS (Cascading Style Sheets).
Cross SiteRequestForgery
CSRF o XSRF - Falsificación de solicitud de sitios cruzados, es un tipo de ataque
que ocurre cuando una página, script o sitio web, engaña al usuario para que visite
una tercera página o URL ante la cual previamente ya se ha autenticado dicho
usuario, entonces el código malicioso toma el control del sitio debido a esa
condición de usuario autenticado.
El ataque CSRF es muy parecido a un ataque XSS reflejado, en el cual un ataque
induce al usuario a realizar una acción en la aplicación web, para el caso del
CSRF el ataque se realiza en el sitio web.
El proceso de ataque CSRF se puede resumir de la siguiente forma:
- El código malicioso debe vulnerar e ingresar a un código HTML de un sitio web
en un determinado servidor X.
- El usuario establece conexión a la aplicación web desde otro servidor Y.
- El usuario entra a la aplicación web del servidor X, donde se encuentra el código
malicioso.
- El navegador del usuario hace una petición (ataque) a la aplicación del servidor
Y, siendo esto transparente para dicho usuario.
Fig. Proceso de Ataque CSRF,
Fuente: [Link]
PUNTO 3. Ataques de inyección de código
SQL Injection
Es un tipo de vulnerabilidad de los sistemas informáticos, que consiste en inyectar
código SQL en aplicaciones que utilicen bases de datos con el objetivo de obtener
información de la base de datos, insertar, borrar o modificar registros.
SQL inyección es considerado como uno de los problemas de vulnerabilidad que
más impactan a los negocios; ya que puede exponer de forma pública mucha
información sensible que se encuentra en la base de datos de las empresas,
información como: nombre de usuario, contraseña, direcciones, números de
teléfono y en el peor de los casos detalles de tarjetas de crédito.
La imagen anterior muestra una arquitectura básica de red cliente - servidor,
donde se aprecia como para ejecutar una rutina SQL inyección no importa el
lenguaje de programación utilizado en la creación de la aplicación, ya que SQL es
un lenguaje de base de datos independiente.
Cuando el programador enmascara de forma incorrecta el formulario donde el
usuario ingresa datos, puede suceder que el atacante configure una consulta que
siempre sea verdadera y permita observar todos los registros de una tabla de la
base de datos. Ejemplo:
Si el atacante escribe en el campo de contraseña clave' OR 1='1', esto producirá una
consulta que siempre va ser verdadera que se vería en el back-end así:
sql = "SELECT id FROM users WHERE username='' AND clave='clave' OR 1='1'
Como se puede observar en la consulta uno siempre va a ser igual a uno, lo que
produce que se muestre toda la información dentro de la tabla, de aquí en
adelante es simplemente utilizar bien el lenguaje SQL, para hacer todo tipo de
consultas en la base de datos vulnerable.
Otro ataque manipulando en los parámetros php el identificador que consulta a la
base de datos, ya que si el atacante observa una consulta a la base de datos
mediante identificador que se encuentra esta forma: …/[Link]?id=22 podría crear
en la dirección del navegador el siguiente cambio: …/[Link]?id=22+or+1=1
logrando con esto que se muestran todos los datos de usuario, debido a que la
consulta siempre será verdadera.
LDAP Injection
LDAP es un protocolo de acceso ligero que trabaja bajo el protocolo tcp/ip, creado
para la consulta bases de datos jerárquicas, con el paso del tiempo el protocolo de
LDAP se utiliza para consultas y modificaciones de objetos almacenados.
Por otro lado LDAP puede ser sometido por un atacante mediante la inyección de
scripts, muy al estilo de SQL inyección, provocando de esta forma creciente en
información de la base de datos y posteriormente la administración de la misma.
PUNTO 4.
INYECCIÓN DE FICHEROS
Remote File inclusion
Es una vulnerabilidad que sólo afecta a las páginas dinámicas en PHP, lo que se
pretende con este tipo de vulnerabilidad es ejecutar en el computador servidor una
ventana de comandos, un solo por un archivo de forma remota, por lo general es
el primer paso para adquirir control total sobre un sistema y posteriormente
explotarlo para beneficio del atacante.
Local File inclusion
es una vulnerabilidad que pretende incorporar en el servidor archivos que ya se
encuentran allí localmente, logrando tener control sobre el código fuente de dichos
archivos lo cual puede provocar que el atacante a cabo una modificación de
parámetros en el archivo para su propio beneficio.
Lo siguiente es lo que puede arrojar esta vulnerabilidad:
PUNTO 5. Otros
Clickjacking
La palabra clickjacking es la unión de click (clic) + jacking (secuestrar), osea que
traduce robar o secuestrar clic, se conoce también como un ataque de reparación
de la interfaz del usuario o UI Redressing - ataque de compensación UI (UI en
inglés User Interface, en español Interfaz del Usuario).
Es una técnica maliciosa, parecida al phishing ya que vulnera la interfaz del
usuario de determinado sitio web, con el fin de obtener beneficios. Consiste en
engañar al usuario para que realice clic en ciertos lugares de la página que este
consultando, para después descargar archivos con código malicioso y obtener
información confidencial, también puede tener acceso y control del computador
utilizado. Esto puede ocurrir en cualquier navegador.
La principal causa de esta técnica es el uso de la etiqueta <iframe> de HTML (el
elemento HTML <iframe> permite incrustar otra página HTML en la página
principal), que permite incrustar una página web dentro de otra página web. Esto
se presenta en la mayoría de los casos en el proceso de autenticaciones o entrada
de datos de aplicaciones web.
En otras palabras, este tipo de ataque superpone dos páginas, la principal que es
donde el usuario quiere dar clic y la otra que se encuentra superpuesta sobre la
principal y con un contenido que engaña al usuario para realizar clic no deseados.
Los ataques se pueden hacer de varias maneras, gracias al uso del lenguaje
JavaScript:
- Juegos en el navegador: los usuarios hacen clic en supuestos elementos que se
encuentran en el juego, pero en realidad están descargando o disparando código
malicioso.
- Botones de descarga: Estos aparecen en distintos lugares de la página y su fin
es disparar programas malintencionados. Por ejemplo, una imagen de video con el
botón de reproducción, en este caso se asume que al hacer clic en el botón de
reproducción comenzará el video, pero lo que pasa es otra cosa como ir a otro
sitio.
Prevenir ataques clickjacking
- Proteger el navegador instalando complementos NotScript y NoScript, cuya
función es identificar dominios confiables.
- Instalar herramientas de seguridad de aplicaciones web, esto disminuye la
cantidad de esfuerzos para filtrarse en un determinado sistema.
- Utilizar opciones X-Frames, esto permite decidir que un navegador muestre una
etiqueta <iframe>, los navegadores como Chrome, Firefox, Safari, Edge y Explorer
soportan la opción X-Frame-Options.
Webtrojans
Un webtrojans son archivos subidos a un servidor web, estos archivos se deben
de comprobar antes de ser guardados en el servidor, ya que pueden contener
código malicioso.
En otras palabras, en webtrojans es una shell remota que se guarda en un
servidor web (shell es un programa informático que suministra una interfaz de
usuario para acceder al sistema operativo), pero en su interior oculta
códigomalintencionado.
Un ejemplo de esto es enviar un archivo imagen y en su cabecera ocultar un
código malicioso.
REFERENCIAS BIBLIOGRAFICAS
González, Lorena y García, José María. (2014). Sistemas seguros de acceso y
transmisión de datos (MF0489_3), IC Editorial, ProQuest Ebook Central. Pp. 157 –
191. Recuperado de:
[Link]
&query=ssl#
Escrivá, Gema; Romero Rosa; Ramada, David y Onrubia, Ramón. (2013).
Seguridad informática, Macmillan Iberia, S.A. ProQuest Ebook Central. Pp. 175 –
179. Recuperado de:
[Link]
[Link]. Concepto de HTTP. Recuperado de:
[Link]
Blogthinkbig.(2013). Qué s HTTPS y por qué es importante. recuperado de:
[Link]
ionos.(2018). Inyección SQL: la importancia de proteger tu sistema de base de
datos. Recuperado de:
[Link]
precauciones/
LDAP Injection & Blind LDAP Injection. Recuperado de:
[Link]
Testing for Remote File Inclusion. Recuperado de:
[Link]