rootユーザークラック:root以外のユーザーの「su」を使用して自動的にrootにログインする

rootユーザークラック:root以外のユーザーの「su」を使用して自動的にrootにログインする

suコマンドにパスワードを渡すことができるスクリプトを作成したいと思います。その理由は、ルートではなくアカウントからルートにログインするプロセスを自動化するためです。セキュリティの基本的な理解を通して、私はこのタスクの危険性を知っています。ファイルからパスワードを読み取ってrootユーザーのパスワードを復号化するには、この情報がまだ必要です。

インタラクションを自動化するためにこのコマンドを使用するという話を聞いたことがありますが、このexpectコマンドがどのように機能するのか、この場合でも機能するのかはわかりません。使い方に関する情報をexpectいただきありがとうございます。

sudo私のユーザーがsudoerリストにないので、これはオプションではありません。

試み - パイプを使用してパスワードを渡すことは、誤ったタイプのために機能しません"su must be used from terminal"。 - エコーされた内容を使用してパスワードを渡すと、echo パスワードを入力した後にのみ表示されます。

答え1

「一行スタイル」を行います。

expect -c 'spawn su - ;expect Password:;send "your-password\n";interact'

出力を確認して、su -パスワードをキャプチャするために使用する正しいフレーズであることを確認してください。ここではLinux翻訳を使用しているため、単語は「Password:」ではなく「Senha:」でなければなりません。

  • expect -c ''処置: このコマンドに対して以下を実行してください。
  • spawn su -: このコマンドを実行
  • expect Password:パスワードという言葉が何かをすると予想
  • send "your-password\n":パスワードを入力してEnterを押します。
  • interact:コマンドを対話的に準備されたままにします。

答え2

expectあなたはあなたのために仕事をするために使用することができます。以下をファイルに保存し、実行可能にしてから実行します。

#!/usr/bin/expect
spawn su
expect "Password:"
send "YOUR_PASS\n"
interact

(もちろん正しいパスを指定する必要がありますexpect/usr/bin/expectこれを例として使用しています。)

ルートパスワードが正しい場合は、YOUR_PASSルートシェルが作成された可能性があります。そうでない場合は、認証に失敗したメッセージが表示されます。

interactこのコマンドは、完全に自動化されたスクリプトコンテキストでは必要ない場合があります。プロセス制御権をユーザーに渡すからです。つまり、現在のプロセスにキーストロークを送信し、stderrとstderrを返します。

man expectspawn、、、expectおよびsendその他のいくつかのコマンドinteractの詳細については、参考資料を参照してください。

関連情報