Sudo
如何使程序以提升的權限執行但不是以 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 時,我得到了 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 以上的埠。