Sudo

如何使程序以提升的權限執行但不是以 root 身份執行?

  • August 19, 2020

我正在我的筆記型電腦中測試類似 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 時,我得到了 root shell。因此,php 伺服器以root身份執行。規則是我不能使用 apache2 或 nginx 但 php。另外,我如何以提升的使用者身份執行 php 伺服器(比如說 www-data),當我上傳 shell 時,我應該像常見的 CTF 一樣獲得 www-data。

您可以使用此命令在任何埠下執行 PHP:

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

如果它返回:(/usr/bin/binary differs in [pe]這是一個錯誤)請先不帶-v參數執行它。

您正在使用特權埠。只能root監聽 1024 以下的埠。這就是為什麼例如 apache 以root(並保持)開始,而工作人員以www-data或其他方式啟動的原因。

嘗試使用 1023 以上的埠。

引用自:https://unix.stackexchange.com/questions/605257