有 putenv() 漏洞吗?

Is there a putenv() exploit?

我正在使用以下代码:

$data = json_decode($_GET["payload"]);
$env = $data->env;

putenv("MYENV=".$env);

但是这个功能正在被利用。我不知道怎么办。攻击者可以在我的机器上执行任何代码 (Windows)。

有没有人知道这是怎么可能的或如何解决的?

这称为 ShellShock 漏洞。如果包含 { :;};,它基本上会执行攻击者想要的任何代码。例如

MYENV="{ :; }"; /bin/eject

将导致在 Linux 上弹出 dvdrom 驱动器。所以事实上这里一切皆有可能。

来源:

因为某些环境变量是危险的,例如 linux 上的 LD_PRELOAD。 通常,这不仅仅取决于 putenv,而是取决于您代码中的其他可能漏洞(例如,如果您执行某些通过环境使用某些神奇配置的东西,这可能会导致漏洞利用)