Pruebas de penetración de aplicaciones web

En este capítulo veremos Pentesting y Ataques a Aplicaciones Web. Las pruebas de penetración de aplicaciones web, o simplemente pentesting web, son una evaluación de seguridad integral destinada a identificar vulnerabilidades y debilidades en las aplicaciones web. Implica la simulación de ataques reales para evaluar la postura de seguridad de la aplicación y proporcionar recomendaciones para su remediación.
El uso de una metodología para las pruebas de penetración es de vital importancia, ya que proporciona un enfoque estructurado y sistemático para realizar evaluaciones de seguridad exhaustivas. La metodología empleada en el diseño del Pentesting se fundamenta en una investigación de tipo cualitativa con un planteamiento inicial inductivo, se presenta un diseño flexible con hallazgos encontrados desde el inicio hasta el fin.
Utilizamos varias metodologías, pero nos vamos a centrar en OWASP TOP 10. OWASP es una organización sin ánimo de lucro a nivel mundial dedicada a mejorar la seguridad de las aplicaciones y del software en general. La metodología OWASP se divide en 2 fases:
Fase pasiva
Donde se realizan pruebas hasta comprender la lógica de la aplicación que está en fase de auditoría. Analizar si arroja elementos que signifiquen vulnerabilidades abiertas para su análisis en profundidad. Durante las pruebas pasivas, un evaluador intenta comprender la lógica de la aplicación y la explora como usuario. Las herramientas se pueden utilizar para recopilar información. Por ejemplo, se puede usar un proxy HTTP para observar todas las solicitudes y respuestas HTTP. Al final de esta fase, el pentester generalmente debe comprender todos los puntos de acceso y la funcionalidad del sistema (por ejemplo, encabezados HTTP, parámetros, cookies, API, uso/patrones de tecnología, etc.). La sección Recopilación de información de OWASP explica cómo realizar pruebas pasivas.
Fase activa
Por ejemplo, un pentester puede encontrar una página en la siguiente URL:https://www.example.com/login/auth_form
Esto puede indicar un formulario de autenticación donde la aplicación solicita un nombre de usuario y contraseña.
Los siguientes parámetros representan dos puntos de acceso a la aplicación:https://www.example.com/appx?a=1&b=1
En este caso, la aplicación muestra dos puntos de acceso (parámetros ay b). Todos los puntos de entrada encontrados en esta fase representan un objetivo para la prueba. Hacer un seguimiento del directorio o árbol de llamadas de la aplicación y todos los puntos de acceso puede ser útil durante las pruebas activas.
Donde el auditor prueba todos los procesos recomendados en la metodología, siguiendo una metodología estándar de Ethical Hacking.
Etapas:

Network Profile (Reconocimiento Superficial): En esta etapa se intenta obtener la mayor cantidad de información posible del objetivo: rangos ip válidos, host vivos, ruteo hasta el objetivo, información de DNS (rangos IP Internos, servidores, transferencia de zona, subdominios), whois, presencia en internet, dumpster diving, copia del sitio web, information gathering.
System Profile (Enumeración de la Infraestructura): FINGERPRINT de Sistemas Operativos, Servidores, Dispositivos de Red, Dispositivos de protección (Detectores de Intrusos, Firewalls, filtros); escaneo de puertos, reconocimiento de servicios puestos en escucha, banner grabbing, sniffing de protocolos.
Análisis de vulnerabilidades: enumeración de vulnerabilidades comunes a los servicios puestos en escucha, tests manuales de cada uno de los host vivos. Vulnerability Assessment de Dispositivos, Sistemas Operativos, Servidores, Aplicaciones mediante el uso de herramientas automáticas. Web assessment, wireless assessment.
Etapa de Ataque y Recolección de evidencias:
Penetración: Se ejecutan los ataques predefinidos en ambiente controlado, dependiendo de los objetivos los ataques pueden ser sniffing pasivo, sniffing activo, recolección de credenciales de acceso, password cracking, ataques a los servidores, ejecución de código exploit, ataques a los dispositivos, búsqueda de credenciales default, etc.
Consolidación: Mediante el uso de técnicas no destructivas se intenta lograr un acceso a los sistemas para evidenciar el compromiso del sistema, pueden ser credenciales de usuario obtenidas durante el test, dando de alta un nuevo usuario, levantando algún servicio cerrado. Posteriormente se vuelve al estado anterior a la consolidación.
Seguridad de aplicaciones web
La seguridad de las aplicaciones web es un aspecto fundamental de la ciberseguridad que se centra en proteger las aplicaciones web de diversas amenazas, vulnerabilidades y ataques a la seguridad. El objetivo principal es garantizar la confidencialidad, integridad y disponibilidad de los datos procesados por las aplicaciones web, a la vez que se mitiga el riesgo de acceso no autorizado, filtraciones de datos e interrupciones del servicio. Las aplicaciones web son objetivos atractivos para los atacantes debido a su accesibilidad pública y al potencial de obtener acceso a datos confidenciales, como información personal, datos financieros o propiedad intelectual
La importancia de la seguridad de las aplicaciones web
La seguridad de las aplicaciones web es de suma importancia en el panorama digital actual debido a la creciente dependencia de las aplicaciones para diversos fines. Estas son algunas razones clave por las que la seguridad de las aplicaciones web es crucial:
- Protección de datos confidenciales: Las aplicaciones a menudo manejan datos confidenciales de los usuarios, como información personal, detalles financieros y credenciales de inicio de sesión. Una brecha de seguridad en una aplicación web puede provocar el acceso no autorizado y la exposición de estos datos confidenciales, lo que genera graves problemas de privacidad y cumplimiento.
- Protección de la confianza del usuario: Los usuarios esperan que las aplicaciones con las que interactúan sean seguras y protejan su información. Un incidente de seguridad puede erosionar la confianza del usuario, lo que resulta en la pérdida de clientes, daños a la reputación y publicidad negativa
- Prevención de pérdidas financieras: Los ataques a aplicaciones pueden provocar pérdidas financieras tanto para organizaciones como para personas. Para las empresas, las infracciones pueden resultar en robo financiero, robo de propiedad intelectual e incluso sanciones legales.
- Requisitos de cumplimiento y reglamentarios: Muchas industrias tienen estrictos requisitos de cumplimiento y reglamentarios, como el RGPD, la HIPAA y el PCI DSS, que exigen la implementación de sólidas medidas de seguridad para las aplicaciones web.
- Mitigación de ciberamenazas: El panorama de amenazas está en constante evolución, con nuevas técnicas de ataque que surgen regularmente. Garantizar una seguridad sólida de las aplicaciones web ayuda a mitigar el riesgo de ser víctima de diversas ciberamenazas, como el hacking por parte de cibercriminales, las filtraciones de datos y el ransomware.
- Protección contra ataques DDoS: Las aplicaciones web suelen ser el objetivo de ataques de denegación de servicio distribuido (DDoS), cuyo objetivo es saturar la infraestructura de la aplicación y dejarla indisponible para los usuarios legítimos.
- Mantenimiento de la continuidad del negocio: Las aplicaciones son fundamentales para las operaciones comerciales, y cualquier interrupción en su disponibilidad puede provocar tiempos de inactividad y pérdida de productividad. Unas medidas de seguridad sólidas ayudan a mantener la continuidad del negocio y a prevenir interrupciones costosas.
- Prevención de la desfiguración y la manipulación de datos: Las vulnerabilidades de las aplicaciones pueden explotarse para desfigurar páginas web, alterar el contenido o inyectar código malicioso, lo que daña la marca y la credibilidad de la organización
Prácticas de seguridad de aplicaciones web
- Autenticación y autorización: Implementar mecanismos de autenticación robustos para verificar la identidad de los usuarios y controles de autorización para otorgar privilegios de acceso adecuados según los roles de usuario.
- Validación de entrada: Garantizar que todas las entradas de datos de los usuarios estén validadas para evitar ataques comunes como la inyección SQL y los scripts entre sitios (XSS).
- Comunicación segura: Utilizar protocolos de cifrado como HTTPS (TLS/SSL) para asegurar la comunicación entre el navegador del usuario y el servidor web, protegiendo así los datos confidenciales en tránsito.
- Prácticas de codificación segura: Adherirse a los estándares y prácticas de codificación segura para minimizar la introducción de vulnerabilidades durante la fase de desarrollo.
- Actualizaciones de seguridad periódicas: Mantener la aplicación web y sus bibliotecas de software subyacentes actualizadas con los últimos parches y actualizaciones de seguridad.
- Principio de privilegio mínimo: Asignar los privilegios mínimos necesarios a usuarios, procesos y sistemas para reducir el impacto potencial de una brecha de seguridad.
- Cortafuegos de aplicaciones web (WAF): Implementar un WAF para filtrar y supervisar las solicitudes HTTP, bloquear el tráfico malicioso y proteger contra patrones de ataque conocidos.
- Gestión de sesiones: Implementar un manejo seguro de sesiones para evitar el secuestro de sesiones y garantizar que la identidad del usuario se mantenga de forma segura durante toda la sesión.
Pruebas de seguridad de aplicaciones web
- Las pruebas de seguridad de aplicaciones web son el proceso de evaluar los aspectos de seguridad de las aplicaciones web para identificar vulnerabilidades, debilidades y posibles riesgos de seguridad.
- Implica la realización de diversas pruebas y evaluaciones para garantizar que las aplicaciones web sean resistentes a las amenazas de seguridad y puedan proteger eficazmente los datos y funcionalidades confidenciales del acceso no autorizado o las actividades maliciosas.
- El objetivo principal es descubrir fallos de seguridad antes de que los atacantes los exploten.
- Al identificar y abordar las vulnerabilidades, las organizaciones pueden mejorar la seguridad general de sus aplicaciones web, reducir el riesgo de filtraciones de datos y acceso no autorizado, y proteger a sus usuarios e información confidencial.
Tipos de pruebas de seguridad de aplicaciones web
Suelen implicar una combinación de herramientas de escaneo automatizadas y técnicas de prueba manuales. Algunos tipos comunes de pruebas de seguridad realizadas en aplicaciones web incluyen:
- Escaneo de vulnerabilidades: Uso de herramientas automatizadas para escanear la aplicación web en busca de vulnerabilidades conocidas, como inyección SQL, secuencias de comandos entre sitios (XSS), configuraciones inseguras y versiones de software obsoletas.
- Pruebas de penetración: Simulación de ataques reales para evaluar las defensas de la aplicación e identificar posibles debilidades de seguridad. Esto implica hacking ético para obtener información sobre cómo un atacante podría explotar las vulnerabilidades.
- Revisión de código y análisis estático: Examen manual del código fuente de la aplicación para identificar fallas de codificación, configuraciones de seguridad incorrectas y posibles riesgos de seguridad.
- Pruebas de autenticación y autorización: evaluación de la eficacia de los mecanismos de autenticación y las funciones de control de acceso para garantizar que solo los usuarios autorizados tengan los niveles de acceso adecuados.
- Pruebas de validación de entrada y codificación de salida: evaluación de cómo la aplicación gestiona las entradas del usuario para evitar vulnerabilidades de seguridad comunes como XSS e inyección de SQL.
- Pruebas de gestión de sesiones: verificación de cómo la aplicación gestiona las sesiones de usuario y los tokens relacionados para evitar ataques relacionados con las sesiones.
- Pruebas de seguridad de API: evaluación de la seguridad de las API (interfaces de programación de aplicaciones) utilizadas por la aplicación web para el intercambio de datos y la integración con otros sistemas.
Pruebas de penetración de aplicaciones web
- Las pruebas de penetración de aplicaciones web son un subconjunto de las pruebas de seguridad de aplicaciones web que implican específicamente intentar explotar las vulnerabilidades identificadas.
- Es un ataque simulado a la aplicación web realizado por profesionales de seguridad cualificados conocidos como pentesters, cazadores de recompensas de errores o hackers éticos.
- El proceso implica un enfoque sistemático y controlado para evaluar la seguridad de la aplicación intentando explotar las vulnerabilidades conocidas
Pruebas de penetración de aplicaciones web vs. pruebas de seguridad de aplicaciones web
Una prueba de seguridad es un método para evaluar la seguridad de un sistema informático o una red mediante la validación y verificación metódicas de la eficacia de los controles de seguridad de la aplicación. Se centra únicamente en evaluar la seguridad de una aplicación web. El proceso implica un análisis activo de la aplicación en busca de debilidades, fallas técnicas o vulnerabilidades. Cualquier problema de seguridad que se encuentre será presentado al propietario del sistema, junto con una evaluación del impacto, una propuesta de mitigación o una solución técnica.
Diferencias clave entre las pruebas de seguridad de aplicaciones web y las pruebas de penetración de aplicaciones web:
- Alcance: Las pruebas de seguridad de aplicaciones web abarcan una gama más amplia de evaluaciones, incluyendo análisis estático y dinámico, mientras que las pruebas de penetración de aplicaciones web se centran en la explotación activa de vulnerabilidades.
- Objetivo: El objetivo principal de las pruebas de seguridad es identificar debilidades, mientras que las pruebas de penetración tienen como objetivo validar vulnerabilidades y evaluar la capacidad de la organización para detectar y responder a ataques.
- Metodología: Las pruebas de seguridad incluyen técnicas manuales y automatizadas, mientras que las pruebas de penetración son predominantemente un proceso manual, que implica el uso de diversas herramientas y técnicas para la explotación.
- Explotación: Las pruebas de seguridad no implican la explotación de vulnerabilidades, mientras que las pruebas de penetración sí, aunque de forma controlada y autorizada.
El objetivo de un pentest, es el de lograr reducir el riesgo mediante la prevención, detección y solución de las posibles vulnerabilidades encontradas, demostrando que tan fuerte puede ser la seguridad aplicada en el objetivo. Se habrá notado a lo largo del tiempo, las diferencias que hay entre un Análisis de Vulnerabilidades y un Pentest, a continuación, se expondrán las diferencias e igualdades consideradas de importancia:
Cuadro comprativo
Aspecto | Pruebas de seguridad de aplicaciones web | Pruebas de penetración de aplicaciones web |
Objetivo | Identificar vulnerabilidades y debilidades en la aplicación web sin explotarlas activamente. Mejorar la seguridad general de la aplicación web. | Intentar explotar activamente las vulnerabilidades identificadas y evaluar la respuesta de la organización a los ataques. Validar la eficacia de los controles de seguridad existentes y las capacidades de respuesta a incidentes |
Enfoque | De alcance más amplio y realista, evaluando la seguridad desde la perspectiva de un atacante. Incluye técnicas de prueba manuales y automatizadas. Pueden abordar aspectos más específicos de la seguridad, como revisar configuraciones de seguridad, realizar análisis de código estático, o evaluar políticas de seguridad. | Específico para identificar vulnerabilidades y explotarlas, principalmente un proceso manual. Tiene un enfoque más realista, evaluando la seguridad desde la perspectiva de un atacante. |
Metodología | Varios tipos de evaluaciones, como SAST, DAST, IAST, SCA, etc. Pueden ser más estáticas, centradas en análisis y evaluación sin realizar acciones directas de explotación. | Pruebas manuales que utilizan herramientas y técnicas para simular ataques reales. Es más orientado a la acción, simulando un ataque en tiempo real. |
Explotación | No implica la explotación de vulnerabilidades. | Implica la explotación controlada para validar las vulnerabilidades. |
Impacto | No intrusivo; centrado principalmente en la identificación de problemas. | Puede ser intrusivo, puede causar interrupciones en la aplicación durante las pruebas. |
Informes | Identifica vulnerabilidades y proporciona recomendaciones de remediación. | Documenta las explotaciones exitosas, identifica debilidades y recomienda medidas de remediación. |
Alcance | Pueden abordar una gama más amplia de evaluaciones, incluyendo análisis estáticos y dinámicos, revisión de código, evaluación de configuraciones, entre otros. | Se centra en simular un ciberataque real, replicando las tácticas de un atacante para identificar y explotar vulnerabilidades. |
Frecuencia | Pueden ser más continuas y estar integradas en el ciclo de desarrollo de software. | Generalmente se realiza de forma periódica para evaluar la seguridad en diferentes momentos y situaciones. |
En resumen:
ANALISIS DE VULNERABILIDAD
- Identificación de fallas de seguridad
- Análisis de vulnerabilidades
- Enumeración de los riesgos y amenazas
- La verificación escapa al análisis
- Se realiza al inicio del plan de seguridad
PENTEST
- Identificación de fallas de seguridad
- Búsqueda de vulnerabilidades
- Explotación de las mismas para comprobar falencias
- Se muestra y explica las evidencias del acceso logrado
- Se realiza al final del plan de seguridad
Ambas prácticas son complementarias y es común utilizar ambas en un programa de seguridad integral. El pentesting a menudo se considera una parte esencial de las pruebas de seguridad, pero no representa su totalidad. Las pruebas de seguridad abordan un espectro más amplio de evaluaciones que van más allá de la simulación de un ataque real.
Roles y responsabilidades del pentester.
Los roles y responsabilidades de un pentester, son fundamentales para garantizar la eficacia y éxito de las pruebas de seguridad. Aquí se detallan los principales aspectos:
- Recopilación de Información: Obtener datos relevantes sobre el sistema objetivo, como información de red, tecnologías utilizadas y posibles puntos de entrada.
- Análisis de Vulnerabilidades: Identificar y evaluar posibles vulnerabilidades en el sistema objetivo mediante técnicas de escaneo y análisis.
- Explotación de Vulnerabilidades: Intentar aprovechar las vulnerabilidades identificadas para verificar su explotabilidad y evaluar el impacto potencial.
- Pruebas de Seguridad de Aplicaciones: Evaluar la seguridad de aplicaciones web y móviles, identificando posibles vulnerabilidades como inyecciones SQL, XSS, CSRF, etc.
- Pruebas de Red: Evaluar la seguridad de la infraestructura de red, identificando vulnerabilidades en configuraciones, dispositivos y protocolos.
- Pruebas de Social Engineering: Simular ataques de ingeniería social para evaluar la resistencia del personal a la manipulación y concienciar sobre posibles amenazas.
- Redacción de Informes: Documentar de manera clara y detallada todas las actividades realizadas, hallazgos, riesgos identificados y recomendaciones.
- Colaboración con el Equipo de Seguridad: Trabajar en estrecha colaboración con el equipo de seguridad para comprender las políticas, procedimientos y necesidades específicas de la organización.
- Desarrollo de Herramientas y Automatización: Contribuir al desarrollo y mejora de herramientas automatizadas para aumentar la eficiencia y eficacia de las pruebas.
- Capacitación y Concientización: Proporcionar orientación y capacitación al personal sobre las mejores prácticas de seguridad y concienciar sobre las amenazas actuales.
- Mantenimiento de Conocimientos: Mantenerse actualizado sobre las últimas amenazas, vulnerabilidades y técnicas de hacking ético.
Un pentester debe ser ético, poseer habilidades técnicas avanzadas, comprender el panorama de amenazas actual y ser capaz de comunicar de manera efectiva los riesgos y las recomendaciones a los diferentes niveles de la organización. La confidencialidad y la integridad son aspectos clave en el desempeño de estas responsabilidades.
¿Qué no es un Pentest?
Conseguir todas las vulnerabilidades: en caso de ser un ataque de caja negra, los sistemas que no logren ser comprometidos pueden tener vulnerabilidades ocultas que solo son visibles desde una posición administrativa y como es un test rápido, la probabilidad de ocurrencia de falsos negativos y falsos positivos se incrementa.
Atacar todas las vulnerabilidades: hay vulnerabilidades que técnicamente no pueden ser atacadas en un período de tiempo acotado (por eso la importancia del alcance), dado que pueden existir varios caminos de ataque, un atacante puede elegir utilizar solo una y documentar el resto de las vulnerabilidades.
Corregir las vulnerabilidades: el pentester no debe solucionar las vulnerabilidades, ya que representa un conflicto de interés y se debe limitar a realizar recomendaciones para solucionarlas o mitigarlas, y luego realizar una auditoría de revisión (verificar lo realizado).
Consideraciones éticas y legales en el pentesting
La batalla entre la legalidad y la ética en ciberseguridad, y más aún en las pruebas de penetración, siempre es controvertida. Etiquetas como «hacking» y «hacker» suelen tener connotaciones negativas, especialmente en la cultura popular, debido a algunas personas corruptas. La idea de acceder legalmente a un sistema informático es un concepto difícil de comprender; después de todo, ¿qué lo hace legal exactamente? Recuerde que una prueba de penetración es una auditoría autorizada de la seguridad y las defensas de un sistema informático, según lo acordado por los propietarios de los sistemas. La legalidad de la penetración es bastante clara en este sentido: cualquier acción que no cumpla con este acuerdo se considera no autorizada.
Antes de comenzar una prueba de penetración, se lleva a cabo una conversación formal entre el evaluador y el propietario del sistema. Se acuerdan las diversas herramientas, técnicas y sistemas que se probarán. Esta conversación constituye el alcance del acuerdo de prueba de penetración y determinará el desarrollo de la prueba.Las empresas que ofrecen servicios de pruebas de penetración están sujetas a marcos legales y a la acreditación del sector. Por ejemplo, el Centro Nacional de Ciberseguridad (NCSC) cuenta con el programa de acreditación CHECK en el Reino Unido.
La ética es el debate moral entre lo correcto y lo incorrecto; aunque una acción puede ser legal, puede ir en contra del sistema de creencias de un individuo sobre lo correcto y lo incorrecto. Los evaluadores de penetración a menudo se enfrentan a decisiones moralmente cuestionables durante una prueba de penetración. Por ejemplo, acceden a una base de datos y se les presentan datos potencialmente sensibles. O, quizás, realizan un ataque de phishing contra un empleado para poner a prueba la seguridad humana de una organización. Si dicha acción se acordó durante las etapas iniciales, es legal, aunque éticamente cuestionable.
Esto es solo una introducción y el uso específico dependerá del alcance y los requisitos de cada proyecto de pentesting. Es crucial que los pentesters comprendan el funcionamiento de estas herramientas y sus implicaciones éticas, y que sigan las leyes y regulaciones aplicables durante las pruebas de penetración. Las pruebas de penetración, aunque esenciales para evaluar la seguridad de sistemas, deben llevarse a cabo con estricto apego a consideraciones éticas y legales.
Consideraciones Éticas:
- Consentimiento Informado: Obtener el consentimiento por escrito del propietario del sistema o red antes de realizar cualquier prueba de penetración.
- Proporcionalidad y Justificación: Asegurarse de que las pruebas sean proporcionadas y justificadas, evitando daños innecesarios o intrusivos.
- Confidencialidad: Mantener la confidencialidad de cualquier información sensible o datos que se obtengan durante las pruebas.
- Notificación de Resultados: Informar de manera clara y detallada sobre los hallazgos y vulnerabilidades descubiertas al propietario del sistema, y ofrecer recomendaciones para la mitigación.
- Integridad Profesional: Actuar con integridad y profesionalismo en todas las etapas del proceso de pruebas, evitando conductas inapropiadas o malintencionadas.
Consideraciones Legales:
- Autorización Legal: Obtener permisos y autorizaciones legales para realizar pruebas de penetración en sistemas y redes. Esto es fundamental para evitar acciones legales en su contra.
- Leyes y Regulaciones Locales: Conocer y cumplir con todas las leyes y regulaciones locales, estatales y nacionales relacionadas con las pruebas de penetración.
- Documentación: Mantener una documentación clara y detallada de todas las actividades realizadas durante las pruebas, incluyendo fechas, horas, resultados y acciones tomadas.
- No Dañar o Explotar Datos Sensibles: Evitar cualquier acción que pueda dañar datos o explotar vulnerabilidades con el propósito de obtener información sensible sin autorización explícita.
- No Exceder los Límites del Alcance: Apegarse estrictamente al alcance acordado para las pruebas y evitar explorar áreas fuera de esos límites sin permiso adicional.
- Cooperación con el Cliente: Colaborar estrechamente con el cliente y su equipo de seguridad para garantizar que las pruebas se realicen de manera segura y conforme a las políticas establecidas.
El incumplimiento de estas consideraciones éticas y legales puede resultar en consecuencias graves, incluyendo acciones legales, pérdida de confianza y daño a la reputación del profesional de seguridad. Es crucial trabajar en estrecha colaboración con el cliente y otros stakeholders para garantizar que todas las partes estén informadas y comprometidas en el proceso de pruebas de penetración.
Amenazas y riesgos comunes de las aplicaciones web
Dada la creciente adopción de aplicaciones web, no sorprende que estas estén constantemente expuestas a diversas amenazas y riesgos de seguridad debido a su amplia accesibilidad y a los valiosos datos que procesan. Comprender estas amenazas de seguridad comunes es crucial para que los desarrolladores, los profesionales de la seguridad y las organizaciones implementen medidas efectivas y protejan sus aplicaciones web. El impacto real y la gravedad de cada amenaza pueden variar según la aplicación web específica y sus medidas de seguridad. La seguridad de las aplicaciones web requiere un enfoque proactivo e integral para mitigar estas amenazas y proteger eficazmente los datos confidenciales y las interacciones de los usuarios.
Dado que las aplicaciones web están abiertas a Internet y suelen utilizar una variedad de plataformas y servicios, son objetivos muy atractivos para los atacantes. La gran mayoría de las aplicaciones web se pueden utilizar para atacar a los usuarios y que muchas de ellas son la fuente de filtraciones de datos. La autenticación y la autorización de usuarios son las más vulnerables. Esto se refleja en la posición de Broken Access Control en la cima del top 10 de OWASP. Como evaluadores de penetración, es importante que trabajemos arduamente para identificar vulnerabilidades en las aplicaciones web y, en ocasiones, explotarlas si está dentro del alcance de nuestro compromiso con nuestros clientes.
A lo largo de este curso aprenderás:
- Una descripción general de las aplicaciones web y el Top 10 de OWASP.
- Aprenderá a evaluar y explotar vulnerabilidades basadas en aplicaciones.
- Cómo crear su propio laboratorio.
- Comprenderá las vulnerabilidades basadas en inyección
- Aprenderá sobre las formas en que los atacantes explotan las fallas de autenticación y autorización.
- Comprenderá las vulnerabilidades de secuencias de comandos entre sitios (XSS) y falsificación de solicitudes entre sitios (CSRF/XSRF) y cómo explotarlas.
- Aprenderá sobre el secuestro de clics y cómo los atacantes pueden aprovechar las configuraciones de seguridad incorrectas
- Vulnerabilidades de recorrido de directorios
- Prácticas de código inseguro
- Ataques contra las interfaces de programación de aplicaciones (API).
- Ataques tanto del lado del cliente como del servidor
- Etc…
Amenaza:
Una amenaza se refiere a cualquier fuente potencial de daño o evento adverso que pueda explotar una vulnerabilidad en las medidas de seguridad de un sistema o de una organización. Las amenazas pueden ser provocadas por el hombre, como ciberdelincuentes, hackers o personas con intenciones maliciosas, o pueden ser naturales, como inundaciones, terremotos o cortes de energía. En el contexto de la ciberseguridad, las amenazas pueden incluir varios tipos de ataques, como infecciones de malware, intentos de phishing, ataques de denegación de servicio y filtraciones de datos
Riesgo:
- El riesgo es el potencial de pérdida o daño resultante de una amenaza que explota una vulnerabilidad en un sistema u organización.
- Es una combinación de la probabilidad de que ocurra una amenaza y el impacto o la gravedad del evento adverso resultante.
- El riesgo a menudo se mide en términos de la probabilidad de que ocurra un incidente y la magnitud potencial de su impacto.
En resumen, una amenaza es un peligro potencial o un evento dañino, mientras que el riesgo es la probabilidad y el impacto potencial de que ese evento ocurra. Las amenazas pueden existir, pero pueden o no representar un riesgo significativo dependiendo de las vulnerabilidades y las medidas de seguridad implementadas para mitigarlas.
Las pruebas de penetración también pueden causar problemas como el mal funcionamiento del sistema, el bloqueo del sistema o la pérdida de datos. Por lo tanto, una empresa debe asumir riesgos calculados antes de seguir adelante con las pruebas de penetración. El riesgo se calcula de la siguiente manera y es un riesgo de gestión.
RIESGO = Amenaza × Vulnerabilidad
Tienes un sitio web de comercio electrónico en línea que está en producción. Quieres hacer una prueba de penetración antes de ponerlo en funcionamiento. En este caso, primero debes sopesar los pros y los contras. Si sigues adelante con la prueba de penetración, podría causar una interrupción del servicio. Por el contrario, si no deseas realizar una prueba de penetración, puedes correr el riesgo de tener una vulnerabilidad sin parchear que seguirá siendo una amenaza todo el tiempo. Antes de realizar una prueba de penetración, se recomienda que dejes por escrito el alcance del proyecto. Debes tener claro qué se va a probar. Por ejemplo:
- Su empresa tiene una VPN o cualquier otra técnica de acceso remoto y desea probar ese punto en particular.
- Su aplicación tiene servidores web con bases de datos, por lo que es posible que desee comprobar si tiene ataques de inyección SQL, que es una de las pruebas más importantes para un servidor web.
Antes de continuar con una prueba de penetración, debe tener en cuenta los siguientes puntos:
- Primero comprenda sus requisitos y evalúe todos los riesgos.
- Aprende y de ser posible certifícate. Es común que suelan contratar a una persona certificada para realizar pruebas de penetración porque están capacitados para aplicar todos los métodos y técnicas posibles para descubrir posibles lagunas en una red o aplicación web.
- Siempre firme un acuerdo antes de realizar una prueba de penetración.
Ataques comunes a aplicaciones web
Existen varios ataques comunes a aplicaciones web que los ciberdelincuentes suelen explotar para comprometer la seguridad de las aplicaciones web. A continuación se enumeran algunos de los más frecuentes:
Secuencias de comandos entre sitios (XSS)
Los atacantes inyectan secuencias de comandos maliciosas en las páginas web que ven otros usuarios, lo que provoca acceso no autorizado a los datos del usuario, secuestro de sesiones y manipulación del navegador. Esto puede ocurrir cuando la aplicación no logra desinfectar correctamente la entrada o salida del usuario, lo que permite a los atacantes ejecutar código arbitrario en el navegador de la víctima.

Inyección SQL (SQLI)
Los atacantes manipulan la entrada del usuario para inyectar código SQL malicioso en la base de datos de la aplicación, lo que provoca acceso no autorizado a los datos, manipulación de datos o la vulneración de la base de datos. Las vulnerabilidades de inyección SQL suelen surgir cuando la entrada del usuario no se valida o desinfecta correctamente antes de utilizarla en consultas de la base de datos

Falsificación de solicitud entre sitios (CSRF)
Los atacantes engañan a los usuarios autenticados para que realicen acciones sin saberlo en una aplicación web, como cambiar los detalles de la cuenta, explotando sus sesiones activas. Esto se logra creando solicitudes maliciosas y explotando la confianza depositada en las sesiones del navegador del usuario. Los ataques CSRF pueden provocar que se realicen acciones sin el consentimiento del usuario, como cambiar contraseñas, realizar transacciones financieras o eliminar datos.

Configuraciones de seguridad incorrectas
Los servidores, bases de datos o marcos de aplicaciones configurados incorrectamente pueden exponer datos confidenciales o proporcionar puntos de entrada para los atacantes.
Exposición de datos confidenciales
No proteger adecuadamente los datos confidenciales, como contraseñas o información personal, puede provocar filtraciones de datos y robo de identidad.
Ataques de fuerza bruta y robo de credenciales
Los atacantes utilizan herramientas automatizadas para adivinar nombres de usuario y contraseñas, intentando obtener acceso no autorizado a las cuentas de usuario.
Vulnerabilidades de carga de archivos
Los mecanismos de carga de archivos inseguros pueden permitir a los atacantes cargar archivos maliciosos, lo que lleva a la ejecución remota de código o al acceso no autorizado al servidor, aumentar privilegios o realizar otras actividades maliciosas.
Inclusión remota de archivos (RFI) e inclusión local de archivos (LFI)
Los ataques RFI y LFI implican la explotación de vulnerabilidades que permiten la inclusión de archivos externos o locales en una aplicación web. Los atacantes pueden manipular estas vulnerabilidades para ejecutar código arbitrario, leer archivos confidenciales u obtener acceso no autorizado al servidor.
Denegación de servicio (DoS) y denegación de servicio distribuida (DDoS)
Los ataques DoS y DDoS tienen como objetivo saturar los servidores de aplicaciones web, causando interrupciones del servicio y denegando el acceso a usuarios legítimos.

Falsificación de solicitud del lado del servidor (SSRF):
Los atacantes utilizan SSRF para realizar solicitudes desde el servidor a recursos internos o redes externas, lo que potencialmente puede provocar el robo de datos o el acceso no autorizado a sistemas internos, fuga de datos o una mayor explotación de vulnerabilidades.

Controles de acceso inadecuados:
Los controles de acceso débiles pueden permitir que usuarios no autorizados accedan a funcionalidades restringidas o datos confidenciales.
Uso de componentes con vulnerabilidades conocidas:
La integración de componentes de terceros con fallos de seguridad conocidos puede introducir debilidades en la aplicación web.
Control de acceso defectuoso:
Los controles de acceso inadecuados pueden permitir que usuarios no autorizados accedan a funcionalidades restringidas o datos confidenciales
Secuestro y fijación de sesiones
Estos ataques se dirigen a las debilidades de los mecanismos de gestión de sesiones. El secuestro de sesiones implica robar o suplantar sesiones de usuario válidas, mientras que la fijación de sesiones implica obligar a un usuario a utilizar un ID de sesión predeterminado. Ambos ataques pueden dar lugar a un acceso no autorizado a cuentas de usuario y datos confidenciales.
Secuestro de servidores DNS:
Cuando los ciberdelincuentes explotan un servidor DNS y modifican la configuración de mapeo para redirigirlo a un servidor DNS fraudulento, se denomina secuestro de servidor DNS. Una vez secuestrado, todas las solicitudes de los usuarios se enviarán al servidor fraudulento y los usuarios serán redirigidos al sitio web deseado por los atacantes.
Ataque de cruce de directorios:
Para que un servidor web funcione de forma segura, es importante controlar adecuadamente el acceso al contenido web. Si no se controla, los atacantes pueden acceder a los directorios restringidos lanzando un ataque de cruce de directorios. Se trata de un ataque HTTP que también les permite escribir y ejecutar comandos fuera del directorio raíz del servidor.
Sniffing y MitM:
Los ataques de sniffing y de intermediarios se pueden utilizar para monitorear y comprometer la comunicación entre el usuario final y el servidor web. Los atacantes también pueden modificar la información y robar datos confidenciales, como datos bancarios, información de contacto, credenciales, etc.
Desfiguración de sitios web:
La desfiguración de un sitio web es el método de modificar el contenido de un sitio web o todo el sitio web de forma no autorizada. Los ciberdelincuentes pueden cambiar el contenido escrito o agregar elementos visuales como ventanas emergentes e imágenes destacadas, etc. En algunos casos, reemplazan por completo el sitio web por uno nuevo.
Ataque de envenenamiento de caché web:
Es un ataque en el que los hackers reemplazan el contenido almacenado en caché de una página web por contenido malicioso. De esta manera, los usuarios finales verán el contenido envenenado en lugar del contenido original.
Ataques de entidad externa XML (XXE)
Los ataques XXE tienen como objetivo aplicaciones que analizan la entrada XML de forma insegura. Al aprovechar esta vulnerabilidad, los atacantes pueden recuperar información confidencial, ejecutar código remoto o realizar ataques de denegación de servicio.
Inyección LDAP:
El protocolo ligero de acceso a directorios es un directorio activo en IP, donde la información se organiza de manera jerárquica según los atributos del usuario. La inyección LDAP funciona de la misma manera que la inyección SQL, donde el atacante intenta ingresar datos arbitrarios para crear consultas maliciosas que serán ejecutadas por el servidor LDAP.
📊 Ataques – Defensas – Pruebas de Pentest
Tipo de Ataque / Vulnerabilidad | Defensas aplicables (qué sirve en varios casos) | Pruebas de Pentest útiles |
SQL Injection (SQLi) | – Sanitizar entrada. – Queries parametrizadas (Prepared Statements). – Principio de mínimo privilegio en BD. | – Inyectar ‘ OR ‘1’=’1. – Uso de sqlmap. – Análisis de errores en responses. |
Cross-Site Scripting (XSS) | – Escapar salida en HTML/JS. – Validar entrada. – CSP (Content Security Policy). | – Inyectar <script>alert(1)</script>. – Probar con payloads en inputs/cookies. |
Cross-Site Request Forgery (CSRF) | – Tokens CSRF únicos por sesión. – SameSite cookies. | – Repetir request crítico sin token. – Revisar si token es predecible o falta. |
Broken Access Control (IDOR, escaladas) | – Verificar autorización en backend. – Principio de mínimo privilegio. – Deny by default. | – Cambiar IDs en parámetros. – Probar acceso con usuarios de distinto rol. |
Command Injection | – Escapar entrada a nivel OS. – Usar APIs seguras (no system()). – Validación estricta de input. | – Inyectar ; id o && whoami. – Intentar payloads de reverse shell. |
Directory Traversal / File Inclusion | – Normalizar rutas. – Listas blancas de archivos permitidos. – Principio de mínimo privilegio en FS. | – Probar ../../etc/passwd. – Intentar acceder a archivos fuera del scope. |
Insecure File Upload (Webshell) | – Validar extensión + MIME. – Almacenar fuera del directorio público. – Escanear archivos cargados. | – Subir .php/.jsp/.asp. – Ver si ejecuta código remoto. |
Sensitive Data Exposure / Cryptographic Failures | – TLS (HTTPS obligatorio). – Criptografía robusta (AES, bcrypt, Argon2). – No hardcodear claves. | – Revisar tráfico en Burp (http vs https). – Buscar datos sensibles en repositorios/código. |
Insecure Deserialization | – Evitar deserialización de objetos sin validar. – Firmar/encriptar objetos. | – Manipular parámetros serializados (ej. Base64). – Probar payloads que ejecuten código. |
SSRF (Server-Side Request Forgery) | – Whitelist de URLs. – Bloquear acceso a rangos internos (127.0.0.1, 169.254/16). | – Usar parámetros tipo ?url=http://127.0.0.1:22. – Intentar acceso a metadata cloud. |
Security Misconfiguration | – Hardening de servidores. – Headers de seguridad (CSP, X-Frame-Options, HSTS). – Eliminar servicios innecesarios. | – nmap para descubrir servicios abiertos. – Revisar headers HTTP con Burp. |
Vulnerable & Outdated Components | – Gestión de parches continua. – Uso de SCA (Software Composition Analysis). | – Identificar versiones en banners. – Comparar con CVEs públicos. |
Logging & Monitoring Failures | – Centralizar logs. – Alertas en intentos anómalos. – Detección temprana (SIEM, SOC). | – Hacer bruteforce y ver si hay alertas. – Revisar si los intentos quedan registrados. |
📌 Resumen de ataques clave en servicios web:
- SQL Injection → robo/modificación de datos.
- XSS → robo de cookies, ejecución de JS malicioso.
- CSRF → acciones no autorizadas en nombre del usuario.
- File Upload inseguro → subida de shells.
- IDOR/BOLA → acceso a datos de otros usuarios.
- Misconfiguración → directorios abiertos, paneles admin expuestos.
Estas amenazas a la seguridad son solo algunos de los muchos riesgos que enfrentan las aplicaciones web. Para abordar estos desafíos, las organizaciones deben adoptar un enfoque de seguridad de varias capas, que incluya prácticas de codificación segura, pruebas de seguridad periódicas, educación de los usuarios sobre las mejores prácticas de seguridad y la supervisión y actualización continuas de los componentes y la infraestructura de las aplicaciones web. Ser proactivo y mantenerse informado sobre las amenazas emergentes es crucial para mantener la seguridad y la integridad de las aplicaciones web. Desde la perspectiva de un evaluador de penetración de aplicaciones web, es importante comprender bien las amenazas principales/comunes a las que se enfrentan las aplicaciones web.
Metodología de ataque a servidores web
Entonces, ¿cómo hacen los atacantes para penetrar en el sitio? Bien básicamente siguiendo una metodología, similar a la que llevaremos a cabo nosotros mismos pero sin causar daño.
1. Recopilación de información: El primer paso para atacar un servidor web es encontrar la máxima información posible sobre el servidor. Una vez recopilada la información, se analiza para encontrar las debilidades en el mecanismo de seguridad.
2. Huella del servidor web: En esta etapa se encuentra más información sobre el servidor web, como los puertos y servicios, aspectos de seguridad, etc. Ayuda a los a conocer las capacidades de acceso remoto del servidor.
3. Duplicación de sitio web: Es el proceso de copiar el sitio web y su contenido a un nuevo servidor para navegar en él en línea. La duplicación de sitios web ayuda a los atacantes a ver la estructura detallada del sitio web.
4. Análisis de vulnerabilidades: Las herramientas de escaneo de vulnerabilidades se utilizan para detectar las vulnerabilidades y configuraciones incorrectas en un servidor.
5. Secuestro de sesión: Los atacantes pueden tomar el control de la sesión de un usuario y obtener control total mediante el secuestro de sesión .
6. Descifrado de contraseñas: Los atacantes también utilizan varios métodos de descifrado de contraseñas para comprometer un servidor. Estos métodos pueden ser ataques de fuerza bruta, ataques de diccionario, etc.
Servicios Web – Ataques y Defensas
Servicio Web | Ataques típicos | Defensas recomendadas |
HTTP (80) | Tráfico en texto claro → robo de credenciales con sniffing, MITM. | Usar HTTPS (TLS) obligatorio (HSTS). |
HTTPS (443) | SSL Stripping, downgrade a TLS débil, certificados falsos. | TLS 1.2/1.3, certificados válidos, HSTS, CSP. |
Aplicaciones Web (Apache, Nginx, IIS) | OWASP Top 10: XSS, SQLi, CSRF, LFI/RFI, subida de archivos, IDOR. | Validación de entrada, sanitización, WAF, autenticación fuerte, segmentación. |
Web Panels / Admin Consoles (ej: /admin, /phpmyadmin) | Fuerza bruta de login, credenciales por defecto, RCE. | Cambiar puertos/paths, MFA, bloquear IP tras intentos fallidos, restringir acceso por IP. |
APIs (REST, GraphQL, SOAP) | IDOR/BOLA, falta de rate limiting, inyección (SQL/NoSQL), tokens inseguros, excesiva exposición de datos. | OWASP API Security Top 10, rate limiting, scopes en tokens, validación de parámetros. |
CMS (WordPress, Joomla, Drupal) | Exploits de plugins, brute force en /wp-login, LFI/RFI. | Actualizar plugins/temas, WAF, bloqueo tras intentos fallidos, ocultar rutas sensibles. |
Proxy/Web Services en puertos alternativos (8080, 8443) | Enumeración, bypass de seguridad, explotación de configuraciones por defecto (ej: Tomcat Manager, Jenkins). | Eliminar servicios innecesarios, hardening de configuración, autenticación fuerte, restringir acceso. |
DNS expuesto (53) usado en Web Apps | Zone transfer, DNS poisoning. | Deshabilitar zone transfer, DNSSEC, segmentar servicios DNS internos. |
📌 Resumen de defensas clave:
- HTTPS en todo (TLS fuerte).
- WAF y rate limiting.
- Validación estricta de entradas.
- MFA en paneles sensibles.
- Actualización constante de frameworks/servidores.
- Seguridad por capas (defense in depth).
🔑 Observaciones clave
- Defensas transversales (sirven en varios casos):
- Sanitización y validación de input → SQLi, XSS, Command Injection.
- Escapar salida (output escaping) → XSS, inyección en HTML/JS.
- Principio de mínimo privilegio → BD (SQLi), FS (Directory Traversal), Access Control.
- Deny by default → Access Control, APIs, permisos de usuarios.
- Pruebas comunes en pentest:
- Manipulación de parámetros → IDOR, Access Control, SQLi.
- Payloads maliciosos → XSS, Command Injection, LFI.
- Escaneo y enumeración → Security Misconfiguration, Outdated Components.
Las adelante veremos cómo crear tu propio laboratorio, pero mientras es indispensable que, al menos conozcas los sistemas operativos mas usados y las herramientas más comunes, aunque sea de nombre, ya profundizaremos.
¿Qué es Kali Linux?

Kali Linux (antes conocida como BackTrack Linux ) es una distribución Linux de código abierto basada en Debian que permite a los usuarios realizar pruebas de penetración y auditorías de seguridad avanzadas. Se ejecuta en múltiples plataformas y está disponible y accesible de forma gratuita tanto para profesionales como para aficionados a la seguridad de la información.
Esta distribución tiene cientos de herramientas, configuraciones y scripts que permiten a los usuarios centrarse en tareas como análisis forense informático, ingeniería inversa y detección de vulnerabilidades, en lugar de ocuparse de actividades no relacionadas.
Está diseñada específicamente para las necesidades de los evaluadores de penetración experimentados, por lo que toda la documentación de este sitio presupone un conocimiento previo y familiaridad con el sistema operativo Linux en general.
Está financiada y mantenida por Offensive Security. Kali Linux fue desarrollado a través de la reescritura de BackTrack. Kali Linux viene con una gran cantidad de herramientas que son adecuadas para una variedad de tareas de seguridad de la información, incluidas pruebas de penetración, análisis forense informático, investigación de seguridad e ingeniería inversa.
Aproximadamente, Kali Linux tiene 600 programas de pruebas de penetración, como los escáneres de seguridad de aplicaciones web OWASP ZAP y Burp Suite, Airxrack-ng (suite de software para pruebas de penetración en redes LAN inalámbricas), sqlmap (herramienta de toma de control de bases de datos e inyección SQL automática), John the Ripper (craqueador de contraseñas), Metasploit (marco para pruebas de penetración), Wireshark (analizador de paquetes), Nmap (escáner de puertos), Armitage (una herramienta para la gestión gráfica de ciberataques), etc.
Tambien hay mas sistemas como:
- Parrot Security OS
- BackBox Linux
- Sherlock Linux
- BlackArch Linux
- ArchStrike
- Wifislax
Para una mejor comprensión, las herramientas son presentadas en diferentes categorías, aquí algunas de las más importantes:
- Information gathering: Herramientas de recolección de datos que ofrecen información sobre los objetivos de los análisis, especialmente herramientas de DNS, dominios y direcciones IP. Nmap está en esta categoría.
- Aplicaciones web: Herramientas diseñadas para realizar análisis en sitios web a nivel de servidores.
- Ataques a contraseñas: Herramientas para hacer cracking de contraseñas, de forma tal, que se prueban ataques de fuerza bruta o diccionario para encontrar las contraseñas de acceso correctas a un formulario o sistema.
- Ataques inalámbricos: Cuando un atacante está conectado a una red wireless puede ejecutar algunos ataques, especialmente cuando intenta interceptar información que está siendo transmitida mediante esa red inalámbrica. Estas herramientas permiten analizar la red y diagnosticar su seguridad.
- Herramientas de explotación: Metasploit Framework es la clave de esta sección, entre otras herramientas que permiten explotar vulnerabilidades.
- Sniffing/Spoofing: Wireshark y Ettercap son las herramientas más recomendables. Con ellas, es posible ver el tráfico de red que podría permitir el acceso a información confidencial, entre otros ataques.
- Ingeniería inversa: Ollydbg es uno de los mejores debuggers que podrían ayudar a comprender qué acciones realiza un archivo en el sistema por medio de un proceso de ingeniería inversa.
- Forense: También hay una serie de herramientas para realizar análisis forenses sobre un sistema, es decir, se puede analizar el estado de un sistema justo en el momento que ocurrió determinado incidente; además se identifican acciones pasadas o archivos ocultos en el mismo, entre otros.
