
Hacke diesen Dienst, um zu beweisen, dass CVE-2022–29622 gültig ist.
Diese Codebasis wurde erstellt, um Sicherheitsexperten und Entwicklern dabei zu helfen zu verstehen, warum ich der Meinung bin, dass Formidable nicht durch CVE-2022-29622 verwundbar war. Meine Analyse habe ich hier beschrieben: CVE-2022–29622: (Un-)Verwundbarkeitsanalyse
Da einige es nicht verstanden haben, dachte ich, ich veranschauliche meinen Standpunkt anhand von tatsächlichem, lauffähigem Code.
Der Server ist in index.mjs implementiert. Er verwendet Formidable in Version 3.1.4, um jede beliebige Datei Ihrer Wahl hochzuladen.
Ich habe Formidable wie unten gezeigt explizit konfiguriert:
{
uploadDir: './uploads/',
keepExtensions: true,
}
Auf diese Weise werden alle Dateien in das Verzeichnis uploads hochgeladen. Ich habe keepExtension aktiviert, damit Sie Ihre Dateien mit einem bösartigen Dateinamen hochladen können.
Um den Server einzurichten und zu starten, führen Sie die folgenden Befehle aus diesem Verzeichnis aus:
npm install
npm run start
Der erste Befehl installiert alle Abhängigkeiten, einschließlich der passenden Version von formidable. Der zweite Befehl startet den Server.
Sobald er läuft, können Sie auf das vom Server bereitgestellte Datei-Upload-Formular unter http://127.0.0.1:3000/ zugreifen.
Ich habe im Verzeichnis examples zwei Dateien mit bösartigen Namen beigefügt... als Beispiele.
Dateien, die über das Formular unter http://127.0.0.1:3000 übermittelt werden, werden in das Verzeichnis uploads hochgeladen.
Die Herausforderung besteht darin, zu beweisen, dass formidable durch CVE-2022–29622 verwundbar ist. Um das zu schaffen, müssen Sie diesen Webserver dazu bringen, Code auszuführen, den Sie in die hochgeladene Datei oder in den Dateinamen einfügen.
Die Regeln:
3000. Sie DÜRFEN KEINE Dateien in diesem Verzeichnis verändern.Wenn Sie unter strikter Einhaltung der obigen Regeln beliebigen Code zur Ausführung bringen können, erst dann haben Sie bewiesen, dass formidable anfällig für die Ausführung beliebigen Codes war.
Vorschlag: Die wohl einfachste visuelle Demonstration wäre, den Server dazu zu bringen, eine Zeichenkette auszugeben, zum Beispiel „Ich bin großartig, ich habe beliebigen Code ausgeführt“, auf der Konsole, auf der Sie den Webserver gestartet haben.