私は最近、CTFコンテストでサーバーをハッキングした方法についてのユーザーからの回答を読みました。説明のある時点で、彼はSudo vim
そして、VIMを介して、以前に取得したパスワードを使用してシェルを生成しました(私は彼が:!bash
in vim)。
彼がこの特定のベクトルを使用してシェルをスポーンした理由を少し混乱しています...彼は単にSudo bash
。なぜVimを使用してこれを行うのですか?
1つの可能性は、Sudoが特定のアプリケーションのみを実行するように構成されていたことです。この例 は、Sudoマニュアル にあります。
これらのいずれかがvim
であったが、bash
がオプションではなかった場合、ユーザーはSudo -i
またはSudo bash
を実行できませんでしたが、Sudo vim
は実行できました。ただし、一度完了すると、vim
の有効なuid/gidは0/0になり、ルートbashシェルを実行できます。
これは、ご想像のとおり、実際にsudoersファイルを編集してその制限を削除できることを意味します。
もちろん、このトリックについてもう1つ注意すべき点は、ロギングの欠如です。 Sudoはvimを実行し、その事実をログに記録しますが、その後にvimが生成することを選択したプロセスはログに記録しません。したがって、シェルの実行に制限がない場合でも、これはあなたが何をしているかを偽装する方法です。
Sudoユーザーがsudoersファイルで実行できるコマンドを制限できます。vimを介してシェルを開くことは、それを回避する1つの方法です。 VIMは、ファイルおよびディレクトリのアクセス許可によって発生する可能性のある損傷を制限するため、多くの場合制限されません。したがって、不正なシェルを実行するための理想的な選択肢です。