web-dev-qa-db-ja.com

「Sudo vim」を使用してシェルを生成する

私は最近、CTFコンテストでサーバーをハッキングした方法についてのユーザーからの回答を読みました。説明のある時点で、彼はSudo vimそして、VIMを介して、以前に取得したパスワードを使用してシェルを生成しました(私は彼が:!bash in vim)。

彼がこの特定のベクトルを使用してシェルをスポーンした理由を少し混乱しています...彼は単にSudo bash。なぜVimを使用してこれを行うのですか?

5
Tiago

1つの可能性は、Sudoが特定のアプリケーションのみを実行するように構成されていたことです。この例 は、Sudoマニュアル にあります。

これらのいずれかがvimであったが、bashがオプションではなかった場合、ユーザーはSudo -iまたはSudo bashを実行できませんでしたが、Sudo vimは実行できました。ただし、一度完了すると、vimの有効なuid/gidは0/0になり、ルートbashシェルを実行できます。

これは、ご想像のとおり、実際にsudoersファイルを編集してその制限を削除できることを意味します。

もちろん、このトリックについてもう1つ注意すべき点は、ロギングの欠如です。 Sudoはvimを実行し、その事実をログに記録しますが、その後にvimが生成することを選択したプロセスはログに記録しません。したがって、シェルの実行に制限がない場合でも、これはあなたが何をしているかを偽装する方法です。

9
user2213

Sudoユーザーがsudoersファイルで実行できるコマンドを制限できます。vimを介してシェルを開くことは、それを回避する1つの方法です。 VIMは、ファイルおよびディレクトリのアクセス許可によって発生する可能性のある損傷を制限するため、多くの場合制限されません。したがって、不正なシェルを実行するための理想的な選択肢です。

2
GdD