在WordPress中使用eval()插件的漏洞示例

Pra*_*dhi 5 php wordpress eval

我继承了一个WordPress网站,该网站使用RunPHP插件在帖子之间执行PHP代码段。我觉得这不是实现此类功能的最佳方法。但是,由于这是很长时间以来在功能上都正确的遗留代码,因此我需要一些可靠的问题场景示例。

对于不熟悉RunPHP的人来说,它是一个插件,可以使用eval()执行嵌入在Post或Page主体中的PHP代码。永远不会从用户那里收到该代码块,而是由网站所有者/内容创建者将其输入数据库。

在我们的上下文中,此插件的用例如下。

表单创建为Post,其提交动作设置为Page(我们将其称为表单处理程序)。表单处理程序的主体中包含PHP代码,并且已为该Page激活RunPHP插件。提交表单后,表单处理程序将接收数据,并执行其主体中的PHP代码。

除了在表单处理程序代码中存在一些相当明显的安全性问题(动态用户提交的变量评估,没有输入清理,没有参数化的SQL查询)。

这里有人可以验证我对WP中运行时代码执行插件的怀疑吗?

非常感激。

帖子中的表单代码-

<form action="/?p=1234" method="post">
    <input name="foobar" type="text" />
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

Page中的处理程序代码(此代码存储在数据库中,并在运行时通过eval()编辑)-

<?php
    $foobar = $_POST["foobar"]; // This contains a SQL-injection vulnerability; But that's a separate issue, I think
    $query = "INSERT INTO table (field) VALUES (\"" . $foobar . "\")"; // Use variable in a query string
?>
Run Code Online (Sandbox Code Playgroud)

maf*_*aff 1

如果没有看到实际的站点/代码,很难说,但通常 eval 是安全问题的潜在网关。想象一下,您的站点在某处存在 SQL 注入问题:攻击者不仅有可能将数据注入,还可以将有效的 PHP 代码注入您的应用程序中。Eval 有一些(少数)有效的使用领域,但一般来说我会避免使用它。Wordpress 很容易扩展,也许可以尝试将功能移植到插件中。