私はルートですが、パスワードがわかりません。制限をバイパスするには、/bin/のバイナリを置き換えます。

私はルートですが、パスワードがわかりません。制限をバイパスするには、/bin/のバイナリを置き換えます。

アクティブなルートアカウントがありますが、パスワードがわかりません。

自分のパスワードを変更したり、ツールを使用して別のユーザーを作成したりするには、自分passwdのパスワードを知る必要があります。これにより問題が発生します。しかし、私はルートなので、/bin/ディレクトリ内の任意のバイナリを置き換えることはできますか?passwdソースコードを修正してコンパイルしたら、ソースを新しいコードに置き換えます。本当にそう簡単ですか?予防策はありますか?

私のテストシステムは次のとおりです。FreeBSD 11.0+Ubuntu 18.04

答え1

私が見たほとんどのLinuxは、従来のパスワードを要求しないように設定されていpasswdます。root

root@xxx ~# passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

尋ねるか手動で編集してもpasswd試すことができます(パスワードのハッシュは2番目のフィールド、2つのコロン間の長い文字の紹介)、まずハッシュを計算する必要があります。これを行うツールは次のとおりです。chpasswd/etc/passwd/etc/shadowopenssl

$ echo foobar | openssl passwd -1 -stdin
$1$G/nr44th$wn16q7ITSvfrNq4amDfzn1

(実際にはMD5ベース$1$ハッシュを使用してはいけませんが、少なくとも既知の値にリセットしてハッシュを変更するために使用できるため問題ありませんpasswd。)

関連情報