実行ファイル/スクリプトを実行するときにルートディレクトリをどのように偽造できますか?

実行ファイル/スクリプトを実行するときにルートディレクトリをどのように偽造できますか?

/bin/sh や /usr/bin/cowsay などの項目を参照するときに、代わりに ~/fake/bin/sh を実行するようにスクリプトを実行する方法はありますか?

この効果は、実行中の他のスクリプトと実行されるスクリプトに対して引き続き有効でなければなりません。

ベストアンサー1

スクリプトが協力的である場合、つまり意図的にあなたと戦うことを望んでいない場合は、次のものを使用できます。chrootディレクトリツリーのサブツリーで実行します。 chrootで実行されているプログラムは自分のツリーの外側のファイルに直接アクセスすることはできませんが、プロセスへのシグナリング、ソケットを介した通信、ネットワークアクセスなど、他の方法で外部の世界と対話できます。

chroot ~/fake myscript

サブツリーには、~/fakeスクリプトに必要なもの~/fake/bin/sh~/fake/lib/ld-linux.so.2および/またはLinuxで作業するための~/fake/lib/libc.so.6システムの動的ローダーと標準ライブラリなどが含まれている必要があります。シンボリックリンクの巡回自体はchroot制約に従うため、シンボリックリンクではなく実際のファイルである必要があります。/procps

バインドマウント必要なファイルをすべてコピーせずにchrootツリーを構築するのに役立ちます。

Chrootにはroot権限が必要です。実行したいすべてのプログラムが動的にリンクされている場合は、次のものを使用できます。fakechrootより軽い方法でchrootを使用してください。 Fakechrootはシステムコールを傍受して機能します。ライブラリのプリロードしたがって、権限は必要ありません。 fakechrootを使用すると、通常はchrootの外側を指すシンボリックリンクに従うため、シンボリックリンクフォレストを構築してサブツリー内のコンテンツを使用できます。

スクリプトが協力しない場合は、適切な分離ツールが必要です。コンテナまたは仮想マシン。

おすすめ記事