0x00はじめに
この記事では、「ユーザーのルートアクセス許可を作成または変更するためにファイルを変更する /などを変更するさまざまな方法」を学習します。時々、ターゲットが攻撃されたら、許可エスカレーションのために /etc /passwdファイルで自分のユーザーを編集する方法を知る必要があります。このトリックを許可エスカレーションに適用します。以下のリンクを開きます:
リンク1:ハックThe Box Challenge3: Apocalyst Walkthrough
リンク2:ハックハックデイアルバニアVM(CTFチャレンジ)
0x01基本
まず、権限を提起する前に、 /etc /passwdファイルを深く理解する必要があります。 ETCディレクトリでは、PassWD、グループ、Shadowという3つの最も重要なファイルを取得します。
etc/passwd:ユーザーアカウントに関する情報を保存する読み取り可能なテキストファイルです
etc/group:これは、グループ情報とユーザーが属するグループを保存し、このファイルを介して識別できる読み取り可能なテキストファイルでもあります。
など/影:暗号化されたパスワードを含むファイルであり、ユーザーのユーザー情報が期限切れになります。
/passwd:ファイルの詳細情報形式
詳細な説明ユーザー名:最初のフィールドは、ユーザーにログインするために使用される名前を表します
暗号化されたパスワード:xは、 /Shadowファイルに実際に保存されている暗号化パスワードを表します。ユーザーがパスワードを持っていない場合、パスワードフィールドは *(アスタリスク)で表されます
ユーザーID(UID):各ユーザーにユーザーID(UID)を割り当てる必要があります。 UID 0(ゼロ)はルートユーザー用に予約されており、UID 1-99は事前定義されたアカウントのために予約されており、UID 100-999は管理目的でシステムによって予約されています。 UID 1000は、ほぼ最初の非システムユーザーであり、通常は管理者です。 Ubuntuシステムで新しいユーザーを作成すると、UID1001が与えられます
グループID(GID):各ユーザーのグループを表します。 UIDと同様に、最初の100 GIDは通常、システムで使用するために予約されています。 0のGIDはルートグループに関連しており、1000のGIDは通常ユーザーを示します。通常、新しいグループは1000からGIDを割り当てます
GECOSフィールド:通常、これはユーザーに関連する詳細を示すコンマ区切りの値のセットです。 GECOSフィールドの形式は、次の情報を表しています。
完全なユーザー名
住所と家番号または連絡先
オフィスの電話番号
自宅の電話番号
その他の連絡先情報
ホームディレクトリ:すべてのユーザーのファイルとプログラムを保存するユーザーのホームディレクトリへのパスを表します。指定されたディレクトリがない場合、 /ユーザーのディレクトリになります
シェル:コマンドを実行するデフォルトシェルへのフルパス(ユーザーによって)を表し、結果を表示します
注:各フィールドは(コロン)で区切られています
0x02パワーアップスキル
1.ユーザーを追加するための定義メソッド
最初に /etc /passwdファイルをCATコマンドから開いて、システム内の現在利用可能なユーザーを表示します
上記のスクリーンショットから、「Raj」がUID 1000を使用する最後のユーザーであることがわかります。ここでは、GID 1000は非システムユーザーであることを意味します。
Adduserコマンドを使用してユーザーを追加するときは、 /passwdファイルで実際に何が起こるか見てみましょう。したがって、ここでは、スクリーンショットとともに以下の情報をはっきりと見ることができます。
adduser user1username: user1
GID: 1002
UID: 1001
Password:任意のパスワードを入力します
Home Directory: /home /user1
Gecosが提出しました:フルネーム(フルネーム)、部屋番号(ドア番号)、職場電話(職場電話)、自宅の電話(自宅の電話)、その他
/passwdファイルを開くと、上記のすべての情報が /etc /passwdファイルに保存されていることに気付くでしょう
2./etc/passwdファイルは、ユーザーを手動で編集しています
一般的に言えば、通常のユーザーは、PassWDファイルに読み取り専用のアクセス許可を持っていますが、ユーザーも読み取り/書き込み許可を持っている場合があります。この場合、上記の理論を使用して、 /etc /passwdファイルに独自のユーザーを追加できます。
user2:*:100233601003:/home/user2:/bin/bash
*(アスタリスク)シンボルは、ユーザー2の空のパスワードを示します。
gid1003をuser2に割り当てたため、 /etc /groupファイルでも処理する必要があります
次の形式に従ってください。
構文:username:x:gid
パスワードがないため、xで *シンボルを使用します
user2:*:1003:
次に、passwdコマンドを使用してuser2のパスワードを設定し、パスワードを入力します。
passwd user2
Adduserコマンドを使用せずに新しいユーザーユーザー2を手動で作成したため、 /etc /Shadowファイルに情報は見つかりませんでした。ただし、 *シンボルが暗号化されたパスワード値に置き換えられた /etc /passwdファイルにあります。このようにして、許可のエスカレーションのために独自のユーザーを作成できます。
3.Openssl
ユーザーのパスワードを設定するためにPassWDコマンドを実行できない場合があります。この場合、OpenSSLコマンドを使用して、塩を使用して暗号化されたパスワードを生成します。
OpenSSL PASSWDは、SALT STRINGとMD5ベースのBSDパスワードアルゴリズムを使用して、指定されたパスワードのハッシュ値を計算します。
構文:opensSl passwd-1-salt [塩値]パスワード
openssl passwd -1 -salt user3 pass123
暗号化されたパスワードを取得し、端末にVIPWコマンドを入力して /passWDファイルを開き、ユーザー名を手動で追加します。新しいユーザーユーザー3を追加する手動の手順に従って、 *またはxで暗号化された値を貼り付けてパスワードを取得します。
以下の画像では、UID:0とGID:0、およびHome Directory /Root /Rootを割り当てたため、ユーザーユーザーにルートアクセス許可が与えられていることがわかります。
ユーザーを切り替えて、user3を介して端末にアクセスし、ルートアクセスを確認します。
suuser3
おっと
id
Yesssssssは、ルート許可を得てアクセスを意味します
注:他のユーザーのパスワードを、x:を独自の暗号化されたパスワードに置き換えて、パスワードでそのユーザーアカウントにログインすることもできます。
4.mkpasswd
mkpasswdは、指定されたパスワード文字列のハッシュ値を生成するOpenSSL PassWDに似ています。
構文:mkpasswd -m [ハッシュタイプ] {パスワード}
mkpasswd -m sha -512パス
パスワード文字列のハッシュ値を生成したり、上記の手順を繰り返したり、他の既存のユーザーのパスワードを変更したりします。
user1の情報を比較している場合は、違いにも気付くことができます。ハッシュ値から: x:を置き換えました。
ここでユーザーを切り替えてユーザー1を介して端末にアクセスし、ルートアクセス許可を確認します
su user1
おっと
id
非常に優れており、ルート許可で正常にアクセスできます
5.python
Pythonを使用すると、Crypt Libraryをインポートしてパスワードに塩を追加できます。これにより、塩値を含む暗号化されたパスワードが作成されます。
python -c 'cryptをインポートします。 crypt.crypt( 'pass'、 '$ 6 $ SALT') '
パスワード文字列のハッシュが生成され、上記の手順を繰り返すか、他の既存のユーザーのパスワードを変更します。 user2の情報を比較している場合は、違いにも気付くことができます。古いハッシュを新しいハッシュから交換しました。
ユーザーを切り替えて、user2を介して端末にアクセスし、ルートアクセスを確認します。
su user2
おっと
id
PWD
sudo -l
また、 /home /user2ディレクトリのメンバーになる前に権利を調達することもできますが、 /rootディレクトリのメンバーになった後、ルートユーザーのすべての特権があることに気付くことができます
6.perl
同様に、PerlとCryptを使用して、塩値を使用してパスワードのハッシュ値を生成できます。
Perl -Le 'Print Crypt(' pass123 '、' abc ')'
暗号化されたパスワードを取得し、端末にVIPWコマンドを入力し、ユーザー名を手動で追加し、 /passWDファイルを再度開きます。新しいユーザーユーザー4を追加して、暗号化された値を場所*またはxに貼り付けてパスワードを取得する手動の手順に従ってください。
以下の画像では、UID:0とGID:0とホームディレクトリ/ルート/ルートを割り当てたことがわかります。
ここで、ユーザーを切り替えて、user4を介して端末にアクセスし、ルートアクセスを確認します。
su user4
おっと
id
非常に良いことに、この方法はルート許可を取得することもできます。
7.php
同様に、PHPとCryptを使用して、塩値を使用してパスワードのハッシュ値を生成できます。
php-r'print(crypt( 'aarti'、 '123')。\ '\ n \'); '
暗号化されたパスワードを取得し、端末にVIPWコマンドを入力して /passWDファイルを開き、ユーザー名を手動で追加します。新しいユーザーユーザー5を追加する手動の手順に従って、暗号化された値をパスワードフィールドに貼り付けます。
下の画像では、UID:0とGID:0とホームディレクトリ/ルート/ルートを割り当てたことがわかります。
ここで、ユーザーを切り替えて、user5を介して端末にアクセスし、ルートアクセスを確認します。
su user5
おっと
id
そのため、自分のユーザーにルートアクセスを追加する方法はたくさんあります。これは、どのホストでもルートアクセスを取得するのに非常に役立ちます。
Recommended Comments