
Proof-of-concept script che dimostra l'enumerazione degli utenti in LiquidFiles tramite l'endpoint di reset della password, consentendo l'identificazione di utenti validi per attacchi di forza bruta.
Questa vulnerabilità è stata identificata in LiquidFiles versione 4.1 e precedenti.
Quando si avvia un reset della password tramite l'endpoint "POST /password_reset", l'applicazione risponde in modo diverso a seconda che l'indirizzo email fornito sia registrato o meno. In entrambi i casi viene emesso un redirect e la risposta include il cookie "_filetransfer_session". Quando questo cookie viene utilizzato per accedere al percorso root ("/"), il messaggio di errore risultante differisce in base alla validità dell'indirizzo email inviato.
Ciò consente di fatto a un attaccante di compilare un elenco di utenti validi, che può poi essere sfruttato in attacchi come brute-force o password spraying.
Risposta al reset della password – utenti esistenti/validi
Risposta al reset della password – utenti inesistenti/non validi
Dopo diversi tentativi di reset della password, viene attivato un blocco basato sull'IP come misura di sicurezza, impedendo ulteriori richieste dallo stesso indirizzo IP. Tuttavia, questo meccanismo è insufficiente, poiché può essere aggirato utilizzando strumenti gratuiti. Ad esempio, è possibile eludere il blocco utilizzando i proxy di AWS API Gateway in combinazione con l'estensione "IP Rotate" in Burp Suite. Lo script prevede un proxy locale sulla porta 8080.
App utilizzata per aggirare il blocco basato sull'IP:
Questa discrepanza nei messaggi di errore consente l'enumerazione automatizzata di nomi utente o indirizzi email validi. Per dimostrarlo, ho creato uno script proof-of-concept che prende un elenco di potenziali indirizzi email registrati e identifica quelli validi in base al comportamento di risposta dell'applicazione.
Output dello script di enumerazione degli utenti:

Una volta identificati i nomi utente validi, questi potrebbero essere sfruttati in un attacco di brute-force o password spraying. Dato che alcuni utenti potrebbero avere password deboli o riutilizzate, ciò rappresenta un rischio di sicurezza elevato.
La probabilità di sfruttamento è alta, le misure di sicurezza attuali sono facilmente aggirabili e lo sfruttamento è semplice. L'impatto è considerato medio poiché, dopo aver ottenuto un elenco di utenti validi, è comunque necessario compromettere un account tramite password spraying o attacchi di brute-force.
Si noti che questa applicazione è utilizzata da molte organizzazioni diverse, quasi sempre esposta all'internet pubblico. Ciò rende sufficiente raccogliere indirizzi email o nomi dei dipendenti da internet e lanciare password spraying contro l'applicazione.
Di conseguenza, questo problema comporta un rischio elevato.
La versione 4.2 risolve questo problema introducendo meccanismi di blocco basati sull'utente e disabilitando i messaggi di errore distinti che consentono l'enumerazione degli utenti per impostazione predefinita.