
Laboratorio completo sulle vulnerabilità Java con codice vulnerabile e corretto, scenari di attacco, note di audit source/sink e linee guida per la codifica sicura per la formazione sulla sicurezza e la valutazione degli strumenti.
JavaSecLab - Un laboratorio completo sulle vulnerabilità JavaJavaSecLab è un laboratorio completo sulle vulnerabilità Java per l'apprendimento della sicurezza applicativa, la pratica del code audit, la formazione allo sviluppo sicuro e la valutazione degli strumenti di sicurezza. Basato su Spring Boot, fornisce codice vulnerabile, implementazioni corrette, scenari di attacco realistici, note orientate all'audit su source e sink, indicazioni di remediation, spiegazioni di secure coding ed esempi di analisi del traffico.
L'obiettivo è pratico: aiutare gli utenti a capire non solo come una vulnerabilità viene sfruttata, ma anche perché esiste nel codice e come dovrebbe essere corretta.


JavaSecLab copre un'ampia gamma di scenari di sicurezza web Java, tra cui:
Sito demo: http://whgojp.top/
Account predefinito: admin/admin
JavaSecLab è intenzionalmente vulnerabile e contiene endpoint pericolosi, dipendenze vulnerabili e configurazioni non sicure. Esegui la tua distribuzione solo in un ambiente isolato. Non esporlo direttamente a Internet pubblico.
L'autore ha lavorato in ruoli di sicurezza aziendale e ha vissuto l'intero ciclo di vita delle vulnerabilità. Dopo penetration test o valutazioni di sicurezza, le vulnerabilità vengono spesso assegnate ai team di sviluppo tramite sistemi come TAPD o Jira. In pratica, emergono ripetutamente due domande:
JavaSecLab è stato creato per collegare comportamento della vulnerabilità, codice vulnerabile, approcci di remediation e pensiero da audit. Rispetto a un report solo testuale o a un PoC, il progetto enfatizza la comprensione delle vulnerabilità dal punto di vista del codice.
Nel code auditing, un flusso di lavoro comune consiste nel localizzare prima un sink, come esecuzione di comandi, esecuzione SQL, accesso a file, rendering di template, deserializzazione o output di risposta. L'auditor risale poi a ritroso per identificare la corrispondente source, come parametri di richiesta, header, cookie, file caricati, dati serializzati o contenuto del database. Molti scenari di JavaSecLab sono progettati attorno a questo percorso source-to-sink, rendendoli utili sia per l'apprendimento sia per la verifica degli strumenti.
Lo stesso tipo di vulnerabilità spesso si manifesta attraverso molteplici percorsi di attivazione nei sistemi reali. JavaSecLab fornisce quindi, ove possibile, molteplici scenari per le classi di vulnerabilità principali, così che gli utenti possano confrontare come diversi pattern di codifica, funzionalità dei framework e flussi di business influenzino il rischio.
JavaSecLab include esempi di analisi del traffico delle vulnerabilità per aiutare gli studenti a collegare il comportamento request/response con l'esecuzione del codice. Sono benvenuti contributi con pacchetti più chiari, note di riproduzione migliori o ulteriori esempi di analisi.

Ad esempio, in uno scenario di SQL injection time-based, il pattern di traffico può essere osservato tramite la latenza della risposta: il server risponde dopo circa cinque secondi.

Clona il repository:
git clone https://github.com/whgojp/JavaSecLab.git
cd JavaSecLab

Requisiti:
Crea il database e importa sql/JavaSecLab.sql.
Imposta il profilo attivo su dev in src/main/resources/application.yml:
spring:
profiles:
active: dev
Aggiorna la connessione al database in src/main/resources/application-dev.yml: