ルートではなく高い権限でプログラムを実行するにはどうすればよいですか?

ルートではなく高い権限でプログラムを実行するにはどうすればよいですか?

実行時にアップローダにシェル(リバースシェル)を付与する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最初に引数なしで実行してください。

関連情報