はじめに
特権昇格の第一歩としてSUIDがセットされたプログラムを探すことがあります。
HackTheBoxやTryHackMeでもよく使用します。
その際のコマンドを紹介します。
結論
find / -user root -perm -4000 2>&1 | grep -v -e "Permission denied" -e "No such file or directory"
を実行する。
2024/05/08追記
find / -perm -u=s -type f 2>/dev/null
上記コマンドもスッキリしていて良いかもしれない
出力結果はほぼ同じ
SUIDとは
SUIDはLinuxで使用されるパーミッションの一つです。
SUIDが設定されたプログラムは、プログラムを所有するユーザーの権限で実行されます。
例えば、パスワードを変更するpasswd
コマンドは、通常はrootユーザーのみが実行できますが、SUIDが設定されている場合、通常のユーザーでもroot
ユーザー権限でパスワードを変更できます。
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 63960 2月 7 2020 /usr/bin/passwd
この権限設定の不備を攻撃者は悪用し特権昇格へと繋げます。
SUIDの検索
SUIDを検索する際のコマンドを紹介します。
$ find / -user root -perm -4000 2>&1 | grep -v -e "Permission denied" -e "No such file or directory"
- find /
- ルートディレクトリ配下の全てを検索
- -user root
- root が所有するファイルを表示する
- -perm -4000
- SUIDビットがセットされたファイルだけを表示する
- 2>&1
- 解説はこの記事がわかりやすいと思います
- grep -v -e "Permission denied" -e "No such file or directory"
- 出力から
Permission denied
とNo such file or directory
のワードを除去します
- 出力から
結果、SUIDビットがセットされたプログラムファイルのみ表示されます。
$ find / -user root -perm -4000 2>&1 | grep -v -e "Permission denied" -e "No such file or directory"
/usr/bin/fusermount3
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/mount
/usr/bin/su
/usr/bin/umount
/usr/bin/pkexec
/usr/bin/fusermount
/usr/bin/crontab
/usr/bin/sudo
/usr/bin/passwd
(省略)
find / -user root -perm -4000 -exec ls -l {} \;>/tmp/result
のように実行すると、プログラムファイルをls -l
形式で出力し、結果を/tmp/result
ファイルに保存します。
参考サイト