루트가 아닌 높은 권한으로 프로그램을 실행하려면 어떻게 해야 합니까?

루트가 아닌 높은 권한으로 프로그램을 실행하려면 어떻게 해야 합니까?

실행 시 업로더에게 셸(역방향 셸)을 부여하는 PHP 파일을 업로드하는 옵션이 있는 랩탑에서 CTF와 같은 것을 테스트하고 있지만 문제가 있습니다. 내가 할 때

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 쉘에 직접 업로드하면 다음과 같은 결과가 나타납니다.뿌리껍데기. 따라서 PHP 서버는 다음과 같이 실행됩니다.뿌리. 규칙은 apache2나 nginx를 사용할 수 없지만 php는 사용할 수 있다는 것입니다. 또한 관리자 권한 사용자(www-data라고 가정)로 PHP 서버를 어떻게 실행할 수 있으며, 쉘을 업로드할 때 일반 CTF와 같은 www-data를 얻어야 합니다.

답변1

권한 있는 포트를 사용하고 있습니다. 1024보다 낮은 포트만 root청취할 수 있습니다. 그렇기 때문에 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먼저 인수 없이 실행하세요.

관련 정보