
L'Applicazione Java Super Vulnerabile (SVJA), come dimostrato nel Roniel and DaRon Podcast Show, è un'applicazione Apache Struts progettata per contenere una serie di vulnerabilità molto comuni. A differenza di altri software 'volutamente vulnerabili', questo software è progettato per riprodurre le vulnerabilità comuni nello stesso modo in cui vengono spesso osservate, piuttosto che in una maniera eccessivamente semplicistica o più 'capture the flag'. Questo software viene aggiornato e ampliato con una certa regolarità, con dimostrazioni di alcune delle vulnerabilità come parte del podcast.
La RDPS Super Vulnerable Java Application è esattamente questo: un'applicazione Java super vulnerabile, creata per il beneficio di tutti, per vedere una varietà di vulnerabilità comuni, spesso "complesse". Questo software è stato creato come parte del Roniel and DaRon Podcast Show (https://www.youtube.com/channel/UCbj1JFcSJeTuf3qf9GPRemA) così da poter discutere e mostrare una serie di vulnerabilità incontrate di frequente in un modo più realistico rispetto a quanto si vede con molti altri strumenti online. Per vedere esempi di sfruttamento, guarda il nostro podcast.
Ricorda che questa applicazione è volutamente estremamente vulnerabile a diverse cose. Fai attenzione a dove la esegui, limita chi può accedervi (il server Tomcat dovrebbe ascoltare solo su localhost e solo sulla tua macchina personale). Non siamo responsabili se non sai prenderti cura delle tue cose, lasciando la tua copia esposta in balia di chiunque voglia rubare i tuoi dati o compromettere gravemente la tua macchina. Ti consigliamo di eseguirla in una macchina virtuale (VM) protetta, che non contenga nulla di sensibile e senza connettività a Internet. La mancata protezione adeguata del sistema che esegue questa applicazione e della sua istanza probabilmente ti farà passare una brutta giornata. Come nei rapporti carnali occasionali senza le dovute protezioni, stai solo mettendoti in una posizione che un giorno rimpiangerai. Considerati avvisato, ma incoraggiato a giocare ;-)
La RDPS SVJA è composta da un'applicazione Java struts 2 che esegue react. Si compila semplicemente eseguendo: mvn clean package
Questo crea un WAR in target -- svja.war. Basta posizionare il WAR nella cartella webapps del tuo Tomcat. In un'installazione Tomcat predefinita vai su http://127.0.0.1:8080/svja per accedere all'applicazione.
Se stai eseguendo Tomcat 10 o superiore, aggiungi <Loader jakartaConverter="TOMCAT" /> al tuo file di configurazione context.xml di Tomcat.
Per chi vuole usarla per iniziare, la root (http://127.0.0.1:8080/svja) ora include Swagger UI e una specifica OpenAPI di base (http://127.0.0.1:8080/svja/specification.yaml) che puoi utilizzare. Nota che la specifica, e quindi Swagger UI, scalfisce solo la superficie (non è forse questo il senso della deserializzazione non sicura, ecc.?).
Di seguito sono elencate alcune delle vulnerabilità principali del sistema, per azione.
admin:admin (account amministratore applicazione)
bill:baker (account utente privilegiato)
bob:barker (account utente base, sola lettura)
/api/authenticate?user.username=admin&user.password=admin
/api/authenticate?user.username=bill&user.password=baker
/api/authenticate?user.username=bob&user.password=barker
Dopo l'autenticazione, puoi chiamare qualsiasi azione desideri usando JSON o Struts
GET /svja/api/authenticate?user.username=bill&user.password=baker HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Length: 0
DNT: 1
Connection: close
Cache-Control: max-age=0
GET /svja/api/authenticate HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 61
DNT: 1
Connection: close
Cache-Control: max-age=0
{
"user": {
"username": "bill",
"password": "baker"
}
}
GET /svja/api/authenticate/federated?user.username=bill%40rdps.local&usernameTranslationRegex=%2F%40rdps%5B.%5Dlocal%2F%2F HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Length: 0
DNT: 1
Connection: close
Cache-Control: max-age=0
GET /svja/api/authenticate/federated HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Host: localhost
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 61
DNT: 1
Connection: close
Cache-Control: max-age=0
{
"user": {
"username": "[email protected]"
},
"usernameTranslationRegex": "/@rdps[.]local//"
}
Ricorda di cambiare il token svjatoken
GET /svja/api/projects?projectId=1 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Cookie: svjatoken=RaMu5vhFBgL8goV6Ja1ffLnpmcixNuAL7fUP;
Cache-Control: max-age=0
Ricorda di cambiare il token svjatoken
GET /svja/api/projects HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: application/json, text/plain, */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json
Content-Length: 19
DNT: 1
Connection: close
Cookie: svjatoken=RaMu5vhFBgL8goV6Ja1ffLnpmcixNuAL7fUP;
Cache-Control: max-age=0
{
projectId:1
}
Questo è un lavoro in corso e abbiamo in programma molte altre vulnerabilità e funzionalità (tra cui un frontend super vulnerabile e altre applicazioni super vulnerabili) -- passa a trovarci ogni paio di mesi e guarda il Roniel and DaRon Podcast Show per aggiornamenti, esempi di sfruttamento e altre idee. Ti incoraggiamo anche a cercare di capire come mitigare o correggere le vulnerabilità... rompere le cose è facile... mitigarle, correggerle e metterle in sicurezza è ciò che è difficile. Buona fortuna e buona caccia!