Ciberseguridad en Desarrollo Web: Lo Que Muchos Ignoran
Muchos desarrolladores suelen enfocarse en la funcionalidad de sus aplicaciones sin realizar pruebas de seguridad. Sin embargo, garantizar la protección de los datos y la infraestructura es una parte fundamental del desarrollo de software.
Introducción
¿Alguna vez has sentido que una aplicación no es lo suficientemente segura? En mi tiempo libre, realizo análisis de seguridad en aplicaciones web con el objetivo de mejorar mi entorno de desarrollo y fortalecer mis conocimientos en ciberseguridad. En esta ocasión, compartiré un informe detallado sobre el análisis de seguridad realizado en el dominio https://veripagos.com.
Detalles del Análisis
- Fecha de Análisis: 14 de febrero de 2025
- Entidad Analizada: Veripagos
- Dirección IP: 86.48.1.74
- Subdominios Identificados:
- info.veripagos.com (103.169.142.0)
- mail.veripagos.com (86.48.1.74)
- v1.veripagos.com (86.48.1.74)
Registros DNS y MX
Ejecutando veripagos.com
, obtuvimos la siguiente respuesta:
Servidor: SCZ-200-73-96-00167.tigo.bo
Address: 200.73.96.167
Respuesta no autoritativa:
veripagos.com MX preference = 10, mail exchanger = mail.veripagos.com
Servidor Web y Escaneo de Puertos
Ejecutando nmap veripagos.com
:
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
80/tcp open http
443/tcp open https
Ejecutando nmap -A veripagos.com
:
443/tcp open ssl/http nginx
Sistema operativo detectado: Variantes de Linux (Kernel 2.6.X - 5.X)
Certificado SSL
El sitio usa un certificado SSL emitido por Let's Encrypt:
- Válido desde: 2024-12-28T16:31:40
- Expira en: 2025-03-28T16:31:39
- Dominios cubiertos:
- veripagos.com
- www.veripagos.com
- Clave Pública: RSA 2048 bits
- Algoritmo de Firma: sha256WithRSAEncryption
Tecnologías Detectadas
Para identificar las tecnologías utilizadas en la aplicación, empleé la herramienta WhatWeb, obteniendo los siguientes resultados:
- Frameworks: Laravel, HTML5, Open Graph Protocol
- Encabezados de Seguridad: Strict-Transport-Security (HSTS habilitado)
- Cookies Detectadas: XSRF-TOKEN, devveripagos_session
- Cabeceras de Compatibilidad: X-UA-Compatible: IE=edge
- Campos Sensibles Detectados:
password
(posible campo de autenticación en/login
)
Hallazgos Críticos
Deficiencias en los Encabezados de Seguridad
Configuración | Estado |
X-Frame-Options | Falta (Vulnerable a Clickjacking) |
X-Content-Type-Options | Falta (Riesgo de detección errónea de MIME type) |
Content-Security-Policy | Falta (Posible ejecución de scripts maliciosos) |
Referrer-Policy | Falta (Riesgo de filtración de URLs) |
Permissions-Policy | Falta (Acceso no restringido a APIs sensibles) |
Si bien los archivos y configuraciones analizadas son seguras en cuanto a acceso directo, se recomienda mejorar la configuración de seguridad implementando las cabeceras faltantes para mitigar riesgos relacionados con Clickjacking, filtración de datos y ejecución de scripts no autorizados.
Vulnerabilidades Detectadas con Nikto
Utilizando la herramienta Nikto. Se identificaron varias vulnerabilidades relacionadas con encabezados de seguridad y configuraciones de cookies que pueden comprometer la seguridad de la aplicación. Se recomienda la implementación de medidas correctivas para mitigar estos riesgos.
Ejecutando veripagos.com
, encontramos:
https://veripagos.com -C "XSRF-TOKEN=eyJpdiI6IlJSb1dNRnFoK3AxRG8yNEFqU0FLYkE9PSIsInZhbHVlIjoidTJtMmZ2SE1NTnJ4VVpOcG1hem9HWG9kV3pDbnlFUWhsK2ZjSjlmOUhoelJXak9rdTFRTzRRU2lEZFpVRjJkWWpiNXRDVFlyQVgycU5RRUhVNW01dzJuQmRyY2hrUlRyZi9kTEx5UTFrTWx5MkVDQ2xqbTl0TTZsVGpVMTRYSmoiLCJtYWMiOiIwNWE0YTgzOWJmNmY1NGZlYjE5ZmE4MTZlYjk5OTY0MzgyZjU2Mzc1ZmQ1NmFiYTIwM2Y5NGJjMWRlMWUxYmU3IiwidGFnIjoiIn0=;veripagos_session=eyJpdiI6InFTc2VKTmp6Y3JNYUNDRVNGZ3loc1E9PSIsInZhbHVlIjoiVGY0ZkJ3L0NPdEEzUWY1bEgyK1NMNzlleDZVTG5raUVsbzVwbU5qaWhTczg5QVRlVzloTmVKK0pHd0U5K21UVDRMUXkvbVVvdktSaWdGa1dvR052VktPMEpGaHdVVDNabzlKRVRUUzArRHNlZVIxWCtuTUxTa2lTemdsUDdaQUciLCJtYWMiOiI2OWY2YTdlNmM4OTAyMGIyN2QyMTA5ZWFlNTM1YjllYjkwMGIwZDYwNmM0ZTVhOGRlNThjNDg2YWFkM2Q1YzcyIiwidGFnIjoiIn0%3D" -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
ID | Descripción | Impacto | Solución Recomendada |
001 | Falta de encabezado X-Frame-Options (Clickjacking) | Alto | Agregar X-Frame-Options: SAMEORIGIN en el servidor o aplicación |
002 | Falta de encabezado X-Content-Type-Options (MIME-Sniffing) | Medio | Agregar X-Content-Type-Options: nosniff en el servidor o aplicación |
003 | Cookie XSRF-TOKEN sin flag Secure | Medio | Configurar las cookies en Laravel para que usen Secure cuando se usa HTTPS |
004 | Cookie XSRF-TOKEN sin flag HttpOnly | Alto | Configurar HttpOnly en Laravel para evitar acceso desde JavaScript |
005 | Cookie devveripagos_session sin flag Secure | Medio | Asegurar que todas las cookies sensibles usen el flag Secure |
006 | Redirección automática a /login | Bajo | Verificar si /robots.txt o sitemap.xml están exponiendo el endpoint |
Medio | Asegurar que todas las cookies sensibles usen Secure |
Pruebas Realizadas
Prueba de Formulario y Manejo de Errores
Para mitigar los riesgos de un ataque CSRF, se deben implementar las siguientes medidas de seguridad:
- Usar tokens CSRF: Generar un token único en cada formulario y verificarlo en el backend.
- Configurar cookies con SameSite: Establecer las cookies como SameSite=Strict o SameSite=Lax para evitar su envío en solicitudes de terceros.
- Evitar solicitudes POST sin validación: Requerir autenticación adicional, como una contraseña o autenticación de dos factores.
- Implementar Content Security Policy (CSP): Restringir el origen de los scripts y formularios para evitar ejecuciones no autorizadas.
Ejemplo de Código Vulnerable
Este es un ejemplo de un formulario que podría ser utilizado en un ataque CSRF:
Para evaluar la posible vulnerabilidad de Cross-Site Request Forgery (CSRF), realicé una prueba en la aplicación, con los siguientes resultados:
- La ruta
/dashboard
no permite solicitudes POST, lo que ayuda a mitigar ataques CSRF. - Sin embargo, se detectó un error técnico expuesto:
MethodNotAllowedHttpException
. - Recomendación: Mejorar el manejo de errores para evitar la exposición de detalles del servidor
Vulnerabilidad | Impacto | Severidad |
Falta de Manejo de Errores Correcto | Puede revelar información sobre la configuración del servidor y el framework | Medio |
Protección CSRF Efectiva | La ruta no permite POST, lo que mitiga ataques CSRF | Bajo |
Falta de Redirección al Login | No redirige al login cuando el token es inválido | Medio |
Prueba de XSS Y SQL
1. Ejecución de XSS (Cross-Site Scripting)
Se realizaron pruebas de inyección de scripts en formularios y parámetros GET, obteniendo ejecución de código JavaScript en la sesión de usuario.
Evaluación de XSS en la Consola del Navegador
Se ha identificado una vulnerabilidad de Cross-Site Scripting (XSS) en la consola del navegador en la aplicación basada en Laravel. La inyección de código malicioso en elementos del DOM permite la ejecución arbitraria de scripts, lo que puede comprometer la seguridad del sistema y exponer datos sensibles de los usuarios.
Impacto de las Vulnerabilidades
Vulnerabilidad | Impacto | Severidad |
XSS en mensajes de error | Permite la ejecución arbitraria de scripts y el robo de información | Crítico |
Modificación del formulario de login | Permite redirigir credenciales de usuario a un sitio externo | Crítico |
Cambio en la visibilidad de contraseñas | Exposición de credenciales en el cliente | Alto |
Extracción del token CSRF | Puede permitir ataques CSRF si se combina con otras vulnerabilidades | Alto |
Modificación del botón de envío | Puede redirigir usuarios a sitios maliciosos o ejecutar código arbitrario | Crítico |
2. Ataques de Inyección SQL
Se probaron ataques SQL Injection en campos de inicio de sesión , no se encontró nada critico .
3. Robo de Sesiones
Se interceptaron cookies de sesión sin HttpOnly
y Secure
, permitiendo el secuestro de sesiones activas.
Prueba | Resultado |
Envío de cookie falsa | Éxito (código 200) |
Acceso sin autenticación | Permitido |
Respuesta guardada | test.html |
Recomendaciones de Seguridad
Medida | Descripción |
Establecer HttpOnly en las cookies | Evita el acceso a las cookies desde JavaScript para prevenir robo vía XSS. |
Usar Secure y SameSite=Strict | Asegura que las cookies solo se envíen a través de HTTPS y restringe su uso entre sitios. |
Implementar expiración y rotación de cookies | Reduce la ventana de explotación en caso de robo de cookies. |
Autenticación basada en tokens | Implementar JWT con expiración en lugar de sesiones tradicionales. |
4. Prueba de Concepto (PoC) - WebShell en Imagen
Se realizó una prueba de concepto ocultando una WebShell en una imagen para obtener acceso remoto al servidor. Para ello, se desarrolló un script que manipula los píxeles de la imagen y permite ejecutar comandos de forma encubierta.
"Estamos dentro"
Video POC
Github https://github.com/Pericena/veripago
Herramientas Utilizadas
- → Identificación de tecnologías.
- → Detección de vulnerabilidades en servidores web.
- → Análisis de tráfico y pruebas de seguridad.
- → Escaneo de puertos y detección de servicios.
- → Identificación de vulnerabilidades web.
- → Recolección de información DNS.
- → Análisis de registros del dominio.
Conclusión
La seguridad en las aplicaciones web es un pilar fundamental que no debe subestimarse. Este análisis ha puesto en evidencia varias deficiencias en los encabezados de seguridad y la configuración de cookies, las cuales pueden corregirse con ajustes sencillos tanto en el servidor como en el código de la aplicación.
Realizar auditorías de seguridad de manera periódica es esencial para detectar y mitigar vulnerabilidades antes de que sean explotadas, garantizando así el cumplimiento de los estándares de protección de datos y la integridad del sistema.
Espero que este análisis ayude a reforzar la importancia de la seguridad en el desarrollo web y sirva como guía para implementar mejores prácticas en sus aplicaciones.
📌 ¡Nos leemos en el próximo artículo!
Comentarios
Publicar un comentario
Comparte tu opinión y únete a la conversación sobre seguridad informática en nuestro blog.