![루트가 아닌 높은 권한으로 프로그램을 실행하려면 어떻게 해야 합니까?](https://linux55.com/image/178785/%EB%A3%A8%ED%8A%B8%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EB%86%92%EC%9D%80%20%EA%B6%8C%ED%95%9C%EC%9C%BC%EB%A1%9C%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
실행 시 업로더에게 셸(역방향 셸)을 부여하는 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
먼저 인수 없이 실행하세요.