Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86370628

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x00はじめに

この記事では、「ユーザーのルートアクセス許可を作成または変更するためにファイルを変更する /などを変更するさまざまな方法」を学習します。時々、ターゲットが攻撃されたら、許可エスカレーションのために /etc /passwdファイルで自分のユーザーを編集する方法を知る必要があります。このトリックを許可エスカレーションに適用します。以下のリンクを開きます:

リンク1:ハックThe Box Challenge3: Apocalyst Walkthrough

リンク2:ハックハックデイアルバニアVM(CTFチャレンジ)

0x01基本

まず、権限を提起する前に、 /etc /passwdファイルを深く理解する必要があります。 ETCディレクトリでは、PassWD、グループ、Shadowという3つの最も重要なファイルを取得します。

etc/passwd:ユーザーアカウントに関する情報を保存する読み取り可能なテキストファイルです

etc/group:これは、グループ情報とユーザーが属するグループを保存し、このファイルを介して識別できる読み取り可能なテキストファイルでもあります。

など/影:暗号化されたパスワードを含むファイルであり、ユーザーのユーザー情報が期限切れになります。

/passwd:ファイルの詳細情報形式

3ig1jsngipn8285.png

bldfrwvcljd8287.png

詳細な説明ユーザー名:最初のフィールドは、ユーザーにログインするために使用される名前を表します

暗号化されたパスワード: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コマンドから開いて、システム内の現在利用可能なユーザーを表示します

xk0qla4grob8289.png

上記のスクリーンショットから、「Raj」がUID 1000を使用する最後のユーザーであることがわかります。ここでは、GID 1000は非システムユーザーであることを意味します。

Adduserコマンドを使用してユーザーを追加するときは、 /passwdファイルで実際に何が起こるか見てみましょう。したがって、ここでは、スクリーンショットとともに以下の情報をはっきりと見ることができます。

adduser user1username: user1

GID: 1002

UID: 1001

Password:任意のパスワードを入力します

Home Directory: /home /user1

Gecosが提出しました:フルネーム(フルネーム)、部屋番号(ドア番号)、職場電話(職場電話)、自宅の電話(自宅の電話)、その他

my4j5guv2nk8291.png

/passwdファイルを開くと、上記のすべての情報が /etc /passwdファイルに保存されていることに気付くでしょう

jjpvcq1bhhb8293.png

2./etc/passwdファイルは、ユーザーを手動で編集しています

一般的に言えば、通常のユーザーは、PassWDファイルに読み取り専用のアクセス許可を持っていますが、ユーザーも読み取り/書き込み許可を持っている場合があります。この場合、上記の理論を使用して、 /etc /passwdファイルに独自のユーザーを追加できます。

user2:*:100233601003:/home/user2:/bin/bash

*(アスタリスク)シンボルは、ユーザー2の空のパスワードを示します。

rqllh0ptlm28294.png

gid1003をuser2に割り当てたため、 /etc /groupファイルでも処理する必要があります

次の形式に従ってください。

構文:username:x:gid

パスワードがないため、xで *シンボルを使用します

user2:*:1003:

ou1pm1zdmlc8295.png

次に、passwdコマンドを使用してuser2のパスワードを設定し、パスワードを入力します。

passwd user2

ea5mstl4zs48296.png

Adduserコマンドを使用せずに新しいユーザーユーザー2を手動で作成したため、 /etc /Shadowファイルに情報は見つかりませんでした。ただし、 *シンボルが暗号化されたパスワード値に置き換えられた /etc /passwdファイルにあります。このようにして、許可のエスカレーションのために独自のユーザーを作成できます。

0nr3ztwwiq58297.png

3.Openssl

ユーザーのパスワードを設定するためにPassWDコマンドを実行できない場合があります。この場合、OpenSSLコマンドを使用して、塩を使用して暗号化されたパスワードを生成します。

OpenSSL PASSWDは、SALT STRINGとMD5ベースのBSDパスワードアルゴリズムを使用して、指定されたパスワードのハッシュ値を計算します。

構文:opensSl passwd-1-salt [塩値]パスワード

openssl passwd -1 -salt user3 pass123

zu4zkxeg1vw8298.png

暗号化されたパスワードを取得し、端末にVIPWコマンドを入力して /passWDファイルを開き、ユーザー名を手動で追加します。新しいユーザーユーザー3を追加する手動の手順に従って、 *またはxで暗号化された値を貼り付けてパスワードを取得します。

以下の画像では、UID:0とGID:0、およびHome Directory /Root /Rootを割り当てたため、ユーザーユーザーにルートアクセス許可が与えられていることがわかります。

stf0t2ruton8299.png

ユーザーを切り替えて、user3を介して端末にアクセスし、ルートアクセスを確認します。

suuser3

おっと

id

Yesssssssは、ルート許可を得てアクセスを意味します

注:他のユーザーのパスワードを、x:を独自の暗号化されたパスワードに置き換えて、パスワードでそのユーザーアカウントにログインすることもできます。

dcceoncrueh8300.png

4.mkpasswd

mkpasswdは、指定されたパスワード文字列のハッシュ値を生成するOpenSSL PassWDに似ています。

構文:mkpasswd -m [ハッシュタイプ] {パスワード}

mkpasswd -m sha -512パス

34dcsohf5cb8301.png

パスワード文字列のハッシュ値を生成したり、上記の手順を繰り返したり、他の既存のユーザーのパスワードを変更したりします。

user1の情報を比較している場合は、違いにも気付くことができます。ハッシュ値から: x:を置き換えました。

mgautzgd3j18302.png

ここでユーザーを切り替えてユーザー1を介して端末にアクセスし、ルートアクセス許可を確認します

su user1

おっと

id

非常に優れており、ルート許可で正常にアクセスできます

rhxn0g4zdzs8303.png

5.python

Pythonを使用すると、Crypt Libraryをインポートしてパスワードに塩を追加できます。これにより、塩値を含む暗号化されたパスワードが作成されます。

python -c 'cryptをインポートします。 crypt.crypt( 'pass'、 '$ 6 $ SALT') '

py0rlxse5ko8304.png

パスワード文字列のハッシュが生成され、上記の手順を繰り返すか、他の既存のユーザーのパスワードを変更します。 user2の情報を比較している場合は、違いにも気付くことができます。古いハッシュを新しいハッシュから交換しました。

a1a5a4y12kb8305.png

ユーザーを切り替えて、user2を介して端末にアクセスし、ルートアクセスを確認します。

su user2

おっと

id

PWD

sudo -l

また、 /home /user2ディレクトリのメンバーになる前に権利を調達することもできますが、 /rootディレクトリのメンバーになった後、ルートユーザーのすべての特権があることに気付くことができます

kwqq3wkugps8306.png

6.perl

同様に、PerlとCryptを使用して、塩値を使用してパスワードのハッシュ値を生成できます。

Perl -Le 'Print Crypt(' pass123 '、' abc ')'

nwkd1fwt02i8307.png

暗号化されたパスワードを取得し、端末にVIPWコマンドを入力し、ユーザー名を手動で追加し、 /passWDファイルを再度開きます。新しいユーザーユーザー4を追加して、暗号化された値を場所*またはxに貼り付けてパスワードを取得する手動の手順に従ってください。

以下の画像では、UID:0とGID:0とホームディレクトリ/ルート/ルートを割り当てたことがわかります。

khe2pwb4i2r8308.png

ここで、ユーザーを切り替えて、user4を介して端末にアクセスし、ルートアクセスを確認します。

su user4

おっと

id

非常に良いことに、この方法はルート許可を取得することもできます。

1vy1zfw2pkt8309.png

7.php

同様に、PHPとCryptを使用して、塩値を使用してパスワードのハッシュ値を生成できます。

php-r'print(crypt( 'aarti'、 '123')。\ '\ n \'); ' vfh5imaumqv8310.png

暗号化されたパスワードを取得し、端末にVIPWコマンドを入力して /passWDファイルを開き、ユーザー名を手動で追加します。新しいユーザーユーザー5を追加する手動の手順に従って、暗号化された値をパスワードフィールドに貼り付けます。

下の画像では、UID:0とGID:0とホームディレクトリ/ルート/ルートを割り当てたことがわかります。

1gfzf3k4h5d8311.png

ここで、ユーザーを切り替えて、user5を介して端末にアクセスし、ルートアクセスを確認します。

su user5

おっと

id

そのため、自分のユーザーにルートアクセスを追加する方法はたくさんあります。これは、どのホストでもルートアクセスを取得するのに非常に役立ちます。

wtghsyfzinb8312.png