
Laboratorio integral de vulnerabilidades en Java con código vulnerable y corregido, escenarios de ataque, notas de auditoría de fuentes/sinks y guía de codificación segura para formación en seguridad y evaluación de herramientas.
JavaSecLab - Un laboratorio integral de vulnerabilidades de JavaJavaSecLab es un laboratorio integral de vulnerabilidades de Java para el aprendizaje de seguridad de aplicaciones, la práctica de auditoría de código, la formación en desarrollo seguro y la evaluación de herramientas de seguridad. Construido sobre Spring Boot, proporciona código vulnerable, implementaciones corregidas, escenarios de ataque realistas, notas de auditoría orientadas a fuentes y sumideros, guías de remediación, explicaciones de codificación segura y ejemplos de análisis de tráfico.
El objetivo es práctico: ayudar a los usuarios a comprender no solo cómo se explota una vulnerabilidad, sino también por qué existe en el código y cómo debería corregirse.


JavaSecLab cubre una amplia gama de escenarios de seguridad web en Java, incluidos:
Sitio de demostración: http://whgojp.top/
Cuenta predeterminada: admin/admin
JavaSecLab es intencionalmente vulnerable y contiene endpoints peligrosos, dependencias vulnerables y configuraciones inseguras. Ejecute su propio despliegue solo en un entorno aislado. No lo exponga directamente a Internet público.
El autor ha trabajado en roles de seguridad empresarial y ha experimentado el ciclo de vida completo de las vulnerabilidades. Después de las pruebas de penetración o las evaluaciones de seguridad, las vulnerabilidades a menudo se asignan a los equipos de desarrollo a través de sistemas como TAPD o Jira. En la práctica, surgen repetidamente dos preguntas:
JavaSecLab se creó para conectar el comportamiento de la vulnerabilidad, el código vulnerable, los enfoques de remediación y el pensamiento de auditoría. En comparación con un informe solo de texto o un PoC, el proyecto enfatiza la comprensión de las vulnerabilidades desde la perspectiva del código.
En la auditoría de código, un flujo de trabajo común es localizar primero un sumidero (sink), como la ejecución de comandos, la ejecución de SQL, el acceso a archivos, la representación de plantillas, la deserialización o la salida de respuesta. Luego, el auditor rastrea hacia atrás para identificar la fuente (source) correspondiente, como parámetros de solicitud, encabezados, cookies, archivos cargados, datos serializados o contenido de la base de datos. Muchos escenarios de JavaSecLab están diseñados en torno a esta ruta de fuente a sumidero, lo que los hace útiles tanto para el aprendizaje como para la verificación de herramientas.
El mismo tipo de vulnerabilidad a menudo aparece a través de múltiples rutas de activación en sistemas reales. Por lo tanto, JavaSecLab proporciona múltiples escenarios para las clases de vulnerabilidad principales cuando es posible, de modo que los usuarios puedan comparar cómo los diferentes patrones de codificación, características del framework y flujos de negocio afectan el riesgo.
JavaSecLab incluye ejemplos de análisis de tráfico de vulnerabilidades para ayudar a los estudiantes a conectar el comportamiento de solicitud/respuesta con la ejecución del código. Se aceptan contribuciones con paquetes más claros, mejores notas de reproducción o ejemplos de análisis adicionales.

Por ejemplo, en un escenario de inyección SQL basada en tiempo, el patrón de tráfico se puede observar a través de la latencia de respuesta: el servidor responde después de aproximadamente cinco segundos.

Clonar el repositorio:
git clone https://github.com/whgojp/JavaSecLab.git
cd JavaSecLab

Requisitos:
Cree la base de datos e importe sql/JavaSecLab.sql.
Establezca el perfil activo en dev en src/main/resources/application.yml:
spring:
profiles:
active: dev