
Hackera questo servizio per dimostrare che CVE-2022–29622 è valido.
Questo codebase è stato creato per aiutare i professionisti della sicurezza e gli sviluppatori a capire perché ritengo che Formidable non fosse vulnerabile a CVE-2022-29622. Ho scritto la mia analisi qui: CVE-2022–29622: Analisi della (in)vulnerabilità
Poiché alcuni non l'hanno capito, ho pensato di illustrare il mio punto utilizzando codice reale ed eseguibile.
Il server è implementato in index.mjs. Usa la versione 3.1.4 di Formidable per caricare qualsiasi file tu scelga.
Ho configurato esplicitamente Formidable come mostrato di seguito:
{
uploadDir: './uploads/',
keepExtensions: true,
}
In questo modo, tutti i file verranno caricati nella directory uploads. Ho abilitato keepExtensions così puoi far caricare i tuoi file con un nome file dannoso.
Per configurare e avviare il server, esegui i seguenti comandi da questa directory:
npm install
npm run start
Il primo comando installa tutte le dipendenze, inclusa la versione appropriata di formidable. Il secondo comando avvierà il server.
Una volta avviato, puoi accedere al modulo di caricamento file esposto dal server all'indirizzo: http://127.0.0.1:3000/
Ho incluso due file con nome dannoso nella directory examples... come esempi.
I file inviati tramite il modulo all'indirizzo http://127.0.0.1:3000 verranno caricati nella directory uploads.
La sfida è vedere se riesci a dimostrare che formidable è vulnerabile a CVE-2022–29622. Per riuscirci, devi far eseguire a questo web server codice che includi nel file caricato o nel nome del file.
Le regole:
3000. NON DEVI modificare alcun file all'interno di questa directory.Se riesci a far eseguire codice arbitrario seguendo rigorosamente le regole sopra elencate, solo allora avrai dimostrato che formidable era vulnerabile all'esecuzione di codice arbitrario.
Suggerimento: Probabilmente la dimostrazione visiva più semplice sarebbe far stampare al server una stringa, ad esempio, "I'm awesome, I've got arbitrary code executed" sulla console in cui hai avviato il web server.