Você está na página 1de 5

Seguridad en Aplicaciones Web

Fase 2 – Trabajo Colaborativo


Victor Manuel Garnica Carrillo
vmgarnicac@unadvirtual.edu.co
Omar.L.Calpa.M

Universidad Nacional Abierta y A Distancia 'UNAD'


Norte de Santander, Colombia


Resumen— El protocolo SSL, "Secure Socket Layer" (en español, capa de
puertos seguros), es el predecesor del protocolo TLS
"Transport Layer Security" (Seguridad de la Capa de
Palabras clave—Ataques de Inyección de Scripts, Cross Site Transporte, en español). Se trata de protocolos criptográficos
Scripting, Cros Site Request Forgery, Ataques de Inyección de que proporcionan privacidad e integridad en la comunicación
Código, SQL Injection, LDAP Injection, Inyección de entre dos puntos en una red de comunicación. Esto garantiza
Ficheros, Remote File Inclusión,, Local File Inclusión,,
que la información transmitida por dicha red no pueda ser
Clickjacking, WebTrojans.
interceptada ni modificada por elementos no autorizados,
garantizando de esta forma que sólo los emisores y los
Abstract— receptores legítimos sean los que tengan acceso a la
comunicación de manera íntegra.
Keywords—.
TLS
I. INTRODUCCIÓN
Servidor seguro Servidor que protege las páginas web del
host usando SSL o TLS. ... SSL Es el acrónimo de Secure
En la fase dos abordaremos lo relacionado protocolos de la Sockets Layer, capa de sockets seguros. Protocolo para
web, https, SSL, tls, para ello nos basaremos en los navegadores web y servidores que permite la autenticación,
protocolos. Esta tarea le corresponde a los protocolos de red, encriptación y des encriptación de datos enviados a través de
que, en conjunto con sus respectivas familias de protocolo, Internet.
actúan en la llamada capa de mediación o de red, el nivel 3
en el modelo OSI y establecen una serie de acuerdos para el
intercambio de datos, regulando, así, las condiciones para el
transporte, el direccionamiento, el enrutamiento (camino del III. ATAQUES DE INYECCIÓN DE SCRIPTS
paquete) y el control de fallos. Esto significa que, para que
dos ordenadores se puedan comunicar entre sí, han de utilizar
los mismos protocolos de red, de forma que acuerdan las Cross Site Scripting
mismas condiciones para la transmisión, Así como también
los temas relacionados con: Ataques de Inyección de Scripts. XSS ocurre cuando un atacante es capaz de inyectar un script,
Cross Site Scripting, Cros Site Request Forgery, Ataques de normalmente JavaScript, en el output de una aplicación web
Inyección de Código, SQL Injection, LDAP Injection, de forma que se ejecuta en el navegador del cliente. Los
Inyección de Ficheros, Remote File Inclusión, Local File ataques se producen principalmente por validar
Inclusión, Clickjacking, WebTrojans. incorrectamente datos de usuario, y se suelen inyectar
mediante un formulario web o mediante un enlace alterado.
Los desarrolladores muchas veces subestiman el potencial
peligro que conlleva este tipo de ataques. Si un atacante
puede inyectar JavaScript en el output de una aplicación web
II. PROTOCOLOS DE LA WEB y ejecutarlo, podrá ejecutar cualquier código JavaScript en el
navegador de un usuario. Algunos de los objetivos que se
HTTP quieren conseguir con ataques XSS son: robar cookies y
sesiones de usuarios, modificar el sitio web, realizar HTTP
El Protocolo de transferencia de hipertexto (en inglés: Request con la sesión del usuario, re direccionar a usuarios a
Hypertext Transfer Protocol o HTTP) es el protocolo de sitios dañinos, atacar al navegador o instalar malware,
comunicación que permite las transferencias de información reescribir o manipular extensiones de navegador, etc.
en la World Wide Web. Desde la perspectiva del navegador, el script es originado por
la aplicación web por lo que se asume como fuente fiable.
SSL Esta es una de las causas que permiten que estos ataques se
puedan llevar a cabo.

y cracking para conseguir acceder a información
restringida, modificar privilegios, buscar acceder a
sistemas restringidos y altamente protegidos.
Cros Site Request Forgery
Este tipo de ataque puede ser usado con el objetivo
A menudo suelen verse en las noticias ataques de
ciberdelincuentes a usuarios y a celebridades, cuyas cuentas de:
sociales son comprometidas o inclusive ven sus contenidos  Modificar valores arbitrariamente en una BD,
privados filtrados. Pero hay muchos otros ataques, quizás la generando impacto hasta en cambio de la
mayoría, que no salen a la luz y ni sus propias víctimas se apariencia web o comprometer datos sensibles.
enteran.  Instalar malware o ejecutar código malicioso en
Las técnicas utilizadas por los atacantes comienzan a ser cada un servidor con código scripting (PHP, ASP).
vez más sofisticadas, muchas veces imperceptibles para los  Aumentar privilegios como superusuario
perfiles no tan técnicos. Es por eso que en esta entrada, mediante vulnerabilidades del SO.
veremos cómo funciona una técnica utilizada por  Atacar usuarios de pág. Web con inyección de
cibercriminales en sitios web para el robo de información, con código HTML o scripts.
el objetivo de poder prevenir que se vean afectados.
La técnica llamada falsificación de petición en sitios
cruzados, proviene de su nombre en inglés Cross Site Request Validar entradas y salida de los datos es importante
Forgery (CSRF o XSRF). Este ataque fuerza al navegador para evitar este tipo de ataques, por ello es pertinente
web de su víctima, validado en algún servicio (como por validar:
ejemplo correo o home banking) a enviar una petición a una  Caracteres permitidos.
aplicación web vulnerable.  Formato de los datos.
Esta aplicación se encarga de realizar la acción elegida a
 Cantidad de datos esperados.
través de la víctima, debido que la actividad maliciosa será
procesada en nombre del usuario logueado. Al contrario de
Factores de riesgo.
los ataques conocidos como Cross Site Scripting (su
traducción sería ordenes en sitios cruzados – XSS) los cuales  Cuando la web lleva tiempo sin actualizar su
explotan la confianza del usuario para con un sitio particular; contenido.
el Cross Site Request Forgery explota la confianza que un  Cuando los plugins o themes no son del
sitio web tiene en un usuario particular. repositorio oficial. Esto puede provocar
Los riesgos que plantea la explotación de CSRF incluyen vulnerabilidades y agujeros de seguridad
distintos tipos de actividades ilícitas e indeseadas. Desde el  Cuando no se ha modificado la contraseña de
acceso a cuentas privadas de usuarios, pasando por acusar a acceso del gestor FTP y panel de control del
alguien de acceder a sitios de contenido pedófilo e inclusive, CMS.
hasta habilitar algún tipo de filtro o regla en el correo
electrónico para que todos los correos se reenvíen a otra
cuenta. Como vemos la explotación de esto puede conllevar a Una vez infectado que podemos hacer:
graves consecuencias.  Revisar, modificar y eliminar aquellos archivos
de dudosa apariencia que pueda tener código
infectado.
 Restaurar la aplicación y aplicar mejoras.
IV. ATAQUES DE INYECCIÓN DE CÓDIGO  Buscar apoyo con entidades externos para
auditoria interna.
Esto ocurre cuando es posible enviar datos inesperados a un  Hacer uso de herramientas y otras aplicaciones
intérprete, es común en código antiguo, en consultas como web para identificar archivos infectados con
SQL, LDAP, Xpath o NoSQL, también son vulnerables virus, por ejemplo: virustotal.com.
algunos comandos de sistema operativo, analizadores  Revisar todas las contraseñas de acceso, validarlas y si
sintácticos de XML, cabeceras SMTP, parámetros de fuera necesario mejorar las mismas de tal forma que
funciones, etc. Aunque son fáciles de encontrar cuando se sean más intrínsecas.
examina código, se dificulta a la hora de descubrir mediante  Considere el uso de recaptcha en formularios web de
pruebas funcionales. Existen utilidades de escaneo que inicio de sesión.
pueden ayudar a encontrar estos defectos.  Mantener copias de seguridad del alojamiento web.

El resultado de este ataque en la potencial perdida de


SQL Injection
información o corrupción de datos, denegación de
acceso o interrupción de acciones, e incluso tomar
control de un sistema. Una inyección de código SQL se aprovecha de la misma
sintaxis del lenguaje para introducir comandos de manera
Algunos tipos de inyección son errores de ilícita permitiendo leer o modificar datos, comprometiendo el
interpretación. Esta técnica es popular en el hacking contenido original de la consulta.
Algunos lenguajes ya implementan funciones para ello,
Lo más habitual en peticiones en una consulta a BD hacia una por ejemplo PHP con mysql_real_scape_string(),
web es la petición de nombre de usuario y contraseña. tomando como parámetro la cadena y modificándola
retornándola de forma segura y limpia de caracteres
Esta técnica de ataque es peligrosa, antigua y muy frecuente, especiales.
adicional muy vigentes puesto existen programas que  Delimitar los valores: es decir hacer uso de comillas
automatizan la tarea permitiendo a los atacantes robos con simples en sus parámetros. A manera de ejemplo:
más facilidad y rapidez.
SELECT nombre FROM usuarios WHERE id_user =
Si el atacante es bueno, difícilmente se podría reconocer una $id por SELECT nombre FROM usuarios WHERE
inyección SQL, hasta que evidentemente los datos sufrieron id_user = ‘$id’
daño o se cometiera el robo.  Validación de datos introducidos por el usuario.
Realizar comprobación del tipo de dato que estamos
La eliminación de una inyección SQL es responsabilidad de esperando. Algunos lenguajes poseen funciones, un
los sitios o aplicaciones Web, los usuarios deben estar atentas ejemplo para php: ctype_digit() para saber si es número,
a las recomendaciones y anuncios de las empresas que o ctype_alpha si es una cadena.
pudieron resultar afectadas, para proceder a reasignar claves  Acompañado al anterior método de validación, también
más seguras. Los propietarios de las aplicaciones web son se recomienda comprobar la longitud de los datos para
quienes pueden evitar este tipo de ataques, implementando descartar posibles técnicas de inyección. Strlen() es una
políticas de seguridad y proteger sus usuarios. función relacionada en PHP para tal fin.
 Asignación al mínimo de privilegios con la conexión de
Los principales problemas que causan este ataque tenemos la
la Base de Datos.
confidencialidad, autenticación e integridad.
 No menos importante y por no desmeritar a los
A manera de ejemplo tenemos programadores, se debe programar bien. Ponerle el
interés para desarrollar una aplicación totalmente
ORIGINAL INYECTADA segura. Adicional acudir a auditorias de código para
asegurarnos de que no hemos dejado ningún tipo de
puertas abierta.
SELECT SELECT
ListaUsuarios.NombreUsuario ListaUsuarios.NombreUsu
FROM ListaUsuarios ario
WHERE FROM ListaUsuarios
ListaUsuarios.NombreUsuario WHERE Herramientas de análisis
= 'NombreUsuario' ListaUsuarios.NombreUsu
AND ario = 'NombreUsuario' Podemos hacer uso de algunas aplicaciones para testear
nuestras aplicaciones para buscar este tipo de
ListaUsuarios.Contraseña = AND vulnerabilidades:
'Contraseña' ListaUsuarios.Contraseña  SQLiHelper 2.7 SQL Injection.
= 'Contraseña' OR '1'='1'  Pangolin: de pago
 SQLMap: de código abierto.

Como dato adicional dejo a disposición los siguientes links


Este tipo de ataque surge la definición de Blind SQL para que sea de su estudio, agrado y autoaprendizaje
Injection, como un ataque a ciegas por inyección de SQL, con dependiendo del lenguaje de programación que estén usando
una página web que no aparece ningún mensaje de error al para que puedan implementar mayor seguridad en sus
ejecutar una sentencia errada de SQL, donde se realiza aplicativos:
pruebas hasta dar con el nombre de los campos o tablas sobre
los que podrá actuar.  http://phpsec.org/projects/guide/
 http://www.devshed.com/c/a/PHP/PHP-Security-
Medidas para contrarrestar estos ataques: en ocasiones por
falta de tiempo y prioridades de los desarrolladores para Mistakes/
realizar otros avancen en la aplicación, dejan a un lado el  https://docs.microsoft.com/en-us/previous-versions/msp-
tema de la seguridad del inicio de sesión. Aquí algunos n-p/ff648339(v=pandp.10)
consejos:  https://msdn.microsoft.com/en-us/library/cc676512.aspx
 Se habla del concepto de “escapar caracteres” que en  https://www.owasp.org/index.php/SQL_Injection_Preve
otros términos es la utilización de barra invertida “\” ntion_Cheat_Sheet
delante de las cadenas utilizadas en consultas. Se  https://www.owasp.org/index.php/SQL_Injection_Preve
recomienda hacer uso con aquellos caracteres como: ntion_Cheat_Sheet
doble comilla, comilla simple, caracteres x00 o x1.
 https://software-security.sans.org/developer-how-to/fix-  Buscar caracteres especiales que forme parte de la
sql-injection-in-java-using-prepared-callable-statement entrada
 https://stackoverflow.com/questions/1812891/java-  Validar tipos de datos conocidos, valores legales.
escape-string-to-prevent-sql-injection  Privilegios mínimos.
 https://www.genbeta.com/desarrollo/evita-los-ataques-  Validación de entrada de lista blanca.
de-inyeccion-de-sql

LDAP Injection Defensa primaria: escape de las variables utilizando funciones


de codificación LDAP correcta

Según se define como un ataque utilizado para explotar Defensa adicional: usar un marco que se escape
aplicaciones web que construyen declaraciones LDAP (The automáticamente (LINQtoAD).
Lighweight Directory Access) en la entrada del usuario.

El Protocolo Ligero de Acceso a Directorios (por sus siglas en


ingles LDAP) a directorio de servicios sobre TCP/IP, nacido V. INYECCIÓN DE FICHEROS
inicialmente con una forma de consultar Base de datos
jerarquizadas de información en los arboles X.500 pero
evolución como árbol LDAP. LDAP es un protocolo para
Remote File Inclusión
consultar y modificar los objetos almacenados. Es usado para
almacenar información de usuarios, host, y otros objetos.
Este ataque se genera del lado del servidor, permitiendo
revelar, modificar o insertar información confidencial de
Local File Inclusión
usuarios, host en la estructura LDAP, mediante la
manipulación de parámetros de entrada que serán pasados a
búsqueda interna para agregar y modificar las funciones.

Esta técnica podría permitirá a los usuarios a autenticación o


búsqueda de información de otros usuarios en la estructura
organizativa.

Esta técnica inyecta metacaracteres de filtros de búsqueda VI. OTROS


LDAP en una consulta que será ejecutada por la aplicación.

Implicaciones de este técnico:


 Acceda al contenido no autorizado Clickjacking
 Evade las restricciones de la aplicación.
 Recopilar información no autorizada.
 Agregar o modificar objetos dentro de la estructura de WebTrojans
árbol LDAP.

Este ataque ocurre porque la entrada del usuario no se


desinfecta adecuadamente y luego se usa como parte de un
filtro generado dinámicamente, dando como resultado la
manipulación de las instrucciones LDAP

Factores que facilitan el ataque:


 Falta de interfaces de consulta LDAP más
parametrizadas y más seguras
 El uso generalizado de LDAP para autenticar usuarios a
los sistemas

Prevenir:
 Validar la entrada que suministra el cliente. VII. CONCLUSIONES
 Verificar y desinfectar cualquier carácter que pueda
generar un comportamiento malicioso.
VIII. REFERENCIAS
IX. BIOGRAFÍA
[1] COLOMBIA. SUPERINTENDENCIA FINANCIERA DE COLOMBIA.
Norma externa 052. (25, octubre, 2007). Requerimientos mínimos de
seguridad y calidad en el manejo de información a través de medios y
canales de distribución de productos y servicios. Superintendencia Victor Garnica nació en Colombia – Norte de
Financiera de Colombia. Bogotá, D.C.: 2007, 10 p. Santander, el 13 de noviembre de 1981. Se graduó
[2] Aznar, L. A. (2005). La red Internet. El modelo TCP/IP. Madrid, ES: de la Universidad de Santander, en ingeniería de
Grupo Abantos Formación y Consultoría. Recuperado de Sistemas, Especialista en administración de
http://bibliotecavirtual.unad.edu.co:2077/lib/unadsp/detail.action? proyectos y actualmente estudiando en la
docID=10078349&p00=protocolo+http especialización de Seguridad informática.
[3] Cardador, C. A. L. (2014). Implantación de aplicaciones web en entornos
internet, intranet y extranet (MF0493_3). Madrid, ESPAÑA: IC Editorial. Su experiencia profesional ha estado en diferentes
Recuperado de campos laborales como lo son la programación y
http://bibliotecavirtual.unad.edu.co:2077/lib/unadsp/reader.action? desarrollo de sistemas ajustados a la medida del
ppg=190&docID=11126348&tm=1481044080162 cliente, actualmente trabajo en la Clínica Medical
[4] Chicano, T. E. (2014). Auditoría de seguridad informática (MF0487_3). Duarte.
Madrid, ESPAÑA: IC Editorial. Recuperado de
http://bibliotecavirtual.unad.edu.co:2077/lib/unadsp/reader.action?
ppg=215&docID=11126290&tm=1481044220050.
[5] Enciclopedia virtual. (2016) Inyección de código. Disponible en:
https://es.wikipedia.org/wiki/Inyecci%C3%B3n_de_c%C3%B3digo
[6] Odas. (2015) Inyección de código. Disponible en:
https://www.owasp.org/index.php/Inyecci%C3%B3n_de_C%C3%B3digo
[7] Avast. que es la inyección SQL. Disponible en: https://www.avast.com/es-
es/c-sql-injection
[8] Cdmon. (2017) Como actuar si tenemos inyección de código en la web.
Disponible en:
https://ticket.cdmon.com/es/support/solutions/articles/7000013350-c
%C3%B3mo-actuar-si-tenemos-inyecci%C3%B3n-de-c%C3%B3digo-en-
la-web
[9] Virus total. Analizador online en búsqueda de virus. Disponible en:
https://www.virustotal.com/#/home/upload
[10] Vikinguar. Auditoria Disponible en: https://www.vikinguard.com/free-
audit-es/
[11] WhitePapers. (2013) Ataques de Inyeccion SQL: que son y cómo
protegerse. Disponible en: https://pressroom.hostalia.com/white-
papers/ataques-inyeccion-sql
[12] Php Security Guide. Disponible end: http://phpsec.org/projects/guide/
[13] Devshed. (2004) PHP Security Mistakes. Disponible en:
http://www.devshed.com/c/a/PHP/PHP-Security-Mistakes/
[14] Microsoft. (2011) Hos to: protect from SQL Injection in ASP.net.
Disponible end: https://docs.microsoft.com/en-us/previous-versions/msp-n-
p/ff648339(v=pandp.10)
[15] Microsoft. (2011). Preventing SQL Injections in ASP. Disponible en:
https://msdn.microsoft.com/en-us/library/cc676512.aspx
[16] OWASP. (2018) SQL Injection Prevention Cheat Sheet. Disponible en:
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
[17] Software Security. Hot to Fix SQL injection using java. Disponible en:
https://software-security.sans.org/developer-how-to/fix-sql-injection-in-
java-using-prepared-callable-statement
[18] Disponible en: https://stackoverflow.com/questions/1812891/java-escape-
string-to-prevent-sql-injection
[19] Disponible en: https://www.genbeta.com/desarrollo/evita-los-ataques-de-
inyeccion-de-sql
[20] Owasp (2017) LDAP Inyection Pevention Cheat Sheet. Disponible en:
https://www.owasp.org/index.php/LDAP_Injection_Prevention_Cheat_She
et
[21] Wikipedia (2018). LDAP injection. Disponible en:
https://en.wikipedia.org/wiki/LDAP_injection
[22] MSDN (2010) Seguridad LDAP Injection. Disponible en:
http://blogs.msdn.com/b/securitytools/archive/2010/09/30/antixss_2d00_4
_2d00_0_2d00_release_2d00_notes.aspx
[23] Chema, A. (2007) Disponible en:
http://www.elladodelmal.com/2007/10/ldap-injection-blind-ldap-
injection.html
[24] Chema, A., Bordon, R., Guzman, A., Beltran, m., LDAP Injection % Blink
LDAP Injection. Disponible en:
http://www.blackhat.com/presentations/bh-europe-08/Alonso-
Parada/Whitepaper/bh-eu-08-alonso-parada-WP.pdf

Você também pode gostar