Я использую следующий код:
$data = json_decode($_GET["payload"]);
$env = $data->env;
putenv("MYENV=".$env);
Но эта функция эксплуатируется. Понятия не имею как. Злоумышленник может выполнить любой код на моей машине (Windows).
У кого-нибудь есть идея, как это возможно или как это исправить?
Это называется уязвимость ShellShock. Он в основном выполняет любой код, который хочет злоумышленник, если { :;};
включены. Например
MYENV="{ :; }"; /bin/eject
приведет к извлечению диска DVDROM в Linux. Так что на самом деле все возможно здесь.
Источник:
Потому что некоторые переменные окружения опасны, как LD_PRELOAD в Linux.
Обычно это зависит не только от putenv, но и от другой возможной уязвимости в вашем коде (например, если вы выполняете что-то, что использует магическую конфигурацию через среду, это может привести к эксплуатации)