我正试图使用shell_exec()
函数通过PHP执行以下命令:
sudo -u USERNAME -pPASSWORD echo "SOME-STRING" > /dev/tcp/127.0.0.1/64444
但什么也没发生(如果我手动将其复制/粘贴到终端,它就会工作)。在shell_exec()
函数的$output
中也没有任何内容。
因此,使用该命令,我试图通过具有sudo权限的另一个用户通过TCP发送一个字符串。
EDIT#1:完整的PHP命令如下:
shell_exec('sudo -u USERNAME -pPASSWORD echo "RLSET|79-192.168.1.33-0-1" > /dev/tcp/127.0.0.1/64444');
编辑#2:我还检查了phpinfo()
函数和safe_mode is off
,而且shell_exec()
函数不在禁用函数列表中。
EDIT#4:我的PHP PATH变量包含以下位置:
/usr/local/bin:/usr/bin:/bin
我在这里迷路了,任何帮助都将不胜感激。
欺骗你的报价放你的完整命令路径:
shell_exec("sudo -u USERNAME -pPASSWORD echo '"FULL-PATH-COMMAND'" > /dev/tcp/127.0.0.1/64444")
可能您的二进制文件(sudo
、echo
…)不在PATH
env变量中:
putenv('PATH', '/bin:/sbin:/usr/bin:/usr/sbin:') // etc...
你试过在-p后面加空格吗?
那应该是
shell_exec('sudo -u USERNAME -p PASSWORD echo "RLSET|79-192.168.1.33-0-1" > /dev/tcp/127.0.0.1/64444');
我刚刚在自己的机器上尝试了一些命令。
我试过
sudo -u USERNAME -p PASSWORD ls
它有效,但当我尝试时
sudo -u USERNAME -pPASSWORD ls
它给了我使用信息。