私はここで非常に珍しい状況にあります。 sudoまたはsuコマンドを持たない古いLinuxシステムがあります。このコンピュータに物理的にアクセスできないため、他のユーザーとしてログインできません。
Linuxカーネルは2.6.18-498で、システムはred-hat 4.1.2-55です。
/binディレクトリに移動すると、そこにsuまたはsudoバイナリがないと確信できます。したがって、これは誤って設定されたPATH変数の場合ではありません。
これもWebサーバーなので、そのように構成されている可能性があります。他のユーザーでコマンドを実行する方法はありますか?どんな助けでも大変感謝します。
答え1
in.telnetd
実行中のリモートログインサービス(、、、rlogind
)があることを確認し、sshd
ローカルホスト(127.0.0.1)に対して適切なログインコマンドを実行します。たとえば、次のような場合がありますsshd
。
$ ssh [email protected]
あなたと一緒に走るtelnet
:
$ telnet -l root 127.0.0.1
あなたと一緒に走るrlogin
:
$ rlogin -l root 127.0.0.1
答え2
set-uid または set gid-bit を使用するすべてのコマンド。所有するユーザーまたはグループとして実行されます。しかし、正しく書かれてはいけないことをすることはできません。sudo
また、su
正しいパスワードを入力した場合にのみ重要な操作を実行できます。他のほとんどのツールは1つのタスクのみを安全に実行しますが、権限を上げることはできません。
ただし、rootとしてリポジトリに書き込むことができる場合(メディアを削除して別のコンピュータに挿入するか、別のオペレーティングシステムから起動して)、適切な権限を使用して必要なファイルを追加できます。
set-uid/set-gid ビットを持つ実行可能ファイルは次のとおりです。ただUnixシステムで権限を向上させる方法(最新システムには機能がありますが、機能は同じです)
カーネルはパスワードを使用しないため、パスワードを実装するには、ルート所有者とset-uidビットセットを使用して実行可能ファイルを作成する必要があります。実行可能ファイルはパスワードを確認し、ユーザーを適切に設定してシェル(または他のもの)を起動します。
関数が使用されていないと仮定すると、find / -executable -type f -user root -perm -u+s -print 2>/dev/null
すべての拡張実行ファイルが(少なくとも一時的に)リストされ、ほとんど(おそらくすべて)は役に立たなくなります。