
Взломайте этот сервис, чтобы доказать, что CVE-2022–29622 действителен.
Эта кодовая база создана, чтобы помочь специалистам по безопасности и разработчикам понять, почему я считаю, что Formidable не был уязвим к CVE-2022-29622. Я изложил свой анализ здесь: CVE-2022–29622: анализ (не)уязвимости
Поскольку некоторые не поняли этого, я решил проиллюстрировать свою точку зрения с помощью реально работающего кода.
Сервер реализован в index.mjs. Он использует Formidable версии 3.1.4 для загрузки любого выбранного вами файла.
Я явно настроил Formidable, как показано ниже:
{
uploadDir: './uploads/',
keepExtensions: true,
}
Таким образом, все файлы будут загружены в каталог uploads. Я включил keepExtension, чтобы вы могли загружать свои файлы с вредоносным именем.
Чтобы настроить и запустить сервер, выполните следующие команды из этого каталога:
npm install
npm run start
Первая команда устанавливает все зависимости, включая соответствующую версию formidable. Вторая команда запускает сервер.
После запуска вы можете получить доступ к форме загрузки файлов, которую предоставляет сервер, по адресу: http://127.0.0.1:3000/
Я включил два файла с вредоносными именами в каталог examples... в качестве примеров.
Файлы, отправленные через форму по адресу http://127.0.0.1:3000, будут загружены в каталог uploads.
Задача состоит в том, чтобы проверить, сможете ли вы доказать, что formidable уязвим к CVE-2022–29622. Чтобы сделать это, вам нужно заставить этот веб-сервер выполнить код, который вы включите в загружаемый файл или в имя файла.
Правила:
3000. Вам НЕЛЬЗЯ изменять какие-либо файлы в этом каталоге.Если вам удастся добиться выполнения произвольного кода, строго следуя приведённым выше правилам, только тогда вы докажете, что formidable был уязвим к выполнению произвольного кода.
Подсказка: вероятно, самая простая наглядная демонстрация — заставить сервер вывести строку, например, «I'm awesome, I've got arbitrary code executed», в консоль, где вы запустили веб-сервер.