
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:
username: root
password: QWE123qwe
url: jdbc:mysql://localhost:13306/JavaSecLab?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&allowMultiQueries=true
Avvia l'applicazione da IDEA o con Maven.
Account predefinito: admin/admin

Requisiti:
Opzione 1: avvia con l'immagine pubblicata:
docker compose -f docker-compose.image.yml up -d
Opzione 2: compila l'immagine localmente e avvia il laboratorio:
mvn clean package -DskipTests
docker compose -p javaseclab up -d
Se il database è vuoto dopo l'avvio, importa manualmente sql/JavaSecLab.sql.


Per ulteriori opzioni di distribuzione e note sulla risoluzione dei problemi, consulta la Guida alla distribuzione.
JavaSecLab è un progetto di laboratorio vulnerabile. Mantiene intenzionalmente endpoint pericolosi, dipendenze vulnerabili e configurazioni non sicure per la riproduzione e la didattica. Eseguilo solo localmente o in una rete isolata.
Precauzioni consigliate:
Gli esempi di codice sicuro in questo progetto sono a scopo didattico e dimostrativo. I sistemi di business reali di solito richiedono autenticazione, auditing, rate limiting, validazione dei dati, governance delle dipendenze, monitoraggio, alerting e difesa in profondità.
Issue e pull request sono benvenute. Buoni contributi includono:
Quando parliamo di software libero, ci riferiamo alla libertà, non al prezzo.
JavaSecLab è rilasciato sotto la Apache License 2.0. Vedi LICENSE per i dettagli.
Consulta il Registro aggiornamenti per le note di rilascio e la cronologia del progetto.
Blog dell'autore: 今天是几号
Se sei interessato alla sicurezza applicativa, allo sviluppo sicuro, SDL, DevSecOps o ai laboratori sulle vulnerabilità, unisciti pure al gruppo della community.
Se JavaSecLab ti è utile, una sponsorizzazione è apprezzata. Il supporto sarà utilizzato per mantenere l'ambiente online e migliorare continuamente il progetto.