Lista de comprobación de pruebas de penetración de aplicaciones web: Su guía detallada

El coste anual de los daños causados por la ciberdelincuencia crece cada año. En 2023, Estados Unidos experimentó un aumento del 22% en las pérdidas por ciberdelincuencia, alcanzando la asombrosa cifra de 12.500 millones de dólares. Los principales responsables fueron los correos electrónicos comprometidos, las estafas de inversión, el ransomware y los fraudes de soporte técnico. A escala mundial, se prevé que la ciberdelincuencia alcance los 23,84 billones de dólares en 2027.

Aunque prevenir todos los ataques es prácticamente imposible, reforzar la seguridad es absolutamente factible. ¿Cómo? Las pruebas de penetración para aplicaciones web, a menudo denominadas «pruebas de penetración de aplicaciones web», son una medida proactiva para encontrar puntos débiles en su aplicación antes de que los hackers entren en ella.

Qué hacer y qué no hacer en las pruebas de penetración de QAwerk: Nuestra lista de comprobación de pruebas de penetración web se basa en la experiencia práctica. También proporcionamos hacks y advertencias para este proceso. Con más de nueve años en ciberseguridad, QAwerk ha realizado pruebas de penetración para más de 1.000 aplicaciones con una puntuación de éxito del 98%.

Esta lista de comprobación es una guía detallada sobre cómo examinar a fondo las aplicaciones web en busca de vulnerabilidades. Cubriremos:

Flujo de trabajo de las pruebas de penetración de aplicaciones web

Las pruebas de penetración no son una ciencia exacta, y sería poco práctico definir una lista exhaustiva de todas las vulnerabilidades potenciales. Para llevar a cabo pruebas de penetración de aplicaciones web de forma exhaustiva y coherente, las empresas suelen basarse en listas de comprobación. Estas listas de comprobación ayudan a garantizar una cobertura de seguridad completa. La siguiente lista de comprobación puede utilizarse internamente o como plantilla de RFP (solicitud de propuesta) en caso de subcontratación. Veamos los pasos clave de las pruebas de penetración de aplicaciones web.

Recopilación de información

El primer paso en un pentest de aplicaciones web es la recopilación de información, una fase tan crucial como sentar las bases de un plan estratégico. Implica recopilar meticulosamente datos sobre el sistema objetivo, comprender su estructura, tecnología, flujo de trabajo y lógica empresarial para identificar posibles vectores de ataque y amenazas a la seguridad en la solución. Esta fase prepara el terreno para todos los esfuerzos de prueba posteriores, garantizando un enfoque centrado e informado para la identificación de vulnerabilidades.

Reconocimiento pasivo:

  • Identificar la dirección IP y el ASN (número de sistema autónomo).
  • Identificar subdominios y dominios alternativos utilizando registros DNS y motores de búsqueda de terceros con la ayuda de herramientas de enumeración.
  • Utilizar la metodología OSINT para analizar la información disponible públicamente (como redes sociales, foros, sistemas de almacenamiento de código y colecciones de API compartidas) para obtener información sobre el objetivo.

Reconocimiento activo:

  • Utilizar herramientas automáticas y semiautomáticas para descubrir archivos sensibles, parámetros y tecnología web aplicada.
  • Identificar la lógica de negocio de la aplicación
  • Mapear la superficie de ataque de la aplicación (URLs, parámetros, APIs)
Qué hacer:
  • Recopilar información sin interactuar directamente con el sistema objetivo
  • Utilizar diferentes herramientas de pruebas de seguridad como Burp Suite, OWASP ZAP o Nikto para escanear y analizar la superficie de ataque
  • Mantenga un repositorio organizado de la información recopilada para facilitar su consulta y análisis
No hacer:
  • No pase por alto los archivos robots.txt, sitemap.xml u otros archivos de fácil acceso que puedan revelar información confidencial
  • No pasar por alto la importancia de los datos no técnicos, como las políticas de la empresa y la información de los empleados
  • No ignores los límites legales y éticos de la recopilación de información
  • No utilices herramientas o técnicas intrusivas que puedan activar alarmas o causar interrupciones sin consentimiento previo

«Recopilar información es como conocer al adversario antes de un gran partido. Se trata de detectar las zonas débiles, comprender el terreno de juego y asegurarnos de que vamos un paso por delante. Cada uno de estos pasos nos ayuda a ver lo que podría ver un posible atacante, pero utilizándolo para reforzar nuestra defensa.»

Denys
dice Denys,

Ingeniero de control de calidad de QAwerk

Pruebas de gestión de la configuración y la implantación

La desconfiguración de la seguridad es una de las principales causas de las filtraciones de datos, y ocupa el quinto lugar en la lista OWASP Top 10 de vulnerabilidades web. Las pruebas de configuración y despliegue garantizan que los ajustes y las prácticas del sistema no dejen vulnerable su aplicación.

A principios de 2024, Microsoft reveló una brecha en la que los hackers se aprovecharon de una cuenta de inquilino de prueba no de producción heredada sin autenticación multifactor (MFA) para acceder a correos electrónicos de personal de alto nivel y equipos de ciberseguridad. Este incidente es un gran recordatorio de que las cuentas de prueba y heredadas deben retirarse cuando ya no se utilicen o deben mantenerse con los mismos estándares de seguridad que las cuentas de producción.

En QAwerk, hacemos lo siguiente:

  • Comprobar las credenciales predeterminadas en las interfaces de inicio de sesión
  • Validar las configuraciones de seguridad en el servidor web, el servidor de aplicaciones y la base de datos.
  • Identificar servicios, directorios y archivos de riesgo que puedan exponer información sensible
  • Evaluar las comunicaciones de red y sus configuraciones en busca de vulnerabilidades (como cifrados débiles y problemas de certificados SSL)
  • Verificar componentes y bibliotecas de terceros frente a problemas de seguridad bien conocidos
Qué hacer:
  • Compruebe la enumeración de directorios y archivos, revise la documentación y examine la infraestructura y las interfaces de inicio de sesión de las aplicaciones
  • Examine los metadatos proporcionados por el servidor durante la interacción para descubrir posibles vulnerabilidades relacionadas con la versión
  • Utilice herramientas como Nmap (con scripts específicos) y Nessus para identificar y evaluar con precisión los puertos asociados a los servicios SSL/TLS
No hacer:
  • No descuide la identificación y evaluación de restos de documentación antigua, archivos de copia de seguridad o referencias obsoletas
  • No olvide examinar las respuestas del método HTTP OPTIONS utilizando herramientas como Burp Suite o ZAP para descubrir posibles errores de configuración, así como puntos finales inesperados o no seguros

Pruebas de autenticación

Las pruebas de autenticación son una parte importante de las pruebas de aplicaciones web. Garantiza que los usuarios son quienes dicen ser. Las áreas clave incluyen procesos de inicio de sesión, políticas de contraseñas, gestión de sesiones y MFA. Las pruebas de autenticación ayudan a impedir que los piratas informáticos se apoderen de las cuentas. Estos son los pasos principales:

  • Compruebe si las políticas de contraseñas son débiles y evalúe los mecanismos de almacenamiento de contraseñas.
  • Intentar ataques de fuerza bruta y de relleno de credenciales.
  • Comprobar la implementación de MFA
  • Validar la gestión de sesiones e identificar vulnerabilidades de fijación o secuestro de sesiones
  • Investigar la protección contra la fuerza bruta y los mecanismos de bloqueo de cuentas
Qué hacer:
  • Compruebe si es posible «reutilizar» la sesión después de cerrar la sesión
  • Compruebe si alguna información sensible permanece almacenada en la caché del navegador después de cerrar la sesión
  • Revise la complejidad y singularidad de las preguntas de seguridad
  • Investigar posibles puntos de inyección SQL en el proceso de autenticación
  • Utilizar fuzzing para forzar las credenciales
No hacer:
  • No dé por sentado que la AMF es infranqueable Realice pruebas para detectar posibles métodos de elusión, como la explotación de métodos de autenticación alternativos o fallos en la implementación de la AMF
  • No realice ataques de fuerza bruta sin el permiso explícito de la organización, ya que pueden provocar el bloqueo de la cuenta y la interrupción del servicio
  • No olvide comprobar si las sesiones se invalidan correctamente tras el cierre de sesión o la inactividad

«Las pruebas de autenticación son un delicado equilibrio entre seguridad y accesibilidad. En QAwerk, nos centramos en garantizar que, mientras el sistema sigue siendo impenetrable para los usuarios no autorizados, la experiencia del usuario legítimo sigue siendo fluida e ininterrumpida.»

Yaroslav
dice Yaroslav,

Ingeniero de automatización de QA de QAwerk

Pruebas de autorización

Las pruebas de autorización verifican que los usuarios autenticados tienen el nivel correcto de acceso a los recursos en función de sus funciones. Mientras que la autenticación demuestra quién eres, la autorización decide qué puedes hacer en la aplicación. Para un proceso de pruebas de autorización completo, asegúrese de:

  • Verificar el control de acceso basado en roles (RBAC) y comprobar la escalada de privilegios
  • Comprobar las vulnerabilidades de escalada de privilegios horizontal y vertical
  • Comprobar la correcta segregación de funciones y los principios de privilegio mínimo
  • Intentar el acceso no autorizado a recursos sensibles y funciones autorizadas
Qué hacer:
  • Compruebe que los mecanismos de registro de la aplicación son sólidos y pueden proporcionar información sobre posibles infracciones de autorización
  • Pruebe el cruce de rutas mediante la creación de rutas que intenten acceder a archivos o directorios fuera del ámbito previsto
  • Examine las URL en busca de parámetros que puedan ser manipulados
  • Analice las cabeceras HTTP y todos los formularios en busca de posibles puntos de entrada
  • Intente ejecutar solicitudes autorizadas en diferentes roles bajo un usuario no autorizado o con pocos privilegios
No hacer:
  • No asuma que los sistemas internos son menos propensos a problemas de autorización
  • No dé por sentado que sólo porque una aplicación tenga RBAC u otros controles de acceso, éstos están correctamente configurados
  • No olvide probar los controles de autorización desde la perspectiva de las cuentas con pocos privilegios
  • No olvide probar las rutas de acceso indirectas, como las API, las cargas de archivos o las partes menos seguras de la aplicación

Pruebas de gestión de sesiones

Las pruebas de gestión de sesiones consisten en asegurarse de que las sesiones de usuario en una aplicación web son seguras de principio a fin. El mecanismo de gestión de sesiones es responsable de crear y gestionar identificadores de sesión únicos, que rastrean el estado del usuario y mantienen una conexión consistente a lo largo de su interacción con la aplicación web. A continuación se explica cómo realizar pruebas de gestión de sesiones:

  • Evaluar la seguridad de las cookies de sesión (HttpOnly, Secure flags)
  • Comprobar las vulnerabilidades de fijación de sesión, secuestro de sesión y repetición de sesión
  • Garantizar la correcta caducidad e invalidación de la sesión tras el cierre de sesión o la inactividad
  • Verificar la unicidad y aleatoriedad de los identificadores de sesión
Qué hacer:
  • Compruebe si los identificadores de sesión se filtran o se transmiten a través de canales de comunicación inseguros o métodos GET (las solicitudes GET pueden exponer tokens en las URL)
  • Recopile un número suficiente de muestras de sesión para analizar el algoritmo de sesión frente a la aleatorización, los ataques de falsificación y el secuestro
  • Experimente modificando los atributos de la sesión (intente cambiar el dominio, la ruta o la fecha de caducidad) para ver cómo responde la aplicación
  • Compruebe que la sesión no contiene información personal identificable (IPI) o datos sensibles
No hacer:
  • No olvide probar los mecanismos de tiempo de espera de la sesión en los casos en los que se implemente la funcionalidad «recuérdame»
  • No olvide probar la gestión de sesiones en varios dispositivos y navegadores para garantizar un comportamiento y una seguridad coherentes
  • No olvide comprobar si la sesión se borra completamente del navegador después de cerrar la sesión

Pruebas de validación de datos

Las pruebas de validación de datos detectan puntos débiles en la forma en que la aplicación maneja los datos. En esta fase se realizan comprobaciones exhaustivas para detectar fallos de seguridad comunes, incluidos varios tipos de inyecciones de código y errores de desbordamiento. El objetivo es asegurarse de que la aplicación se mantiene inquebrantable frente a los ataques de manipulación y alteración de datos. He aquí una lista de comprobación para la validación de datos en aplicaciones web:

  • Revise el código JavaScript de la aplicación en busca de errores de codificación comunes
  • Pruebe los parámetros de la aplicación contra inyecciones SQL
  • Examine el código HTML para detectar posibles vulnerabilidades de secuencias de comandos en sitios cruzados (XSS), como XSS reflejado, XSS almacenado o XSS basado en DOM
  • Compruebe si existen vulnerabilidades de inyección WebDAV para acceder a información confidencial sobre usuarios y hosts
  • Comprobación de vulnerabilidades de inyección IMAP/SMTP en los formularios web de correo electrónico para obtener acceso no autorizado al servidor de correo backend
  • Prueba de vulnerabilidades de inyección XPATH para acceder a información confidencial almacenada en documentos XML
  • Prueba de vulnerabilidades de inyección XML para conocer la estructura XML y explotar potencialmente las vulnerabilidades
  • Prueba de vulnerabilidades de inyección de código mediante la inyección de código malicioso en los campos de entrada
  • Pruebas de inyecciones de plantillas que podrían conducir a la ejecución de código en el backend
  • Pruebas de vulnerabilidades de división y contrabando HTTP que podrían manipular cookies o redireccionamientos HTTP
Qué hacer:
  • Probar todos los puntos de entrada para SQLi: cada campo de entrada del usuario, encabezado HTTP y parámetro URL
  • Analizar las cabeceras de caché y trabajar en ataques de envenenamiento de caché y contrabando HTTP
  • Investigar posibles puntos de inyección en la aplicación y utilizar métodos de fuzzing para descubrir inyecciones :
    • Inyecciones SQL
    • XSS
    • XPath
    • XEE
    • Inyecciones de plantillas
  • Intentar eludir los mecanismos de defensa inyectando cabeceras HTTP especiales
No hacer:
  • No subestime la creatividad de los atacantes para explotar los fallos de validación de datos
  • No pase por alto los puntos de inyección menos obvios o las áreas de procesamiento de datos
  • No deje pasar ninguna entrada de usuario sin filtrarla y realizar comprobaciones de seguridad

«He visto demasiadas aplicaciones con una validación de entrada débil que podrían haber sido pirateadas fácilmente. La validación de datos es la base de la seguridad de las aplicaciones web. Una validación de entrada inadecuada puede dar lugar a ataques como XSS, inyección SQL y desbordamientos de búfer, por lo que no debe tomarse a la ligera.»

Oleh
dice Oleh,

Ingeniero de control de calidad de QAwerk

Pruebas de denegación de servicio

Las pruebas de denegación de servicio (denial of service, DoS) evalúan la resistencia de una aplicación a ataques cuyo objetivo es cerrarla. Estos ataques pueden saturar la aplicación con peticiones excesivas, explotar vulnerabilidades para bloquearla o consumir todos sus recursos hasta el punto de que los usuarios reales no puedan utilizarla correctamente. En 2023, los sitios web de venta al por menor, envíos y relaciones públicas experimentaron un aumento de los ataques de denegación de servicio distribuidos (DDoS) en torno a la temporada de compras navideñas.

El objetivo de las pruebas de denegación de servicio es identificar y mitigar los puntos vulnerables que podrían provocar una interrupción del servicio, garantizando que la aplicación sea estable y funcional en condiciones extremas. Así es como se hace:

  • Decida qué sistemas, servicios y recursos atacará y establezca límites para la tensión a la que los someterá
  • Simule varios tipos de ataques DoS, como ataques volumétricos (inundación de tráfico) y ataques a la capa de aplicación (Slowloris)
  • Configure alertas para detectar cuándo el sistema alcanza umbrales críticos o deja de responder, lo que permite una respuesta rápida para evitar daños duraderos
  • Documente los resultados de las pruebas DoS, incluidos los tipos de ataques utilizados, su impacto en el sistema y cualquier problema detectado
Qué hacer:
  • Obtenga el permiso explícito y por escrito de las partes interesadas antes de realizar las pruebas DoS
  • Coordínese con los administradores de red y los equipos de seguridad para minimizar las interrupciones durante las pruebas
  • Utilice herramientas como HOIC y hping3 para generar diferentes tipos de tráfico y evaluar la respuesta del sistema
  • Utilizar herramientas como Burp Suite, ZAP y JMeter (Apache) para definir los formularios y parámetros de la aplicación y probarlos con una gran cantidad de repeticiones para crear un ataque DoS a la aplicación
No hacer:
  • No realice pruebas DoS en sistemas de producción en vivo a menos que sea absolutamente necesario y sólo después de una planificación exhaustiva y una evaluación de riesgos
  • No fuerce el sistema más allá de los límites predefinidos, ya que puede causar daños irreparables
  • No olvide considerar las implicaciones legales y de cumplimiento de las pruebas DoS, especialmente si las pruebas implican servicios externos o de terceros

Experiencia de QAwerk en pruebas de penetración de aplicaciones web

En QAwerk, abordamos las pruebas de penetración con la mentalidad de un hacker, identificando vulnerabilidades sutiles pero cruciales en su software e infraestructura de TI. Nuestros expertos en pruebas de penetración utilizan herramientas automatizadas y técnicas manuales para descubrir vulnerabilidades ocultas.

Simulamos ataques reales, identificando puntos débiles en la autenticación, autorización, validación de entradas, gestión de sesiones y mucho más. Nuestro objetivo es proporcionar una evaluación completa de la seguridad de su aplicación web.

Nuestros servicios clave:

  • Exploración de vulnerabilidades: Nos basamos en múltiples herramientas de pentesting comerciales y de código abierto para automatizar las tareas rutinarias y obtener información precisa sobre la seguridad de su aplicación web.
  • Pruebas de penetración: Nuestros expertos simulan ciberataques comunes para evaluar el impacto de las vulnerabilidades en el mundo real y proporcionar asesoramiento práctico.
  • Pruebas de carga: Las pruebas de carga pueden ayudarle a prepararse para ataques DDoS. Se trata de una prueba de rendimiento que muestra problemas como la lentitud o los bloqueos cuando muchas personas utilizan su aplicación. Esto le permite encontrar el punto de ruptura y ver cómo su sistema maneja el tráfico pesado. Vea cómo ayudamos a un desarrollador de juegos indie a identificar su punto de ruptura y mejorar significativamente el rendimiento del servidor.
  • Pruebas de conformidad: Le ayudaremos a garantizar que su aplicación web se adhiere a los estándares y regulaciones de la industria, como PCI DSS, HIPAA y GDPR.
  • Auditorías de seguridad del código: Llevamos a cabo auditorías de seguridad exhaustivas para identificar problemas antes de que se conviertan en un gran dolor de cabeza. Nuestra auditoría de seguridad del código está bien estructurada y se divide en revisión de la arquitectura, revisión de la base de datos, calidad del código, cobertura de las pruebas y revisión de la seguridad.

Nuestros servicios se ajustan a las principales normativas de ciberseguridad, garantizando el cumplimiento y mejorando su postura general de seguridad. Póngase en contacto con nosotros hoy mismo para una consulta gratuita y descubra cómo nuestro servicio de pruebas de penetración de aplicaciones web puede beneficiar a su empresa.

Recapitulación final

A medida que las aplicaciones web se vuelven más complejas y críticas para las empresas, los riesgos de brechas de seguridad aumentan rápidamente. Invertir en pruebas de penetración periódicas ayuda a las empresas a detectar y solucionar problemas de seguridad, protegiendo sus valiosos activos y manteniendo contentos a sus clientes. Nuestra lista de comprobación de pruebas de penetración es un paso valioso para fortalecer sus aplicaciones contra tales amenazas.

En QAwerk, ayudamos a las empresas a adelantarse a las amenazas de ciberseguridad. No espere a que se produzca una violación de datos. Si tiene alguna pregunta o necesita más orientación, estamos aquí para ayudarle. Hablemos de cómo mejorar la seguridad de su aplicación web.