
Identifica automaticamente i problemi di deserializzazione nelle applicazioni Java e .NET utilizzando scansioni attive e passive.
Un'estensione di Burp Suite per aiutare a rilevare e sfruttare librerie/API di serializzazione.
Questa utile estensione è stata originariamente sviluppata da Nick Bloor (@nickstadb) per NCC Group ed è basata principalmente sul lavoro di Alvaro Muñoz e Oleksandr Mirosh, Friday the 13th: JSON Attacks, che hanno presentato al Black Hat USA 2017 e DEF CON 25. Nel loro lavoro hanno esaminato una serie di librerie di serializzazione JSON e XML per Java e .NET e hanno scoperto che molte di esse supportano la serializzazione di oggetti runtime arbitrari e di conseguenza sono vulnerabili allo stesso modo di molte tecnologie di serializzazione - frammenti di codice (gadget POP) che vengono eseguiti durante o subito dopo la deserializzazione possono essere controllati utilizzando le proprietà degli oggetti serializzati, spesso aprendo la possibilità di esecuzione di codice arbitrario o comandi.
Ulteriori moduli che supportano più formati, tra cui YAML e AMF, sono inclusi, basati sul documento Java Unmarshaller Security - Turning your data into code execution e sullo strumento marshalsec di Moritz Bechler.
Questa estensione di Burp Suite implementa sia la scansione passiva che quella attiva per identificare e sfruttare librerie vulnerabili.
Freddy può rilevare passivamente l'uso di librerie e API di serializzazione potenzialmente pericolose osservando gli identificatori di tipo o altre firme nelle richieste HTTP e monitorando le risposte HTTP per eccezioni emesse dalle librerie di destinazione. Ad esempio la libreria FastJson utilizza un campo JSON $types per specificare il tipo dell'oggetto serializzato.
Freddy include funzionalità di scansione attiva che tenta di rilevare e, ove possibile, sfruttare le librerie interessate.
La scansione attiva tenta di rilevare l'uso di librerie vulnerabili utilizzando tre metodi: basato su eccezioni, basato sul tempo e basato su Collaborator.
Nella scansione attiva basata su eccezioni, Freddy inserisce dati nella richiesta HTTP che dovrebbero attivare un'eccezione o un messaggio di errore specifico del target. Se questo messaggio di errore viene osservato nella risposta dell'applicazione, viene segnalato un problema.
In alcuni casi, i payload basati sul tempo possono essere utilizzati per il rilevamento perché l'esecuzione di comandi del sistema operativo viene attivata durante la deserializzazione e questa azione blocca l'esecuzione fino al termine del comando del sistema operativo. Freddy utilizza payload contenenti ping [-n|-c] 21 127.0.0.1 per indurre un ritardo temporale in questi casi.
I payload basati su Collaborator funzionano emettendo un comando nslookup per risolvere il nome di dominio generato da Burp Suite Collaborator, oppure tentando di caricare classi remote dal nome di dominio in un'applicazione Java. Freddy controlla i nuovi problemi di Collaborator ogni 60 secondi e li contrassegna nell'elenco dei problemi con RCE (Collaborator).
I seguenti target sono attualmente supportati (in corsivo sono nuovi nella v2.0):
Java
.NET
Rilasciato sotto agpl-3.0, vedere LICENSE per maggiori informazioni
Freddy utilizza il sistema di build gradle. Per compilare il jar, è sufficiente eseguire gradle jar nella directory principale. Questo eseguirà i test e, se tutto è corretto, creerà il file jar nella directory build/libs.