現状はこんな感じです。 「user1」と「root」という2人のユーザーを持つ仮想マシンがあります。ユーザー "user1" は uid=1000 の sudoer ではなく通常のユーザーで、root は uid=0 の一般 root ユーザーです。
user1がシステムの特定の脆弱性を介してeuid = 0を取得する可能性がありますが、彼のuidはまだ1000であると仮定します。これは彼にいくつかの基本的な能力を提供しますが、すべてではありません。たとえば、/rootにアクセスするとルートがそうするように動作しますが、「sudo」または「su」を実行するとEUIDではなくUIDに基づいているように見えます。
私の質問は:euid = 0なので、バイナリをアップロードしたり/etc/shadowまたは/etc/passwdを変更してuidを0に切り替える必要がないエレガントな方法はありますか?メソッドが基本的に実行され、特定のプログラム(gccなど)があると仮定しない場合は良いでしょう。
これまではどれがかなり良いかを理解できますが、python -c 'import pty; import os; os.setuid(0); pty.spawn("/bin/bash")'
これはPythonがシステムにインストールされていると仮定しています。より良い提案がありますか?
答え1
これは多くの基本構成に適用されます。
perl -MEnglish -e '$UID = 0; $ENV{PATH} = "/bin:/usr/bin:/sbin:/usr/sbin"; exec "su - root"'
これでuidが設定され、ルートされます。
イルカチョから借りました。