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

时间:2012-01-05 12:18:21

标签: php wordpress eval

我继承了一个WordPress网站,该网站使用RunPHP插件在帖子之间执行PHP代码片段。我觉得这不是实现这种功能的最佳方式。但由于这是遗留代码,在很长一段时间内功能正确,我需要一些问题场景的实例。

对于那些不熟悉RunPHP的人来说,它是一个插件,它使用eval()执行嵌入在Post或Page体内的PHP代码。代码块从未从用户收到,但由网站所有者/内容创建者输入数据库。

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

表单创建为Post,其提交操作设置为Page(让我们称之为表单处理程序)。表单处理程序在其正文中包含PHP代码,并为该页面激活RunPHP插件。提交表单时,表单处理程序接收数据并执行其正文中的PHP代码。

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

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

非常感谢。

帖子中的表单代码 -

<form action="/?p=1234" method="post">
    <input name="foobar" type="text" />
    <input type="submit" />
</form>

页面中的处理程序代码(存储在数据库中,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
?>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

谁提交这些表格?如果它可以由任何人和每个人提交,是什么阻止他们执行代码来获取他们感兴趣的东西?

您可以使用此漏洞来潜在地读取文件,执行MySQL查询等。