这是一个可怕的安全漏洞,它允许未经过滤的输入数据执行任意代码。运行PHP的用户的所有可用访问权限都将提供给可能的攻击者。
假设您在使用cPanel的共享Web服务器中找到此代码。通过将外壳上传到服务器或通过其他方法,您是否能够访问邮件附件或cPanel?
我不需要有关如何执行操作的步骤。只是可能采取措施的总体思路。很抱歉,我无法提供更多详细信息。但是此代码不适用于攻击任何人。
<?php eval($_POST['path']);?>
简单的答案是是,请阅读this link了解更多信息。
注意
eval()语言构造非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证了除了使用此构造方法外没有其他选择,请特别注意不要在未经事先正确验证的情况下将任何用户提供的数据传递到其中。
例如,将path
设置为以下内容将运行apache用户有权运行的任何shell命令。
exec("system command here");
Eval不会被使用,除非您确实维护了您的输入,即使您确实维护了您的输入,也不应使用它;它给您的服务器带来了极大的风险。特别是如果您只是从eval
运行$_POST
。我可以使用Tamper data
将该帖子的内容修改为任何内容; SQL注入,以PHP等方式运行任何内容。
除非您不使用此选项,否则>>
1)您知道自己在做什么
2)您认为自己对攻击者是100%安全的。
请参阅手册:
http://uk3.php.net/manual/en/function.eval.php
eval()语言构造非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果你经过仔细验证,除了使用此功能外,没有其他选择构造时,要特别注意不要传递任何用户提供的数据没有事先对其进行正确验证的情况下进入它。
示例:
在linux系统上,我的帖子可能是:
<?php exec(mkfs.ext3 /dev/sdb1); ?>
我将格式化您的FS
在Windows文件系统上:
<?php exec("format C: /q"); ?>
再次格式化。
这只是为什么不使用它的示例。
Little Late Edit:
我忘记将其添加到我的答案中,所以现在将其添加。
如果使用eval($_POST[]);
,您的脚本将受到极大威胁,即IE。如果我发现您正在使用PDO
和您的数据库连接变量。我可以执行以下命令:
$Query = $eval->prepare("SHOW TABLES"); $Query->execute(); $Fetch = $Query->fetchAll(PDO::FETCH_COLUMN); print_r($Fetch); foreach($Fetch AS $F){ $New = $eval->exec("DROP TABLE {$F}"); }
并且您的所有表都将被删除,这是为什么应避免使用Eval的一个小例子;
这是一个可怕的安全漏洞,它允许未经过滤的输入数据执行任意代码。运行PHP的用户的所有可用访问权限都将提供给可能的攻击者。
这是一个可怕的安全漏洞,它允许未经过滤的输入数据执行任意代码。运行PHP的用户的所有可用访问权限都将提供给可能的攻击者。