SlideShare a Scribd company logo
1 of 24
Download to read offline
INGENIERÍA EN SISTEMAS E INFORMÁTICA
Tema:
OWASP
Proyecto Integrador II
Tutor:
EDGAR FERNANDO SOLÍS A.
SANGOLQUÍ-ECUADOR
A. ¿Qué es OWASP #1
El Proyecto Abierto de Seguridad en Aplicaciones Web (OWASP ) es una
comunidad abierta dedicada a permitir que las organizaciones desarrollen,
adquieran, mantengan aplicaciones y APIs en las que se pueda confiar.
Todas las herramientas de OWASP, documentos, videos, presentaciones y
capítulos son gratuitos y abiertos a cualquier interesado en mejorar la
seguridad en aplicaciones. No está afiliada con ninguna compañía de
tecnología y produce muchos tipos de materiales en una manera abierta y
colaborativa.
B. ¿Por qué es relevante OWASP? #2
Hay muchas cosas útiles de seguridad que OWASP hace, pero las tres cosas
principales que hacen que OWASP sea relevante.
Proyecto OWASP Top 10: OWASP publica cada pocos años una lista de las
10 principales vulnerabilidades. Las 10 vulnerabilidades más importantes son
examinadas por los miembros y las organizaciones contribuyentes, y son
problemas del mundo real, no debería haber instancias de estas
vulnerabilidades en el código
OWASP ZED Attack Proxy (ZAP): Es la herramienta de seguridad gratuita
más popular que existe. Se utiliza para buscar e informar vulnerabilidades de
seguridad en software basado en web. OWASP y un gran grupo de voluntarios
mantienen el código y la lista de vulnerabilidades.
Serie OWASP Cheat Sheet: Este es actualmente un grupo de 9 listas rápidas
de cómo configurar procesos específicos. Algunos ejemplos son cómo usar la
gestión de sesión segura, cómo configurar un registro adecuado, etc.
C. ¿Cuáles son las vulnerabilidades comunes de seguridad de las
aplicaciones web? #3
–Configuración débil, por defecto o mal configurado. Esto suele producirse
por intentar desplegar el servicio lo más rápido posible o por una confianza
excesiva en el software utilizado, incluso por desconocimiento. Cuando se
expone a Internet un sistema con su configuración por defecto, si se encuentra
una vulnerabilidad en el mismo, el exploit por defecto funcionará. Es necesario
revisar el servicio a desplegar y buscar una configuración suficientemente
fuerte.
– Comunicación insegura entre cliente y servidor. Es muy importante que
la comunicación entre cliente y servidor esté cifrada, sobre todo, cuando se
trata de envíos de formularios, por ejemplo, para autentificarse en sitio web. En
muchas ocasiones, se configura el sitio web para usar cifrado, con una
configuración débil, permitiendo protocolos inseguros, como SSLv2 y SSLv3,
o suites de cifrado vulnerables, como MD5. Esto dará una falsa sensación de
seguridad, el cliente verá que hay un certificado, que el sitio web,
aparentemente está cifrado, y, sin embargo, por culpa de los protocolos
permitidos, podría ser relativamente fácil descifrar esta comunicación. Es por
ello que es necesario revisar el estado de la calidad en la configuración de
nuestros certificados.
– Software desactualizado. Una vez desplegado el sistema,
independientemente de que se hiciese el trabajo correctamente, pasado el
tiempo, el software se desactualiza. Se localizan vulnerabilidades, se corrigen
en versiones posteriores, etc. Es necesario llevar un control de las versiones
utilizadas, así como mantener el software actualizado, en el menor tiempo
posible, desde que se libera una nueva versión. En caso contrario, al cabo de
un tiempo, nuestro sistema será vulnerable y existirán exploits públicos que
permitirán atacarlo.
Tipos de vulnerabilidades de aplicación
Cross-Site Scripting (XSS)
XSS, del inglés Cross-site scripting es un tipo de vulnerabilidad o agujero de
seguridad típico de las aplicaciones Web, que permite a un usuario
malintencionado inyectar código JavaScript en páginas web visitadas.
Un atacante puede realizar una petición post inyectando un string.
Multiple Cross-Site Scripting (XSS)
Se realizan múltiples ataques de XSS lo cual permite a un usuario
malintencionado inyectar código JavaScript en páginas web visitadas.
Stored XSS (inyección de código almacenado)
Se trata de uno de los ataques más peligrosos ya que el código que inyecta el
atacante se almacena en tu base de datos.
Los ataques almacenados son aquellos en los que el script insertado se
almacena permanentemente en los servidores de destino, como en una base
de datos, foro de mensajes, registro de visitantes, campo de comentarios, etc.
La víctima recupera el script malicioso del servidor cuando solicita la
información almacenada. Stored XSS también se conoce como Persistent o
Type-I XSS.
Unauthenticated Stored XSS
Un usuario no autenticado o un usuario sin privilegios, que puede enviar un
evento, puede insertar código JavaScript en la páginas web a través del
navegador.
Se ejemplifica donde un usuario sin privilegios, que puede enviar un evento,
puede insertar código JavaScript en la miniatura del mapa de Google Maps y
la víctima será cualquier usuario que visite la web y vea el mapa.
SQL Injection
Aprovechando un fallo en la programación de la aplicación, un usuario puede
ejecutar consultas en el navegador de la víctima. Estas consulta sirven para
ver o recopilar información sobre la aplicación atacada y todos sus datos.
CSRF
Authenticated Stored XSS & CSRF
El CSRF (del inglés Cross-site request forgery o falsificación de petición en
sitios cruzados) es un tipo de exploit malicioso de un sitio web en el que
comandos no autorizados son transmitidos por un usuario en el cual el sitio
web confía.
Server Side Request Forgery (SSRF)
Se refiere a un ataque en el que un atacante puede enviar una solicitud
elaborada desde una aplicación web vulnerable. La SSRF generalmente se
utiliza para atacar sistemas internos detrás de firewalls que normalmente no
son accesibles para un atacante desde la red externa. Además, también es
posible que un atacante aproveche la SSRF para acceder a los servicios desde
el mismo servidor que está escuchando en la interfaz loopback (127.0.0.1)
D. Pruebas de Seguridad Según OWASP
a. Recopilacion de Informacion #4
Fase primordial para evaluación de seguridad, en la cual se debe
recoger tanta información como sea posible sobre la aplicación y es
necesario para las pruebas de intrusión.
La prueba de seguridad debe esforzarse por probar la mayor cantidad
posible de la base del código. Por lo tanto, la asignación de todos los
caminos posibles a través del código para facilitar las pruebas
completas es primordial.
Existen varias formas de lograrlo, por ejemplo herramientas públicas
(motores de búsqueda), escáneres, envío de solicitudes HTTP simples
o solicitudes especialmente diseñadas, es posible forzar a la aplicación
a filtrar información, por ejemplo, revelar mensajes de error o revelar las
versiones y tecnologías utilizadas.
Spiders, robots y crawlers: Explorar y capturar recursos relacionados
con la aplicación que se está probando.
Análisis de códigos de error: Durante una prueba de penetración, las
aplicaciones web pueden divulgar información que no debe ser vista por
un usuario final. La información como los códigos de error puede
informar al probador sobre las tecnologías y los productos que utiliza la
aplicación.
En muchos casos, los códigos de error pueden invocarse fácilmente sin
la necesidad de habilidades o herramientas especializadas, debido a la
mala excepción en el diseño y la codificación.
Identificación puntos de entrada/salida: Identificar y mapear cada
área dentro de la aplicación, además de los puntos de salida funcionales
de la aplicación y los puntos donde la aplicación pasa a otra aplicación.
b. Pruebas de Gestión de la Configuración #4
Los análisis sobre la infraestructura o topología de la arquitectura
pueden revelar datos importantes sobre una aplicación web. Se pueden
obtener datos como por ejemplo el código fuente, los métodos HTTP
permitidos, funcionalidades administrativas, métodos de autenticación y
configuraciones de la infraestructura.
La gestión adecuada de la configuración de la infraestructura del
servidor web es muy importante para preservar la seguridad de la
aplicación. Si elementos como el software del servidor web, los
servidores de bases de datos de back-end o los servidores de
autenticación no se revisan y protegen adecuadamente, podrían
presentar riesgos no deseados o introducir nuevas vulnerabilidades que
podrían comprometer la aplicación en sí.
Las verificaciones que se pueden realizar son:
● Pruebas de SSL/TLS: SSL es el acrónimo de Secure Sockets
Layer (capa de sockets seguros), la tecnología estándar para
mantener segura una conexión a Internet, así como para proteger
cualquier información confidencial que se envía entre dos
sistemas e impedir que los delincuentes lean y modifiquen
cualquier dato que se transfiera. Los siguientes estándares se
pueden usar como referencia al evaluar los servidores SSL son
NIST SP 800-52 (recomienda que los sistemas federales de EE.
UU. Utilicen al menos TLS 1.0 con conjuntos de cifrados basados
en el acuerdo de clave RSA o DSA con el efímero Diffie-Hellman),
3DES o AES para la confidencialidad y SHA1 para la protección
de la integridad. NIST SP 800-52 no permite específicamente los
algoritmos no compatibles con FIPS como RC4 y MD5. Una
excepción son los sistemas federales de los EE. UU. Que
realizan conexiones a servidores externos, donde estos
algoritmos se pueden usar en el modo de cliente SSL.
● Pruebas del receptor de escucha de la BD: La escucha de la
base de datos es un demonio de red exclusivo de las bases de
datos Oracle. Espera solicitudes de conexión de clientes
remotos. Este demonio a veces puede verse comprometido y, por
lo tanto, puede afectar la disponibilidad de la base de datos o la
validez de los datos almacenados en ella.
● Pruebas de gestión de configuración de la aplicación: La
configuración adecuada de los elementos individuales que
conforman la arquitectura de una aplicación es importante para
evitar errores que puedan comprometer la seguridad de toda la
arquitectura. La revisión y prueba de la configuración es una
tarea crítica en la creación y el mantenimiento de una
arquitectura. Esto se debe a que a muchos sistemas diferentes
generalmente se les proporcionarán configuraciones genéricas
que pueden no ser adecuadas para la tarea que realizarán en el
sitio específico en el que están instalados. Si bien la instalación
típica del servidor de aplicaciones y la web contendrá una gran
cantidad de funcionalidades (como ejemplos de aplicaciones,
documentación, páginas de prueba), lo que no es esencial debe
eliminarse antes de la implementación para evitar la explotación
posterior a la instalación.
● Gestión de extensiones de archivo
● Archivos antiguos, copias de seguridad y sin referencias, entre
otras.
c. Pruebas de la lógica de negocio #5
Dentro de las fases de pruebas, esta es una en la que se requiere
mayor nivel de creatividad por parte del especialista de seguridad,
debido a que cada aplicación web gestiona procesos diferentes. Se
incluyen pruebas de seguridad para comprobar si es posible evadir el
flujo de trabajo, si es posible manipular los parámetros, datos de
entradas y módulos, si se impide la subida de archivos con extensiones
no consideradas dentro del proceso y con códigos dañinos. Si se
realizan comprobaciones de integridad y validación de datos de entrada.
d. Pruebas de autenticación #5
En esta fase se ejecutan pruebas de seguridad para evaluar el
proceso de autenticación. Dentro de las pruebas de seguridad
propuestas se encuentra el análisis para determinar si las credenciales
son transmitidas sobre un canal encriptado, identificación de
credenciales por defecto, comprobación de los mecanismos de bloqueo
de credenciales. También se incluye las pruebas de fortalezas de los
sistemas de preguntas y respuestas, cambio y reinicio de contraseñas,
políticas de creación de contraseñas y descubrimiento de mecanismos
de autenticación.
e. Pruebas de autorización #6
Autorización es el concepto de permitir el acceso a recursos únicamente
a aquellos que tienen permiso para ello. Las pruebas de Autorización
significan entender cómo funciona el proceso de autorización, y usar
esa información para saltarse el mecanismo de autorización.
f. Pruebas de gestión de sesiones #6
La gestión de sesiones cubre ampliamente todos los controles que se
realizan sobre el usuario, desde la autenticación hasta la salida de la
aplicación. HTTP es un protocolo sin estados, lo que significa que los
servidores web responden a las peticiones de clientes sin enlazarlas
entre sí. Es importante que la seguridad de la aplicación sea
considerada en el contexto de los requisitos y expectativas del
proveedor
g. Pruebas de validación de datos #7
La debilidad más común en la seguridad de aplicaciones web, es la falta
de una validación adecuada de las entradas procedentes del cliente o
del entorno de la aplicación. Esta debilidad conduce a casi todas las
principales vulnerabilidades en aplicaciones, como inyecciones sobre el
intérprete, ataques locale/Unicode, sobre el sistema de archivos y
desbordamientos de búfer.
h. Pruebas de denegación de servicio #7
El tipo más común de ataque de Denegación de Servicio (Dos) es del
tipo empleado en una red para hacer inalcanzable a la comunicación a
un servidor por parte de otros usuarios válidos. El concepto fundamental
de un ataque DoS de red es un usuario malicioso inundando con
suficiente tráfico una máquina objetivo para conseguir hacerla incapaz
de sostener el volumen de peticiones que recibe. Cuando el usuario
malicioso emplea un gran número de máquinas para inundar de tráfico
una sola máquina objetivo, se conoce generalmente como ataque
denegación de servicio distribuidos (DDoS).
i. Pruebas de servicios web #8
Los servicios web y SOA (Arquitectura Orientada a Servicios) son
aplicaciones en expansión que están permitiendo que los negocios
interoperan y crezcan a un ritmo sin precedentes. Los clientes de
servicios web generalmente no son frontales web, sino otros servidores.
Los servicios web están expuestos a la red como cualquier otro servicio,
pero pueden ser utilizados en HTTP, FTP, SMTP o acompañados de
cualquier otro protocolo de transporte.
Las vulnerabilidades en servicios web son similares a otras
vulnerabilidades como la inyección SQL, revelación de información, etc,
pero también tienen vulnerabilidades de XML.
j. Pruebas ajax #8
AJAX, acrónimo de JavaScript Asíncrono y XML, es una técnica de
desarrollo web usada para crear aplicaciones web más interactivas y
con mejor facilidad de uso. Utiliza una combinación de tecnologías para
proveer una experiencia más parecida a utilizar una aplicación de
escritorio. Esto se lleva a cabo utilizando el objeto XMLHttpRequest y
JavaScript para hacer peticiones asíncronas al servidor web, analizando
las respuestas y posteriormente actualizando el DOM HTML y el CSS
de la página.
El uso de técnicas AJAX puede tener enormes beneficios de usabilidad
para aplicaciones web. Sin embargo, desde un punto de vista de
seguridad, las aplicaciones AJAX tienen una mayor superficie de ataque
que las aplicaciones web normales, y a menudo se desarrollan con un
enfoque en lo que se puede hacer en lugar de lo que se debe hacer.
Problemas de seguridad en AJAX
● Mayor superficie de ataque con muchas más entradas para
asegurar.
● Funciones internas expuestas de la aplicación.
● Acceso del cliente a recursos de terceros sin mecanismos de
codificación y seguridad incorporados
● Fallo al proteger la información de autenticación y las sesiones
● Línea borrosa entre el lado del cliente y el código del lado del
servidor, posiblemente dando como resultado errores de
seguridad
E. Proyectos emblemáticos de herramientas de OWASP (ejemplos) #9
Proyectos que han demostrado un valor estratégico para OWASP y la seguridad de
la aplicación en su conjunto.
OWASP Zed Attack Proxy (ZAP)
Encuentra automáticamente vulnerabilidades de seguridad en sus aplicaciones web
mientras desarrolla y prueba sus aplicaciones.
El Proxy Zed Attack (ZAP) de OWASP es una de las herramientas de seguridad
gratuitas más populares del mundo y es mantenido activamente por cientos de
voluntarios internacionales.
Puede ayudarlo a encontrar automáticamente vulnerabilidades de seguridad en sus
aplicaciones web mientras desarrolla y prueba sus aplicaciones. También es una gran
herramienta para pentesters experimentados para usar en pruebas de seguridad
manuales.
F. Proyectos de código de owasp (ejemplos) #10
Se divide en dos:
1. OWASP ModSecurity Core Rule Set (CRS)
Conjunto de reglas de detección de ataques genéricas para su uso con
ModSecurity o firewalls de aplicaciones web compatibles cuyo objetivo es
proteger las aplicaciones web de una amplia gama de ataques.
2. OWASP CSRFGuard
Una biblioteca que implementa una variante del patrón de token del
sincronizador para mitigar el riesgo de ataques de falsificación de solicitudes
entre sitios “Cross-Site Request Forgery”(CSRF).
Arquitectura CSRFGuard
EJEMPLO:
Contiene error.
Prueba de caja gris
G. Proyectos de documentación owasp (ejemplos ) #11
H. Fallas de seguridad de las aplicaciones web
a. Inyección #12
Una inyección de código ocurre cuando un atacante envía datos
inválidos a la aplicación web con la intención de hacerla hacer algo
distinto para lo que fue diseñada/programada para hacer.
El núcleo de una vulnerabilidad de inyección de código es la falta de
validación de los datos consumidos por la aplicación web. Lo que
significa que esta vulnerabilidad puede estar presente en casi cualquier
tipo de tecnología.
Todo lo que acepte parámetros como entradas puede ser
potencialmente vulnerable a un ataque de inyección de código.
¿Cómo se previenen las vulnerabilidades de inyecciones de
código?
Prevenir inyecciones requiere mantener los datos separados de los
comandos y las consultas.
● La opción preferida es usar una API segura que evite el uso del
intérprete de manera completa, o provea una interfaz
parametrizada.
● Usa un “whitelist” como validación de datos del lado del servidor.
● Para cualquier consulta dinámica residual, escapa los caracteres
residuales usando la sintaxis de escape específica para ese
intérprete.
● Usa LIMIT y otros controles SQL dentro de la consulta para
prevenir la divulgación en masa de registros en el caso de una
inyección SQL exitosa.
● Separación de datos con la lógica de la aplicación web
● Ajustes para limitar la exposición de datos en caso de ataques de
inyección exitosos
b. Autenticación rota #12
Una vulnerabilidad de autenticación rota les permite a los atacantes usar
medios manuales y/o automáticos para tratar de ganar control sobre una
de las cuentas en el sistema, o peor, para ganar control completo del
sistema.
La autenticación rota usualmente se debe a problemas de lógica en el
mecanismo de autenticación de la aplicación, como el mal manejo de
sesiones o el listado de nombres de usuarios.
La segunda forma más común de esta vulnerabilidad es permitir que los
usuarios hagan ataques de fuerza bruta contra esas páginas utilizando
combinaciones de nombres de usuario y contraseñas.
¿Cómo se previenen las vulnerabilidades de autenticación rota?
Estas son las recomendaciones técnicas de OWASP:
● Siempre que sea posible, implementa autenticación multi-factor
para evitar ataques automáticos como credential stuffing, fuerza
bruta y utilización de credenciales robadas.
● No despliegues ninguna credencial por defecto, sobre todo para
los usuarios administradores.
● Implementa verificaciones de contraseñas débiles
● Asegura que el registro, la recuperación de credenciales y las
rutas de API están protegidas contra ataques de enumeración de
cuentas al escoger el mismo mensaje para todos los resultados.
● Limita o incrementa cada vez más los intentos de inicio de sesión
fallidos. Registra todos los intentos fallidos y alerta a los
administradores cuando se detecten ataques de credential
stuffing, fuerza bruta u otros.
● Usa un gestor de sesiones integrado y seguro que genere un
nuevo ID de sesión aleatorio luego del inicio de sesión. Los IDs
de Sesiones nunca deben estar incluidos en las URLs.
● Los IDs también deben estar almacenados de forma segura y ser
invalidados luego de cerrar la sesión, tiempos de inactividad y
tiempos absolutos.
c. Exposición a datos sensibles #13
En julio de 2018, Chrome comenzó a marcar todas las páginas utilizando HTTP
como no seguro en un impulso para convertir la web a HTTPS . Y por una
buena razón. Los datos que se pasan a través de HTTP no están encriptados,
lo que pone en riesgo los nombres de usuario, las contraseñas, los números
de tarjetas de crédito, los registros de salud y otros datos confidenciales.
En lugar de atacar directamente el cifrado, los piratas informáticos prefieren
ejecutar ataques de intermediarios, robar claves o acceder a datos de texto sin
cifrar desde el servidor o el navegador del cliente. Cualquier dato almacenado
o transmitido sin cifrado es susceptible de ser atacado. Incluso cuando se
emplea criptografía, las claves débiles, la administración incorrecta de las
claves o los esquemas de rotación pueden comprometer la seguridad y
exponer datos confidenciales.
Prevención: el cifrado es la mejor manera de prevenir la exposición de datos
confidenciales. Todos los datos en tránsito deben estar protegidos con
protocolos como TLS y SSL. Se recomienda utilizar cifrados perfectos de
seguridad directa (PFS), priorización de cifrado por el servidor y parámetros
seguros. Proteja los datos en reposo cifrando los datos almacenados cuando
sea posible. Nunca almacene contraseñas como texto sin formato, es preferible
utilizar “la sal” y cifrar con funciones hash como Argon2 y scrypt.
d. Entidades externas xml #13
Extensible Markup Language (XML) es un formato de datos popular apreciado
por su extensibilidad y flexibilidad.
Un ataque de entidad externa XML (XXE) ocurre cuando un analizador XML es
engañado para que haga referencia a una entidad externa manipulada.
El ataque puede llevar a datos confidenciales comprometidos, ataques de
denegación de servicio (DoS) y falsificaciones de solicitudes del lado del
servidor (SSRF), entre otros impactos del sistema.
El infame billón de risas DoS Attack es un excelente ejemplo de un ataque
XXE.
Prevención: la forma más sencilla de prevenir un ataque XXE es deshabilitar
las entidades externas y el procesamiento DTD (definición del tipo de
documento) en todos los analizadores XML de la aplicación. También es una
buena práctica evitar la serialización de datos confidenciales y utilizar formatos
de datos menos complejos, como JSON. Mantenga al día todos los
procesadores XML y las bibliotecas e implemente la validación de entrada del
lado del servidor (por ejemplo, listas blancas).
e. Control acceso remoto :Las restricciones de control de acceso
implican que los usuarios no pueden actuar fuera de los permisos
previstos. Típicamente, las fallas conducen a la divulgación,
modificación o destrucción de información no autorizada de los datos, o
a realizar una función de negocio fuera de los límites del usuario. Las
vulnerabilidades comunes de control de acceso incluyen:
• Pasar por alto las comprobaciones de control de acceso modificando
la URL, el estado interno de la aplicación o HTML, utilizando una
herramienta de ataque o una conexión vía API.
• Permitir que la clave primaria se cambie a la de otro usuario, pudiendo
ver o editar la cuenta de otra persona.
• Elevación de privilegios. Actuar como un usuario sin iniciar sesión, o
actuar como un administrador habiendo iniciado sesión como usuario
estándar
f. Mala configuración de la seguridad :
La aplicación puede ser vulnerable si:
• Falta hardening adecuado en cualquier parte del stack tecnológico, o
permisos mal configurados en los servicios de la nube.
• Se encuentran instaladas o habilitadas características innecesarias (ej.
puertos, servicios, páginas, cuentas o permisos).
• Las cuentas predeterminadas y sus contraseñas siguen activas y sin
cambios.
• El manejo de errores revela a los usuarios trazas de la aplicación u
otros mensajes demasiado informativos.
g. Secuencias de comandos entre sitios #15
La secuencia de comandos en sitios cruzados, más conocida como XSS, es en
realidad un subconjunto de inyección HTML. XSS es la más prevaleciente y perniciosa
problemática de seguridad en aplicaciones Web. Las fallas de XSS ocurren cuando
una aplicación toma información originada por un usuario y la envía a un navegador
Web sin primero validarla o codificando el contenido.
● XSS permite a los atacantes ejecutar secuencias de comandos en el
navegador Web de la víctima, quienes pueden secuestrar sesiones de usuario,
modificar sitios Web, insertar contenido hostil, realizar ataques de phising, y
tomar control del navegador Web del usuario utilizando secuencias de
comando maliciosas.
● Generalmente JavaScript es utilizado, pero cualquier lenguaje de secuencia de
comandos soportado por el navegador de la victima es un potencial objetivo
para este ataque.
Vulnerabilidad
Existen tres tipos conocidos de secuencias de comandos en sitios cruzados: reflejado,
almacenado e inyección DOM. XSS reflejado es el más fácil para explotar – una
página reflejara información suministrada por el usuario directamente de vuelta al
usuario:
echo $_REQUEST['userinput'];
XSS almacenado toma información hostil, la almacena en un fichero, una base de
datos, u otro sistema de almacenamiento, y luego en una etapa posterior, muestra
dicha información sin filtrado alguno. Esto es extremadamente peligroso en sistemas
de administración de contenidos (CMS), blogs, o foros, donde un gran número de
usuarios accederá a la información introducida por otros usuarios.
Con ataques basados en inyección DOM, el código JavaScript del sitio Web y sus
variables son manipuladas, en lugar de los elementos HTML.
Alternativamente, los ataques pueden ser una mezcla o un híbrido de los tres tipos
mencionados anteriormente. El peligro con la secuencia de comandos en sitios
cruzados no es el tipo de ataque, sino la posibilidad del mismo. Un comportamiento
fuera del estándar o inesperado del navegador Web puede introducir sutiles vectores
de ataque.
Verificando la seguridad
El objetivo es verificar que todos los parámetros en la aplicación sean validados y/o
codificados antes de ser incluidos en paginas HTML.
● Verificación automatizada: herramientas automáticas de testeo de
penetración son capaces de detectar XSS reflejado a través de inyección de
parámetros, pero generalmente fallan a la hora de encontrar XSS persistente,
particularmente si la salida del vector XSS inyectado es restringida a través de
pruebas de autorización (tales como si un usuario introduce información hostil
que puede ser visualizada solamente por los administradores de la aplicación).
● Verificación manual: si se ha utilizado un mecanismo centralizado de
validación y codificación, la manera más eficiente de controlar la seguridad es
revisando el código. Si en cambio, se ha utilizado una implementación
distribuida, entonces la verificación tomará considerablemente mucho más
tiempo.
h. Deserializacion insegura #15
i. Uso de componentes con vulnerabilidades conocidas #16
j. Insuficiente registro y monitoreo. #16
Bibliografia
Sierra, T. (2019). Tipos de vulnerabilidades en aplicaciones web | Tomás Sierra.
Retrieved from https://tomassierra.com/tipos-de-vulnerabilidades-en-aplicaciones-
web/(vulnerabilidades comunes de aplicaciones web)
https://www.upwork.com/hiring/development/cybersecurity-basics-owasp-top-10-
critical-web-application-security-risks/
https://seguridadaguijon.blogspot.com/2018/03/que-es-owasp.html
https://www.owasp.org/images/2/2f/OWASP_SUSCERTE.pdf
https://www.owasp.org/index.php/Main_Page

More Related Content

What's hot

What's hot (20)

Vulnerability and Patch Management
Vulnerability and Patch ManagementVulnerability and Patch Management
Vulnerability and Patch Management
 
Adopting A Zero-Trust Model. Google Did It, Can You?
Adopting A Zero-Trust Model. Google Did It, Can You?Adopting A Zero-Trust Model. Google Did It, Can You?
Adopting A Zero-Trust Model. Google Did It, Can You?
 
[Infographic] Data Loss Prevention
[Infographic] Data Loss Prevention[Infographic] Data Loss Prevention
[Infographic] Data Loss Prevention
 
The Zero Trust Model of Information Security
The Zero Trust Model of Information Security The Zero Trust Model of Information Security
The Zero Trust Model of Information Security
 
The fundamentals of Android and iOS app security
The fundamentals of Android and iOS app securityThe fundamentals of Android and iOS app security
The fundamentals of Android and iOS app security
 
Information Technology Security Basics
Information Technology Security BasicsInformation Technology Security Basics
Information Technology Security Basics
 
SS7: the bad neighbor you're stuck with during the 5G migration and far beyond
SS7: the bad neighbor you're stuck with during the 5G migration and far beyondSS7: the bad neighbor you're stuck with during the 5G migration and far beyond
SS7: the bad neighbor you're stuck with during the 5G migration and far beyond
 
Cyber Security - awareness, vulnerabilities and solutions
Cyber Security - awareness, vulnerabilities and solutionsCyber Security - awareness, vulnerabilities and solutions
Cyber Security - awareness, vulnerabilities and solutions
 
Cloud vs. On-Premises Security: Can you afford not to switch?
Cloud vs. On-Premises Security:  Can you afford not to switch?Cloud vs. On-Premises Security:  Can you afford not to switch?
Cloud vs. On-Premises Security: Can you afford not to switch?
 
EL RIESGO INFORMATICO Y LA CIBER EXPOSICIÓN
EL RIESGO INFORMATICO Y LA CIBER EXPOSICIÓNEL RIESGO INFORMATICO Y LA CIBER EXPOSICIÓN
EL RIESGO INFORMATICO Y LA CIBER EXPOSICIÓN
 
Seguridad informatica
Seguridad informaticaSeguridad informatica
Seguridad informatica
 
Zero trust in a hybrid architecture
Zero trust in a hybrid architectureZero trust in a hybrid architecture
Zero trust in a hybrid architecture
 
E-RBAC Development - A Risk Based Security Architecture Approach
E-RBAC Development - A Risk Based Security Architecture ApproachE-RBAC Development - A Risk Based Security Architecture Approach
E-RBAC Development - A Risk Based Security Architecture Approach
 
Identity Management for the 21st Century IT Mission
Identity Management for the 21st Century IT MissionIdentity Management for the 21st Century IT Mission
Identity Management for the 21st Century IT Mission
 
Cybersecurity: Dos and Dont's
Cybersecurity: Dos and Dont'sCybersecurity: Dos and Dont's
Cybersecurity: Dos and Dont's
 
Iot Security
Iot SecurityIot Security
Iot Security
 
Security architecture
Security architectureSecurity architecture
Security architecture
 
Cyber Security PPT
Cyber Security PPTCyber Security PPT
Cyber Security PPT
 
VAPT Services by prime
VAPT Services by primeVAPT Services by prime
VAPT Services by prime
 
Employees and Internet Use - Legal Aspects
Employees and Internet Use - Legal Aspects Employees and Internet Use - Legal Aspects
Employees and Internet Use - Legal Aspects
 

Similar to Owasp proyecto

Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0
Alonso Caballero
 
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
Alonso Caballero
 
Seguridad informática de las empresas
Seguridad informática de las empresasSeguridad informática de las empresas
Seguridad informática de las empresas
Julio Manzano
 
Modulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LANModulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LAN
srkamote
 
Seguridad en la web no confíes en el usuario
Seguridad en la web   no confíes en el usuarioSeguridad en la web   no confíes en el usuario
Seguridad en la web no confíes en el usuario
Carlos Soriano
 
Vulnerabilidades en sitios web(español)
Vulnerabilidades en sitios web(español)Vulnerabilidades en sitios web(español)
Vulnerabilidades en sitios web(español)
Miguel de la Cruz
 

Similar to Owasp proyecto (20)

Temas owasp
Temas owaspTemas owasp
Temas owasp
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Owasp top ten 2019
Owasp top ten 2019Owasp top ten 2019
Owasp top ten 2019
 
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
Webinar Gratuito: "Escanear Vulnerabilidades Web con Zed Attack Proxy"
 
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
Webinar Gratuito "Vulnerabilidades en Aplicaciones Web"
 
Seguridad en la red
Seguridad en la redSeguridad en la red
Seguridad en la red
 
Hacking Ético Web
Hacking Ético WebHacking Ético Web
Hacking Ético Web
 
Seguridad en los sistemas web
Seguridad en los sistemas webSeguridad en los sistemas web
Seguridad en los sistemas web
 
Seguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_securitySeguridad en servidores WEB. Modulo mod_security
Seguridad en servidores WEB. Modulo mod_security
 
Pruebas de penetración
Pruebas de penetraciónPruebas de penetración
Pruebas de penetración
 
Seguridad informática de las empresas
Seguridad informática de las empresasSeguridad informática de las empresas
Seguridad informática de las empresas
 
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
 
Modulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LANModulo 10: Conceptos de Seguridad de LAN
Modulo 10: Conceptos de Seguridad de LAN
 
Aplicaciones Web Seguras (Anti-SQLi)
Aplicaciones Web Seguras (Anti-SQLi)Aplicaciones Web Seguras (Anti-SQLi)
Aplicaciones Web Seguras (Anti-SQLi)
 
Seguridad en la web no confíes en el usuario
Seguridad en la web   no confíes en el usuarioSeguridad en la web   no confíes en el usuario
Seguridad en la web no confíes en el usuario
 
Clase 6 Practica.pptx
Clase 6 Practica.pptxClase 6 Practica.pptx
Clase 6 Practica.pptx
 
Webinar Cloud: Servicios de Seguridad Gestionada
Webinar Cloud: Servicios de Seguridad GestionadaWebinar Cloud: Servicios de Seguridad Gestionada
Webinar Cloud: Servicios de Seguridad Gestionada
 
Vulnerabilidades en sitios web(español)
Vulnerabilidades en sitios web(español)Vulnerabilidades en sitios web(español)
Vulnerabilidades en sitios web(español)
 

More from Fernando Solis

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
Fernando Solis
 

More from Fernando Solis (20)

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
AULA INVERTIDA.pdf
AULA INVERTIDA.pdfAULA INVERTIDA.pdf
AULA INVERTIDA.pdf
 
Subcadenas-en-C
Subcadenas-en-CSubcadenas-en-C
Subcadenas-en-C
 
BÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN CBÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN C
 
Almacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructuraAlmacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructura
 
Entrada y salida de datos
Entrada y salida de datosEntrada y salida de datos
Entrada y salida de datos
 
Longitud y Concatenacion
Longitud y ConcatenacionLongitud y Concatenacion
Longitud y Concatenacion
 
Lectura de datos de cadena
Lectura de datos de cadenaLectura de datos de cadena
Lectura de datos de cadena
 
Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
 
Archivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de TextoArchivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de Texto
 
DEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGSDEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGS
 
Declaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadenaDeclaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadena
 
Conversion de Strings
Conversion de StringsConversion de Strings
Conversion de Strings
 
Comparacion de arreglos Strings
Comparacion de arreglos StringsComparacion de arreglos Strings
Comparacion de arreglos Strings
 
Cadenas y/o strings
Cadenas y/o stringsCadenas y/o strings
Cadenas y/o strings
 
Asignacion
AsignacionAsignacion
Asignacion
 
Acceso en tipos de datos abstractos
Acceso en tipos de datos abstractosAcceso en tipos de datos abstractos
Acceso en tipos de datos abstractos
 
Arreglo Orden Seleccion
Arreglo  Orden SeleccionArreglo  Orden Seleccion
Arreglo Orden Seleccion
 
Algoritmos de Busqueda
Algoritmos de BusquedaAlgoritmos de Busqueda
Algoritmos de Busqueda
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 

Recently uploaded

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 

Recently uploaded (20)

Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptxEL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
 

Owasp proyecto

  • 1. INGENIERÍA EN SISTEMAS E INFORMÁTICA Tema: OWASP Proyecto Integrador II Tutor: EDGAR FERNANDO SOLÍS A. SANGOLQUÍ-ECUADOR
  • 2. A. ¿Qué es OWASP #1 El Proyecto Abierto de Seguridad en Aplicaciones Web (OWASP ) es una comunidad abierta dedicada a permitir que las organizaciones desarrollen, adquieran, mantengan aplicaciones y APIs en las que se pueda confiar. Todas las herramientas de OWASP, documentos, videos, presentaciones y capítulos son gratuitos y abiertos a cualquier interesado en mejorar la seguridad en aplicaciones. No está afiliada con ninguna compañía de tecnología y produce muchos tipos de materiales en una manera abierta y colaborativa. B. ¿Por qué es relevante OWASP? #2 Hay muchas cosas útiles de seguridad que OWASP hace, pero las tres cosas principales que hacen que OWASP sea relevante. Proyecto OWASP Top 10: OWASP publica cada pocos años una lista de las 10 principales vulnerabilidades. Las 10 vulnerabilidades más importantes son examinadas por los miembros y las organizaciones contribuyentes, y son problemas del mundo real, no debería haber instancias de estas vulnerabilidades en el código OWASP ZED Attack Proxy (ZAP): Es la herramienta de seguridad gratuita más popular que existe. Se utiliza para buscar e informar vulnerabilidades de seguridad en software basado en web. OWASP y un gran grupo de voluntarios mantienen el código y la lista de vulnerabilidades.
  • 3. Serie OWASP Cheat Sheet: Este es actualmente un grupo de 9 listas rápidas de cómo configurar procesos específicos. Algunos ejemplos son cómo usar la gestión de sesión segura, cómo configurar un registro adecuado, etc. C. ¿Cuáles son las vulnerabilidades comunes de seguridad de las aplicaciones web? #3 –Configuración débil, por defecto o mal configurado. Esto suele producirse por intentar desplegar el servicio lo más rápido posible o por una confianza excesiva en el software utilizado, incluso por desconocimiento. Cuando se expone a Internet un sistema con su configuración por defecto, si se encuentra una vulnerabilidad en el mismo, el exploit por defecto funcionará. Es necesario revisar el servicio a desplegar y buscar una configuración suficientemente fuerte. – Comunicación insegura entre cliente y servidor. Es muy importante que la comunicación entre cliente y servidor esté cifrada, sobre todo, cuando se trata de envíos de formularios, por ejemplo, para autentificarse en sitio web. En muchas ocasiones, se configura el sitio web para usar cifrado, con una configuración débil, permitiendo protocolos inseguros, como SSLv2 y SSLv3, o suites de cifrado vulnerables, como MD5. Esto dará una falsa sensación de seguridad, el cliente verá que hay un certificado, que el sitio web, aparentemente está cifrado, y, sin embargo, por culpa de los protocolos permitidos, podría ser relativamente fácil descifrar esta comunicación. Es por ello que es necesario revisar el estado de la calidad en la configuración de nuestros certificados.
  • 4. – Software desactualizado. Una vez desplegado el sistema, independientemente de que se hiciese el trabajo correctamente, pasado el tiempo, el software se desactualiza. Se localizan vulnerabilidades, se corrigen en versiones posteriores, etc. Es necesario llevar un control de las versiones utilizadas, así como mantener el software actualizado, en el menor tiempo posible, desde que se libera una nueva versión. En caso contrario, al cabo de un tiempo, nuestro sistema será vulnerable y existirán exploits públicos que permitirán atacarlo. Tipos de vulnerabilidades de aplicación Cross-Site Scripting (XSS) XSS, del inglés Cross-site scripting es un tipo de vulnerabilidad o agujero de seguridad típico de las aplicaciones Web, que permite a un usuario malintencionado inyectar código JavaScript en páginas web visitadas. Un atacante puede realizar una petición post inyectando un string. Multiple Cross-Site Scripting (XSS) Se realizan múltiples ataques de XSS lo cual permite a un usuario malintencionado inyectar código JavaScript en páginas web visitadas. Stored XSS (inyección de código almacenado) Se trata de uno de los ataques más peligrosos ya que el código que inyecta el atacante se almacena en tu base de datos. Los ataques almacenados son aquellos en los que el script insertado se almacena permanentemente en los servidores de destino, como en una base
  • 5. de datos, foro de mensajes, registro de visitantes, campo de comentarios, etc. La víctima recupera el script malicioso del servidor cuando solicita la información almacenada. Stored XSS también se conoce como Persistent o Type-I XSS. Unauthenticated Stored XSS Un usuario no autenticado o un usuario sin privilegios, que puede enviar un evento, puede insertar código JavaScript en la páginas web a través del navegador. Se ejemplifica donde un usuario sin privilegios, que puede enviar un evento, puede insertar código JavaScript en la miniatura del mapa de Google Maps y la víctima será cualquier usuario que visite la web y vea el mapa. SQL Injection Aprovechando un fallo en la programación de la aplicación, un usuario puede ejecutar consultas en el navegador de la víctima. Estas consulta sirven para ver o recopilar información sobre la aplicación atacada y todos sus datos. CSRF Authenticated Stored XSS & CSRF El CSRF (del inglés Cross-site request forgery o falsificación de petición en sitios cruzados) es un tipo de exploit malicioso de un sitio web en el que comandos no autorizados son transmitidos por un usuario en el cual el sitio web confía.
  • 6. Server Side Request Forgery (SSRF) Se refiere a un ataque en el que un atacante puede enviar una solicitud elaborada desde una aplicación web vulnerable. La SSRF generalmente se utiliza para atacar sistemas internos detrás de firewalls que normalmente no son accesibles para un atacante desde la red externa. Además, también es posible que un atacante aproveche la SSRF para acceder a los servicios desde el mismo servidor que está escuchando en la interfaz loopback (127.0.0.1) D. Pruebas de Seguridad Según OWASP a. Recopilacion de Informacion #4 Fase primordial para evaluación de seguridad, en la cual se debe recoger tanta información como sea posible sobre la aplicación y es necesario para las pruebas de intrusión. La prueba de seguridad debe esforzarse por probar la mayor cantidad posible de la base del código. Por lo tanto, la asignación de todos los caminos posibles a través del código para facilitar las pruebas completas es primordial. Existen varias formas de lograrlo, por ejemplo herramientas públicas (motores de búsqueda), escáneres, envío de solicitudes HTTP simples o solicitudes especialmente diseñadas, es posible forzar a la aplicación a filtrar información, por ejemplo, revelar mensajes de error o revelar las versiones y tecnologías utilizadas.
  • 7. Spiders, robots y crawlers: Explorar y capturar recursos relacionados con la aplicación que se está probando. Análisis de códigos de error: Durante una prueba de penetración, las aplicaciones web pueden divulgar información que no debe ser vista por un usuario final. La información como los códigos de error puede informar al probador sobre las tecnologías y los productos que utiliza la aplicación. En muchos casos, los códigos de error pueden invocarse fácilmente sin la necesidad de habilidades o herramientas especializadas, debido a la mala excepción en el diseño y la codificación. Identificación puntos de entrada/salida: Identificar y mapear cada área dentro de la aplicación, además de los puntos de salida funcionales de la aplicación y los puntos donde la aplicación pasa a otra aplicación.
  • 8. b. Pruebas de Gestión de la Configuración #4 Los análisis sobre la infraestructura o topología de la arquitectura pueden revelar datos importantes sobre una aplicación web. Se pueden obtener datos como por ejemplo el código fuente, los métodos HTTP permitidos, funcionalidades administrativas, métodos de autenticación y configuraciones de la infraestructura. La gestión adecuada de la configuración de la infraestructura del servidor web es muy importante para preservar la seguridad de la aplicación. Si elementos como el software del servidor web, los servidores de bases de datos de back-end o los servidores de autenticación no se revisan y protegen adecuadamente, podrían presentar riesgos no deseados o introducir nuevas vulnerabilidades que podrían comprometer la aplicación en sí. Las verificaciones que se pueden realizar son: ● Pruebas de SSL/TLS: SSL es el acrónimo de Secure Sockets Layer (capa de sockets seguros), la tecnología estándar para mantener segura una conexión a Internet, así como para proteger cualquier información confidencial que se envía entre dos sistemas e impedir que los delincuentes lean y modifiquen cualquier dato que se transfiera. Los siguientes estándares se pueden usar como referencia al evaluar los servidores SSL son NIST SP 800-52 (recomienda que los sistemas federales de EE. UU. Utilicen al menos TLS 1.0 con conjuntos de cifrados basados
  • 9. en el acuerdo de clave RSA o DSA con el efímero Diffie-Hellman), 3DES o AES para la confidencialidad y SHA1 para la protección de la integridad. NIST SP 800-52 no permite específicamente los algoritmos no compatibles con FIPS como RC4 y MD5. Una excepción son los sistemas federales de los EE. UU. Que realizan conexiones a servidores externos, donde estos algoritmos se pueden usar en el modo de cliente SSL. ● Pruebas del receptor de escucha de la BD: La escucha de la base de datos es un demonio de red exclusivo de las bases de datos Oracle. Espera solicitudes de conexión de clientes remotos. Este demonio a veces puede verse comprometido y, por lo tanto, puede afectar la disponibilidad de la base de datos o la validez de los datos almacenados en ella. ● Pruebas de gestión de configuración de la aplicación: La configuración adecuada de los elementos individuales que conforman la arquitectura de una aplicación es importante para evitar errores que puedan comprometer la seguridad de toda la arquitectura. La revisión y prueba de la configuración es una tarea crítica en la creación y el mantenimiento de una arquitectura. Esto se debe a que a muchos sistemas diferentes generalmente se les proporcionarán configuraciones genéricas que pueden no ser adecuadas para la tarea que realizarán en el sitio específico en el que están instalados. Si bien la instalación
  • 10. típica del servidor de aplicaciones y la web contendrá una gran cantidad de funcionalidades (como ejemplos de aplicaciones, documentación, páginas de prueba), lo que no es esencial debe eliminarse antes de la implementación para evitar la explotación posterior a la instalación. ● Gestión de extensiones de archivo ● Archivos antiguos, copias de seguridad y sin referencias, entre otras. c. Pruebas de la lógica de negocio #5 Dentro de las fases de pruebas, esta es una en la que se requiere mayor nivel de creatividad por parte del especialista de seguridad, debido a que cada aplicación web gestiona procesos diferentes. Se incluyen pruebas de seguridad para comprobar si es posible evadir el flujo de trabajo, si es posible manipular los parámetros, datos de entradas y módulos, si se impide la subida de archivos con extensiones no consideradas dentro del proceso y con códigos dañinos. Si se realizan comprobaciones de integridad y validación de datos de entrada. d. Pruebas de autenticación #5 En esta fase se ejecutan pruebas de seguridad para evaluar el proceso de autenticación. Dentro de las pruebas de seguridad propuestas se encuentra el análisis para determinar si las credenciales son transmitidas sobre un canal encriptado, identificación de credenciales por defecto, comprobación de los mecanismos de bloqueo
  • 11. de credenciales. También se incluye las pruebas de fortalezas de los sistemas de preguntas y respuestas, cambio y reinicio de contraseñas, políticas de creación de contraseñas y descubrimiento de mecanismos de autenticación. e. Pruebas de autorización #6 Autorización es el concepto de permitir el acceso a recursos únicamente a aquellos que tienen permiso para ello. Las pruebas de Autorización significan entender cómo funciona el proceso de autorización, y usar esa información para saltarse el mecanismo de autorización. f. Pruebas de gestión de sesiones #6 La gestión de sesiones cubre ampliamente todos los controles que se realizan sobre el usuario, desde la autenticación hasta la salida de la aplicación. HTTP es un protocolo sin estados, lo que significa que los servidores web responden a las peticiones de clientes sin enlazarlas entre sí. Es importante que la seguridad de la aplicación sea considerada en el contexto de los requisitos y expectativas del proveedor g. Pruebas de validación de datos #7 La debilidad más común en la seguridad de aplicaciones web, es la falta de una validación adecuada de las entradas procedentes del cliente o del entorno de la aplicación. Esta debilidad conduce a casi todas las principales vulnerabilidades en aplicaciones, como inyecciones sobre el intérprete, ataques locale/Unicode, sobre el sistema de archivos y desbordamientos de búfer. h. Pruebas de denegación de servicio #7
  • 12. El tipo más común de ataque de Denegación de Servicio (Dos) es del tipo empleado en una red para hacer inalcanzable a la comunicación a un servidor por parte de otros usuarios válidos. El concepto fundamental de un ataque DoS de red es un usuario malicioso inundando con suficiente tráfico una máquina objetivo para conseguir hacerla incapaz de sostener el volumen de peticiones que recibe. Cuando el usuario malicioso emplea un gran número de máquinas para inundar de tráfico una sola máquina objetivo, se conoce generalmente como ataque denegación de servicio distribuidos (DDoS). i. Pruebas de servicios web #8 Los servicios web y SOA (Arquitectura Orientada a Servicios) son aplicaciones en expansión que están permitiendo que los negocios interoperan y crezcan a un ritmo sin precedentes. Los clientes de servicios web generalmente no son frontales web, sino otros servidores. Los servicios web están expuestos a la red como cualquier otro servicio, pero pueden ser utilizados en HTTP, FTP, SMTP o acompañados de cualquier otro protocolo de transporte. Las vulnerabilidades en servicios web son similares a otras vulnerabilidades como la inyección SQL, revelación de información, etc, pero también tienen vulnerabilidades de XML. j. Pruebas ajax #8 AJAX, acrónimo de JavaScript Asíncrono y XML, es una técnica de desarrollo web usada para crear aplicaciones web más interactivas y con mejor facilidad de uso. Utiliza una combinación de tecnologías para proveer una experiencia más parecida a utilizar una aplicación de
  • 13. escritorio. Esto se lleva a cabo utilizando el objeto XMLHttpRequest y JavaScript para hacer peticiones asíncronas al servidor web, analizando las respuestas y posteriormente actualizando el DOM HTML y el CSS de la página. El uso de técnicas AJAX puede tener enormes beneficios de usabilidad para aplicaciones web. Sin embargo, desde un punto de vista de seguridad, las aplicaciones AJAX tienen una mayor superficie de ataque que las aplicaciones web normales, y a menudo se desarrollan con un enfoque en lo que se puede hacer en lugar de lo que se debe hacer. Problemas de seguridad en AJAX ● Mayor superficie de ataque con muchas más entradas para asegurar. ● Funciones internas expuestas de la aplicación. ● Acceso del cliente a recursos de terceros sin mecanismos de codificación y seguridad incorporados ● Fallo al proteger la información de autenticación y las sesiones ● Línea borrosa entre el lado del cliente y el código del lado del servidor, posiblemente dando como resultado errores de seguridad E. Proyectos emblemáticos de herramientas de OWASP (ejemplos) #9 Proyectos que han demostrado un valor estratégico para OWASP y la seguridad de la aplicación en su conjunto.
  • 14. OWASP Zed Attack Proxy (ZAP) Encuentra automáticamente vulnerabilidades de seguridad en sus aplicaciones web mientras desarrolla y prueba sus aplicaciones. El Proxy Zed Attack (ZAP) de OWASP es una de las herramientas de seguridad gratuitas más populares del mundo y es mantenido activamente por cientos de voluntarios internacionales. Puede ayudarlo a encontrar automáticamente vulnerabilidades de seguridad en sus aplicaciones web mientras desarrolla y prueba sus aplicaciones. También es una gran herramienta para pentesters experimentados para usar en pruebas de seguridad manuales. F. Proyectos de código de owasp (ejemplos) #10 Se divide en dos: 1. OWASP ModSecurity Core Rule Set (CRS)
  • 15. Conjunto de reglas de detección de ataques genéricas para su uso con ModSecurity o firewalls de aplicaciones web compatibles cuyo objetivo es proteger las aplicaciones web de una amplia gama de ataques. 2. OWASP CSRFGuard Una biblioteca que implementa una variante del patrón de token del sincronizador para mitigar el riesgo de ataques de falsificación de solicitudes entre sitios “Cross-Site Request Forgery”(CSRF). Arquitectura CSRFGuard
  • 16. EJEMPLO: Contiene error. Prueba de caja gris G. Proyectos de documentación owasp (ejemplos ) #11 H. Fallas de seguridad de las aplicaciones web a. Inyección #12 Una inyección de código ocurre cuando un atacante envía datos inválidos a la aplicación web con la intención de hacerla hacer algo distinto para lo que fue diseñada/programada para hacer. El núcleo de una vulnerabilidad de inyección de código es la falta de validación de los datos consumidos por la aplicación web. Lo que significa que esta vulnerabilidad puede estar presente en casi cualquier tipo de tecnología.
  • 17. Todo lo que acepte parámetros como entradas puede ser potencialmente vulnerable a un ataque de inyección de código. ¿Cómo se previenen las vulnerabilidades de inyecciones de código? Prevenir inyecciones requiere mantener los datos separados de los comandos y las consultas. ● La opción preferida es usar una API segura que evite el uso del intérprete de manera completa, o provea una interfaz parametrizada. ● Usa un “whitelist” como validación de datos del lado del servidor. ● Para cualquier consulta dinámica residual, escapa los caracteres residuales usando la sintaxis de escape específica para ese intérprete. ● Usa LIMIT y otros controles SQL dentro de la consulta para prevenir la divulgación en masa de registros en el caso de una inyección SQL exitosa. ● Separación de datos con la lógica de la aplicación web ● Ajustes para limitar la exposición de datos en caso de ataques de inyección exitosos b. Autenticación rota #12 Una vulnerabilidad de autenticación rota les permite a los atacantes usar medios manuales y/o automáticos para tratar de ganar control sobre una de las cuentas en el sistema, o peor, para ganar control completo del sistema.
  • 18. La autenticación rota usualmente se debe a problemas de lógica en el mecanismo de autenticación de la aplicación, como el mal manejo de sesiones o el listado de nombres de usuarios. La segunda forma más común de esta vulnerabilidad es permitir que los usuarios hagan ataques de fuerza bruta contra esas páginas utilizando combinaciones de nombres de usuario y contraseñas. ¿Cómo se previenen las vulnerabilidades de autenticación rota? Estas son las recomendaciones técnicas de OWASP: ● Siempre que sea posible, implementa autenticación multi-factor para evitar ataques automáticos como credential stuffing, fuerza bruta y utilización de credenciales robadas. ● No despliegues ninguna credencial por defecto, sobre todo para los usuarios administradores. ● Implementa verificaciones de contraseñas débiles ● Asegura que el registro, la recuperación de credenciales y las rutas de API están protegidas contra ataques de enumeración de cuentas al escoger el mismo mensaje para todos los resultados. ● Limita o incrementa cada vez más los intentos de inicio de sesión fallidos. Registra todos los intentos fallidos y alerta a los administradores cuando se detecten ataques de credential stuffing, fuerza bruta u otros. ● Usa un gestor de sesiones integrado y seguro que genere un nuevo ID de sesión aleatorio luego del inicio de sesión. Los IDs de Sesiones nunca deben estar incluidos en las URLs.
  • 19. ● Los IDs también deben estar almacenados de forma segura y ser invalidados luego de cerrar la sesión, tiempos de inactividad y tiempos absolutos. c. Exposición a datos sensibles #13 En julio de 2018, Chrome comenzó a marcar todas las páginas utilizando HTTP como no seguro en un impulso para convertir la web a HTTPS . Y por una buena razón. Los datos que se pasan a través de HTTP no están encriptados, lo que pone en riesgo los nombres de usuario, las contraseñas, los números de tarjetas de crédito, los registros de salud y otros datos confidenciales. En lugar de atacar directamente el cifrado, los piratas informáticos prefieren ejecutar ataques de intermediarios, robar claves o acceder a datos de texto sin cifrar desde el servidor o el navegador del cliente. Cualquier dato almacenado o transmitido sin cifrado es susceptible de ser atacado. Incluso cuando se emplea criptografía, las claves débiles, la administración incorrecta de las claves o los esquemas de rotación pueden comprometer la seguridad y exponer datos confidenciales. Prevención: el cifrado es la mejor manera de prevenir la exposición de datos confidenciales. Todos los datos en tránsito deben estar protegidos con protocolos como TLS y SSL. Se recomienda utilizar cifrados perfectos de seguridad directa (PFS), priorización de cifrado por el servidor y parámetros seguros. Proteja los datos en reposo cifrando los datos almacenados cuando sea posible. Nunca almacene contraseñas como texto sin formato, es preferible utilizar “la sal” y cifrar con funciones hash como Argon2 y scrypt.
  • 20. d. Entidades externas xml #13 Extensible Markup Language (XML) es un formato de datos popular apreciado por su extensibilidad y flexibilidad. Un ataque de entidad externa XML (XXE) ocurre cuando un analizador XML es engañado para que haga referencia a una entidad externa manipulada. El ataque puede llevar a datos confidenciales comprometidos, ataques de denegación de servicio (DoS) y falsificaciones de solicitudes del lado del servidor (SSRF), entre otros impactos del sistema. El infame billón de risas DoS Attack es un excelente ejemplo de un ataque XXE. Prevención: la forma más sencilla de prevenir un ataque XXE es deshabilitar las entidades externas y el procesamiento DTD (definición del tipo de documento) en todos los analizadores XML de la aplicación. También es una buena práctica evitar la serialización de datos confidenciales y utilizar formatos de datos menos complejos, como JSON. Mantenga al día todos los procesadores XML y las bibliotecas e implemente la validación de entrada del lado del servidor (por ejemplo, listas blancas). e. Control acceso remoto :Las restricciones de control de acceso implican que los usuarios no pueden actuar fuera de los permisos previstos. Típicamente, las fallas conducen a la divulgación,
  • 21. modificación o destrucción de información no autorizada de los datos, o a realizar una función de negocio fuera de los límites del usuario. Las vulnerabilidades comunes de control de acceso incluyen: • Pasar por alto las comprobaciones de control de acceso modificando la URL, el estado interno de la aplicación o HTML, utilizando una herramienta de ataque o una conexión vía API. • Permitir que la clave primaria se cambie a la de otro usuario, pudiendo ver o editar la cuenta de otra persona. • Elevación de privilegios. Actuar como un usuario sin iniciar sesión, o actuar como un administrador habiendo iniciado sesión como usuario estándar f. Mala configuración de la seguridad : La aplicación puede ser vulnerable si: • Falta hardening adecuado en cualquier parte del stack tecnológico, o permisos mal configurados en los servicios de la nube. • Se encuentran instaladas o habilitadas características innecesarias (ej. puertos, servicios, páginas, cuentas o permisos). • Las cuentas predeterminadas y sus contraseñas siguen activas y sin cambios. • El manejo de errores revela a los usuarios trazas de la aplicación u otros mensajes demasiado informativos. g. Secuencias de comandos entre sitios #15 La secuencia de comandos en sitios cruzados, más conocida como XSS, es en realidad un subconjunto de inyección HTML. XSS es la más prevaleciente y perniciosa problemática de seguridad en aplicaciones Web. Las fallas de XSS ocurren cuando
  • 22. una aplicación toma información originada por un usuario y la envía a un navegador Web sin primero validarla o codificando el contenido. ● XSS permite a los atacantes ejecutar secuencias de comandos en el navegador Web de la víctima, quienes pueden secuestrar sesiones de usuario, modificar sitios Web, insertar contenido hostil, realizar ataques de phising, y tomar control del navegador Web del usuario utilizando secuencias de comando maliciosas. ● Generalmente JavaScript es utilizado, pero cualquier lenguaje de secuencia de comandos soportado por el navegador de la victima es un potencial objetivo para este ataque. Vulnerabilidad Existen tres tipos conocidos de secuencias de comandos en sitios cruzados: reflejado, almacenado e inyección DOM. XSS reflejado es el más fácil para explotar – una página reflejara información suministrada por el usuario directamente de vuelta al usuario: echo $_REQUEST['userinput']; XSS almacenado toma información hostil, la almacena en un fichero, una base de datos, u otro sistema de almacenamiento, y luego en una etapa posterior, muestra dicha información sin filtrado alguno. Esto es extremadamente peligroso en sistemas de administración de contenidos (CMS), blogs, o foros, donde un gran número de usuarios accederá a la información introducida por otros usuarios. Con ataques basados en inyección DOM, el código JavaScript del sitio Web y sus variables son manipuladas, en lugar de los elementos HTML. Alternativamente, los ataques pueden ser una mezcla o un híbrido de los tres tipos mencionados anteriormente. El peligro con la secuencia de comandos en sitios
  • 23. cruzados no es el tipo de ataque, sino la posibilidad del mismo. Un comportamiento fuera del estándar o inesperado del navegador Web puede introducir sutiles vectores de ataque. Verificando la seguridad El objetivo es verificar que todos los parámetros en la aplicación sean validados y/o codificados antes de ser incluidos en paginas HTML. ● Verificación automatizada: herramientas automáticas de testeo de penetración son capaces de detectar XSS reflejado a través de inyección de parámetros, pero generalmente fallan a la hora de encontrar XSS persistente, particularmente si la salida del vector XSS inyectado es restringida a través de pruebas de autorización (tales como si un usuario introduce información hostil que puede ser visualizada solamente por los administradores de la aplicación). ● Verificación manual: si se ha utilizado un mecanismo centralizado de validación y codificación, la manera más eficiente de controlar la seguridad es revisando el código. Si en cambio, se ha utilizado una implementación distribuida, entonces la verificación tomará considerablemente mucho más tiempo. h. Deserializacion insegura #15 i. Uso de componentes con vulnerabilidades conocidas #16 j. Insuficiente registro y monitoreo. #16
  • 24. Bibliografia Sierra, T. (2019). Tipos de vulnerabilidades en aplicaciones web | Tomás Sierra. Retrieved from https://tomassierra.com/tipos-de-vulnerabilidades-en-aplicaciones- web/(vulnerabilidades comunes de aplicaciones web) https://www.upwork.com/hiring/development/cybersecurity-basics-owasp-top-10- critical-web-application-security-risks/ https://seguridadaguijon.blogspot.com/2018/03/que-es-owasp.html https://www.owasp.org/images/2/2f/OWASP_SUSCERTE.pdf https://www.owasp.org/index.php/Main_Page