gpt4 book ai didi

以 root 无意中运行的 PHP exec 命令

转载 作者:IT王子 更新时间:2023-10-29 00:44:07 25 4
gpt4 key购买 nike

我对通过 PHP“exec”语句运行的命令的用户所有权感到非常困惑和担忧。我在带有 DSO/mod_ruid 处理程序的 cPanel/WHM 环境中运行 PHP 5.5/Apache 2.2/CENTOS 6。

在测试中,我有以下 php 脚本:

<?php
echo 'whoami: ',exec('whoami'),'<br />';
echo 'user: ',exec('echo ${USER}'),'<br />';
echo 'home: ',exec('echo ${HOME}'),'<br />';
?>

当我通过浏览器运行脚本时,我看到了这些结果:

whoami: cuser
user: root
home: /root

cuser 是我系统的 cPanel ID 和我域的虚拟主机 httpd.conf 配置中 suPHP、mod_ruid 和 mpm-itk 指令中的用户 ID。

此外,我的 httpd.conf 文件将“nobody”指定为用户和组,事实上,我的 httpd 进程(从“ps -ef | grep httpd”返回)归“nobody”所有。

我的问题是为什么 exec 命令对“whoami”和“echo ${USER}”命令返回不同的结果,以及是否因为我的 Apache 配置错误而存在安全风险。最理想的情况是,我希望我的 exec 命令以 cuser 用户身份运行。我可以做到吗?

非常感谢您提供的任何信息。

最佳答案

根据 Gralgrathor 的评论,这是我的解决方法:

我可以通过输入我的 exec 命令来覆盖 HOME 目录,如下所示:exec('HOME=/home/cuser sh script.sh')。请注意,尽管 script.sh 中的 ${USER} 仍指向 ROOT,因此请注意!

关于以 root 无意中运行的 PHP exec 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36087259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com