SUIDとsudoの悪用
設定ミス
「SUIDとsudoの悪用」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
SUIDビット
SUID権限ビットが設定されていると、ファイルは起動したユーザーではなく、ファイルの所有者の権限で実行されます。所有者がrootの場合、SUIDバイナリはrootとして実行されます。これはpasswdのようなツールには便利ですが、悪用されると危険です。
-rwsr-xr-x 1 root root /usr/bin/passwd
# the s in rws = SUID bitSUIDバイナリの発見
すべてのSUIDファイルを列挙し、安全性が確認された基準と比較します。テキストエディタ、インタープリタ、カスタムバイナリなど、通常とは異なるものは候補になります。
find / -perm -4000 -type f 2>/dev/nullGTFOBins
GTFOBinsは、標準的なUnixバイナリにSUID権限やsudo権限が与えられた場合に、それらを悪用して制限を抜け出したり、権限を昇格したり、ファイルを読み書きしたりする方法をまとめたカタログです。発見したバイナリは必ずGTFOBinsで確認してください。
# gtfobins.github.io -> search the binary nameSUID付きfindの悪用
findにSUIDビットが設定されている場合、その-execオプションでrootとしてコマンドを実行でき、即座にrootシェルを取得できます。
find . -exec /bin/sh -p \; -quit
# -p preserves the elevated privilegesSUIDによるシェルエスケープ
多くのインタープリタやページャーはシェルを起動できます。SUIDが設定されたvim、less、awk、pythonを使うと、rootシェルに移行できる場合があります。
awk "BEGIN {system(\"/bin/sh -p\")}"
# or in less: !/bin/shSudoの設定ミス
sudo -lを実行して、許可されたコマンドを一覧表示します。悪用可能なバイナリをrootとして実行できるエントリや、NOPASSWDを使用するエントリは、すぐに利用できる権限昇格の機会です。対象のコマンドはシェルである必要はありません。GTFOBinsには、多くのコマンドから抜け出す方法が示されています。
sudo -l
# (ALL) NOPASSWD: /usr/bin/vimエディタまたはページャーのSudo実行
sudo vim(またはless、more、man、nanoの派生コマンド)を実行できる場合、そのプログラム内からrootとしてシェルを起動できます。
sudo vim -c ":!/bin/sh"
# inside less: sudo less file -> !/bin/shLD_PRELOADトリック
sudoがenv_keepを通じてLD_PRELOADを保持する場合、sudoコマンドの起動時にrootとして実行される悪意のある共有ライブラリを読み込めます。
sudo -l # look for env_keep+=LD_PRELOAD
sudo LD_PRELOAD=/tmp/evil.so programSudoのバージョン脆弱性
特定のsudoバージョンには脆弱性があります。たとえば、Baron Samedit(CVE-2021-3156)のヒープオーバーフローや、-u#-1によるバイパス(CVE-2019-14287)などです。sudo --versionの結果を既知のCVEと照合してください。
sudo --version
# vulnerable < 1.9.5p2 -> Baron SameditカスタムSUIDバイナリ
開発者が、絶対パスを使わずに他のプログラムを名前で呼び出すカスタムSUIDヘルパーを提供することがあります。PATHを制御できる場合、その呼び出しを乗っ取ることができます。これは、次に扱うPATH悪用の手法につながります。
強化と倫理
防御側はSUIDバイナリを最小限にし、絶対パスを使用し、早い段階で権限を降格し、厳格なルールでsudoを最新の状態に保つ必要があります。テスターは、認可された範囲内でのみこれらを悪用してください。
クイックチェック
SUIDとsudoに関する知識を確認しましょう。
まとめ
SUIDとsudoの悪用について学びました。
- SUIDはバイナリを所有者(多くの場合root)として実行する
- 発見したバイナリをGTFOBinsで確認する
- SUIDやsudoが設定された
find、vim、awk、lessからシェルエスケープできる - LD_PRELOADやsudoのCVE(Baron Samedit)でも権限を昇格できる
次は、cronジョブとPATH悪用について学びます。
AI チューターと学ぶ Ethical Hacking Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 31
- レッスン
- 111
よくある質問
「SUIDとsudoの悪用」レッスンは無料ですか?
はい。「SUIDとsudoの悪用」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「SUIDとsudoの悪用」で何を学びますか?
設定ミス ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「SUIDとsudoの悪用」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 列挙
- SUIDとsudoの悪用
- CronジョブとPATH
- カーネルエクスプロイト