如何使程序以提升的权限运行但不以 root 身份运行?

如何使程序以提升的权限运行但不以 root 身份运行?

我正在我的笔记本电脑上测试类似 CTF 的东西,我可以选择上传一个 PHP 文件,该文件在执行时会向上传者授予 shell(反向 shell),但是存在问题。当我做

su - www-data
cd /tmp
php -S 0.0.0.0:80 #upload.php is present uploaded data is saved in this dir
#it gives permission denied and i do
sudo php -S 0.0.0.0:80 #it runs

当我自己上传 php shell 时,我得到壳。因此,php 服务器运行为。规则是我不能使用 apache2 或 nginx,但可以使用 php。另外,我如何以提升的用户身份运行 php 服务器(比如说 www-data),当我上传 shell 时,我应该像常见的 CTF 一样获得 www-data。

答案1

您正在使用特权端口。只能root监听低于 1024 的端口。这就是为什么 apache 启动为root(并保持),并且工作进程启动为www-data或其他什么的原因。

尝试使用 1023 以上的端口。

答案2

您可以使用此命令在任何端口下运行 PHP:

setcap -v cap_net_bind_service=+ep "$(readlink -f "$(which php)")"

如果它返回:(/usr/bin/binary differs in [pe]这是一个错误)请先在不带-v参数的情况下运行它。

相关内容