
Piratez ce service pour prouver que CVE-2022–29622 est valide
Ce code a été créé pour aider les professionnels de la sécurité et les développeurs à comprendre pourquoi je pense que Formidable n'était pas vulnérable à CVE-2022-29622. J'ai rédigé mon analyse ici : CVE-2022–29622: Analyse de (In)vulnérabilité
Comme certains ne l'ont pas comprise, j'ai pensé illustrer mon propos à l'aide d'un code réel et fonctionnel.
Le serveur est implémenté dans index.mjs. Il utilise Formidable version 3.1.4 pour téléverser n'importe quel fichier de votre choix.
J'ai explicitement configuré Formidable comme indiqué ci-dessous :
{
uploadDir: './uploads/',
keepExtensions: true,
}
Ainsi, tous les fichiers seront téléversés dans le répertoire uploads. J'ai activé keepExtensions afin que vous puissiez obtenir vos fichiers avec un nom de fichier malveillant téléversé.
Pour configurer et démarrer le serveur, exécutez les commandes suivantes depuis ce répertoire :
npm install
npm run start
La première commande installe toutes les dépendances, y compris la version appropriée de formidable. La deuxième commande démarrera le serveur.
Une fois opérationnel, vous pouvez accéder au formulaire de téléversement de fichiers exposé par le serveur à l'adresse : http://127.0.0.1:3000/
J'ai inclus deux fichiers avec un nom malveillant dans le répertoire examples... à titre d'exemples.
Les fichiers soumis via le formulaire à http://127.0.0.1:3000 seront téléversés dans le répertoire uploads.
Le défi consiste à voir si vous pouvez prouver que formidable est vulnérable à CVE-2022–29622. Pour y parvenir, vous devez faire en sorte que ce serveur web exécute du code que vous incluerez dans le fichier téléversé ou dans le nom du fichier.
Les règles :
3000. Vous NE DEVEZ PAS modifier les fichiers dans ce répertoire.Si vous parvenez à exécuter du code arbitraire en respectant strictement les règles ci-dessus, alors seulement vous aurez prouvé que formidable était vulnérable à l'exécution de code arbitraire.
Suggestion : La démonstration visuelle la plus simple serait probablement de faire en sorte que le serveur affiche une chaîne, par exemple, "Je suis génial, j'ai exécuté du code arbitraire" sur la console où vous avez démarré le serveur web.