/ etc / passwdを書き込んでいるが、suでSUID権限がない特権昇格

Dec 16 2020

これは演習ではなく、解決策がない可能性があります。

root以外のユーザーが実行するように設計されたDockerイメージ(CentOSに基づく)を作成しています。ただし、このユーザーは「root」グループに属しているため、/ etc / passwdへの書き込みアクセス権があります。/ etc / passwdの権限は次のとおりです。

-rw-rw-r-- 1 root root 692 Dec 16 14:35 /etc/passwd

これは重大な欠陥であり、特権の昇格を容易にすることになっています。/ etc / passwdにユーザーを追加できます。

しかし、suにはSUID権限がないため、このユーザーに切り替えることはできません。

-rwxr-xr-x 1 root root 32128 Sep 30 17:46 /bin/su

その結果、ユーザーには、suを正常に実行するための十分な権限がありません。

su: cannot set groups: Operation not permitted

私が理解したように、ほとんどのLinuxでは、suコマンドはSUID権限で構成されています。つまり、suを実行する人は誰でも、rootユーザーによって実行されたと見なされます。別の選択肢は、機能で遊ぶことかもしれません。CAP_SETGIDとCAP_SETUIDが必要であり、おそらく他のいくつかも必要だと思います。suがこれらの機能で構成されている場合、SUID権限は必要ない場合があります。しかし、Dockerイメージには、suの機能はありません。したがって、rootだけがsuを正しく実行できるようです。

また、sudoがインストールされておらず、sshd / telnetdが実行されていません。

では、/ etc / passwdに追加された資格情報をどのように使用できますか?それが役立つ場合は、カールを利用できます。

回答

3 RoryMcCune Dec 16 2020 at 23:46

あなたがアクセス権を持っている場合は、標準のLinuxホスト(VMまたはサーバー)上/etc/passwd/etc/shadow、あなたが(明らかに深刻な問題であると思われる、アカウントに資格情報を変更または追加することができますへの変更を許可する場合の影響についての詳細があります/etc/passwdに、この答えは、

Dockerコンテナーには、通常、これらのファイルを使用するソフトウェアがインストールされていないため、Linux PAM、SSHD、または認証データベースを使用するその他のソフトウェアはインストールされていません。

そのタイプのソフトウェアがインストールされていないと、それらのファイルを操作するプログラムがないため、できることはほとんどありません。

もちろん、コンテナーで実行されているアプリケーションが/etc/passwdそれを利用する場合、それを変更すると影響が出る可能性がありますが、コンテナーの機能によっては状況によって異なります。