我正在我的笔记本电脑上测试类似 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
参数的情况下运行它。