
Applicazione client-server volutamente vulnerabile per l'apprendimento del penetration testing di thick client non HTTP. Include sfide per SQL injection, RCE, attacchi XML, buffer over-read e vulnerabilità di controllo degli accessi.
L'applicazione client-server vulnerabile (VuCSA) è stata creata per apprendere/presentare come eseguire test di penetrazione di applicazioni client-server non HTTP. È scritta in Java (con interfaccia grafica JavaFX).
Attualmente, l'applicazione vulnerabile contiene le seguenti sfide:
Se vuoi sapere come risolvere queste sfide, dai un'occhiata al sito web di PETEP, che descrive come utilizzare lo strumento open-source PETEP per sfruttarle.
Suggerimento 1: Prima di iniziare a fare hacking, non dimenticare di controllare la struttura dei dati dei messaggi qui sotto. Quando modifichi il traffico di rete, dovrai probabilmente considerare la struttura, specialmente i byte della lunghezza del payload.
Suggerimento 2: La maggior parte delle sfide può essere sfruttata attraverso la modifica del traffico di rete. Pertanto, si consiglia di utilizzare un proxy TCP o hook di processo per i test.
Suggerimento 3: Alcune sfide hanno convalide e restrizioni di input, cosa comune nei client spessi (thick clients), ma ciò non significa che il server utilizzi la stessa convalida.
In questa sfida, il tuo obiettivo è manipolare il traffico di rete tra il client e il server in modo da causare un buffer over-read.
La sfida di esecuzione di comandi rappresenta una vulnerabilità molto semplice di esecuzione di comandi. L'obiettivo è eseguire un comando malevolo sul server.
La sfida di SQL Injection contiene un input di ricerca vulnerabile a SQL injection, ma come noterai presto, l'input non ti permette di inserire i caratteri necessari.
La sfida di enumerazione si basa su un modulo di login simulato non protetto dall'enumerazione. Riuscirai a trovare tutti e 5 gli utenti e indovinare le loro password?
In questa sfida, puoi trovare multiple vulnerabilità XML:
La sfida di controllo di accesso orizzontale rappresenta un lettore di documenti che permette all'utente di vedere i propri documenti e leggerne il contenuto. L'obiettivo è trovare 5 documenti di altri utenti.
La sfida di controllo di accesso verticale si basa su un pannello utente simulato, che mostra informazioni di base dell'utente. L'obiettivo è trovare una funzionalità di amministrazione nascosta e verificare se è possibile utilizzarla come utente Ospite.
La vulnerabilità di deserializzazione RCE utilizza la deserializzazione/serializzazione Java per trasmettere dati attraverso la rete. L'applicazione contiene due percorsi che puoi utilizzare per ottenere l'esecuzione di codice remoto attraverso la vulnerabile deserializzazione Java.
Puoi trovare entrambi i percorsi esaminando il file JAR del server o guardando il codice sorgente.
L'obiettivo è creare exploit per entrambi i percorsi ed eseguire un comando malevolo sul server.
Suggerimento: Puoi usare il JAR del server come libreria per semplificare la creazione dell'exploit.
Devi avere Java 11 o una versione più recente per eseguire VuCSA.
Nota: Per Mac con architettura ARM64 (chip M1, M2), usa la build speciale per Java 17.
Per eseguire il server e il client vulnerabili, puoi usare una delle release su GitHub o eseguire gradle assemble, che crea pacchetti di distribuzione (sia per Windows che per Unix). Questi pacchetti contengono script sh/bat che avviano il server e il client utilizzando JVM:
# Linux / Mac
chmod +x client.sh server.sh
./client.sh
./server.sh
# Windows
client.bat
server.bat
Nota: Questi script di avvio contengono variabili utili, incluso il percorso dell'eseguibile Java. Potrebbe essere necessario modificarlo se non lo hai in PATH o se usi più versioni Java.
La configurazione del server viene creata automaticamente se non esiste e successivamente caricata da server.json nella stessa directory in cui è in esecuzione il server:
{
"network": {
"serverHost": "0.0.0.0",
"serverPort": 8765
}
}
La configurazione del client può essere specificata nell'applicazione in esecuzione.
Il progetto è suddiviso in tre moduli:
I messaggi trasmessi tra server e client hanno il seguente formato semplice:
[type][target][length][payload]
32b 32b 32b ???
Queste quattro parti hanno il seguente significato:
Per inviare payload personalizzati, potresti dover aggiornare la lunghezza del payload. Altrimenti, non funzionerà correttamente. Nel tutorial, viene sviluppato uno script automatico per correggere automaticamente i byte della lunghezza del payload.
L'applicazione client-server vulnerabile (VuCSA) contiene molteplici vulnerabilità, che possono essere sfruttate in vari modi. La guida ufficiale per sfruttare queste vulnerabilità utilizza il Proxy di Test di Penetrazione open-source (vedi Metodologia PETEP).
Nella metodologia PETEP, viene spiegato l'intero processo di sfruttamento delle sfide, inclusi payload utili.