
Laboratório abrangente de vulnerabilidades Java com código vulnerável e corrigido, cenários de ataque, notas de auditoria de source/sink e orientação de codificação segura para treinamento em segurança e avaliação de ferramentas.
JavaSecLab - Um Laboratório Abrangente de Vulnerabilidades JavaJavaSecLab é um laboratório abrangente de vulnerabilidades Java para aprendizado de segurança de aplicações, prática de auditoria de código, treinamento em desenvolvimento seguro e avaliação de ferramentas de segurança. Construído sobre Spring Boot, ele fornece código vulnerável, implementações corrigidas, cenários de ataque realistas, notas de auditoria orientadas a source e sink, orientações de remediação, explicações de codificação segura e exemplos de análise de tráfego.
O objetivo é prático: ajudar os usuários a entender não apenas como uma vulnerabilidade é explorada, mas também por que ela existe no código e como deve ser corrigida.


JavaSecLab cobre uma ampla variedade de cenários de segurança web em Java, incluindo:
Site de demonstração: http://whgojp.top/
Conta padrão: admin/admin
JavaSecLab é intencionalmente vulnerável e contém endpoints perigosos, dependências vulneráveis e configurações inseguras. Execute sua própria implantação apenas em um ambiente isolado. Não o exponha diretamente à internet pública.
O autor trabalhou em funções de segurança corporativa e vivenciou o ciclo de vida completo de vulnerabilidades. Após testes de penetração ou avaliações de segurança, as vulnerabilidades frequentemente são atribuídas às equipes de desenvolvimento por meio de sistemas como TAPD ou Jira. Na prática, duas perguntas surgem repetidamente:
JavaSecLab foi criado para conectar o comportamento da vulnerabilidade, o código vulnerável, as abordagens de remediação e o raciocínio de auditoria. Comparado a um relatório apenas textual ou a um PoC, o projeto enfatiza a compreensão das vulnerabilidades sob a perspectiva do código.
Na auditoria de código, um fluxo de trabalho comum é localizar primeiro um sink, como execução de comandos, execução de SQL, acesso a arquivos, renderização de templates, desserialização ou saída de resposta. O auditor então rastreia para trás para identificar o source correspondente, como parâmetros de requisição, cabeçalhos, cookies, arquivos enviados, dados serializados ou conteúdo do banco de dados. Muitos cenários do JavaSecLab são projetados em torno desse caminho source-to-sink, tornando-os úteis tanto para aprendizado quanto para verificação de ferramentas.
O mesmo tipo de vulnerabilidade frequentemente aparece por meio de múltiplos caminhos de acionamento em sistemas reais. Portanto, o JavaSecLab fornece múltiplos cenários para as principais classes de vulnerabilidade sempre que possível, para que os usuários possam comparar como diferentes padrões de codificação, recursos de frameworks e fluxos de negócios afetam o risco.
JavaSecLab inclui exemplos de análise de tráfego de vulnerabilidades para ajudar os aprendizes a conectar o comportamento de requisição/resposta com a execução do código. Contribuições com pacotes mais claros, melhores notas de reprodução ou exemplos adicionais de análise são bem-vindas.

Por exemplo, em um cenário de injeção de SQL baseada em tempo, o padrão de tráfego pode ser observado pela latência da resposta: o servidor responde após aproximadamente cinco segundos.

Clone o repositório:
git clone https://github.com/whgojp/JavaSecLab.git
cd JavaSecLab

Requisitos:
Crie o banco de dados e importe sql/JavaSecLab.sql.
Defina o perfil ativo como dev em src/main/resources/application.yml:
spring:
profiles:
active: dev
Atualize a conexão com o banco de dados em src/main/resources/application-dev.yml: