背景
ホワイトハッキングを学ぶ上で、権限昇格をしてプログラム実行を度々するが、その都度ファイルの権限を調べながらやっていたので、ここいらで一旦自分ようにまとめる。
まずはファイルの権限を確認
$ ls -l test.py
-rw-r--r-- 1 user staff 21 6 27 17:49 test.py
知りたいの -rw-r--r-- がどういう意味なのか。
パーミッションの読み方
最初の1文字目ファイル種別を表しています。
種別 | 意味 |
---|---|
- | ファイル |
d | ディレクトリ |
l | シンボリック |
2文字目から4文字目はファイルの所有者に対する権限を表します。
5文字目から7文字目はファイルの所有グループに対する権限を表します。
8文字目から10文字目はその他に対する権限を表します。
r, w, xのはファイルに対する権限を表している。
権限 | 意味 |
---|---|
r | 読み取り |
w | 書き込み |
x | 実行 |
よってさっきのtest.pyは
- ファイル種別は「ファイル」
- 所有者に「読み取り」と「書き込み」の権限がある
- 所有グループに「読み込み」の権限がある
- その他のユーザーに「読み込み」の権限がある
SUID(Set User ID)
特殊なアクセス権にSUIDがあります。
以下「s」のことです。
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 1月 7 2007 /usr/bin/passwd
SUIDは実行件のあるファイルに設定される特殊はアクセス権です。
通常は実行ファイルを実行すると、そのファイルを実行した ユーザー権限 で実行される。しかしSUIDが設定されたファイルでは、その実行ファイルの 所有者のアカウント権限で実行される。
アクセス権限の変更
先ほどのパーミッションの変更方法をまとめます。
chmodコマンドを使います。
$ chmod 764 test.py
-rwxrw-r-- 1 user staff 21 6 27 17:49 test.py
みたいに使います。
chmodのオプション(上の764のこと)の求め方を説明します。
r,w,xがあったらそらぞれ1, なかったら0と2進数またはそれを元に8進数で表します。
-rwxrw-r--
- rwx: 111 → 7
- rw-: 110 → 6
- r--: 100 → 4
drwxr-xr-x
- rwx: 101 → 7
- r--: 100 → 4
- r-x: 101 → 5
drwxrwxrwx
- rwx: 111 → 7
- r--: 111 → 7
- r-x: 111 → 7
これは全ての権限を与えるといこと。
自分の基本属性を確認
書式
id [OPTION]... [USER]
OPTION | 意味 |
---|---|
-a | 詳細情報を表示 |
-Z --context | セキュリティコンテキスト情報 |
-g --group | メイングループID(GID) |
-G --groups | 全グループID(メイングループとサブグループID) |
-n --name | ユーザー名またはグループ名 |
-u | UIDのみ |
$ id
uid=1000(kali) gid=1000(kali) groups=1000(kali),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),101(netdev),117(bluetooth),121(wireshark),127(scanner),134(kaboxer)
$ id -a
uid=1000(kali) gid=1000(kali) groups=1000(kali),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),101(netdev),117(bluetooth),121(wireshark),127(scanner),134(kaboxer)
$ id -u
1000
$ id -g
1000
$ id -G
1000 4 20 24 25 27 29 30 44 46 100 101 117 121 127 134
$ id -u
1000