NFS no_root_squash/no_all_squash misconfiguration PE
Прочитайте файл _ /etc/exports _, якщо ви знайдете деякий каталог, який налаштований як no_root_squash, тоді ви можете отримати доступ до нього як клієнт та записувати всередину цього каталогу так, ніби ви були локальним root машини.
no_root_squash: Ця опція в основному надає права користувачеві root на клієнті для доступу до файлів на сервері NFS як root. Це може призвести до серйозних проблем з безпекою.
no_all_squash: Це схоже на опцію no_root_squash, але застосовується до користувачів, які не є root. Уявіть, що у вас є оболонка як користувач nobody; перевірте файл /etc/exports; присутня опція no_all_squash; перевірте файл /etc/passwd; емулюйте користувача, який не є root; створіть suid-файл як цей користувач (монтування за допомогою nfs). Виконайте suid як користувач nobody та станьте іншим користувачем.
Підвищення привілеїв
Віддалене використання
Якщо ви знайшли цю уразливість, ви можете її використати:
Підключення цього каталогу на клієнтській машині, та як root копіювання всередину підключеного каталогу бінарний файл /bin/bash та надання йому прав SUID, та виконання з потерпілої машини цього баш-бінарного файлу.
Монтування цієї директорії на клієнтській машині, і як root копіювання всередину змонтованої папки нашого скомпільованого виконавчого файлу, який використовуватиме дозвіл SUID, надати йому права SUID, і виконати з жертви машини цей бінарний файл (ви можете знайти тут деякі C SUID виконавчі файли).
Локальний експлойт
Зверніть увагу, що якщо ви можете створити тунель з вашої машини на машину жертви, ви все ще можете використовувати віддалену версію для експлуатації цього підвищення привілеїв, перенаправляючи необхідні порти.
Наступний трюк в разі, якщо файл /etc/exports
вказує на IP-адресу. У цьому випадку ви не зможете в будь-якому випадку використовувати віддалений експлойт і вам доведеться зловживати цим трюком.
Ще одним обов'язковим вимогом для успішної роботи експлойту є те, що експорт всередині /etc/export
має використовувати прапорець insecure
.
--Я не впевнений, що якщо /etc/export
вказує на IP-адресу, цей трюк буде працювати--
Основна інформація
Сценарій полягає в експлуатації підключеного NFS-ресурсу на локальній машині, використовуючи уразливість у специфікації NFSv3, яка дозволяє клієнту вказати свій uid/gid, що потенційно дозволяє несанкціонований доступ. Експлуатація включає використання libnfs, бібліотеки, яка дозволяє фальсифікувати виклики RPC NFS.
Компіляція бібліотеки
Кроки компіляції бібліотеки можуть вимагати коригувань залежно від версії ядра. У цьому конкретному випадку виклики системи fallocate були закоментовані. Процес компіляції включає наступні команди:
Проведення Використання Уразливості
Використання полягає у створенні простої програми на C (pwn.c
), яка підвищує привілеї до root та виконує оболонку. Програма компілюється, а отриманий бінарний файл (a.out
) розміщується на спільному ресурсі з suid root, використовуючи ld_nfs.so
для підроблення uid у викликах RPC:
Скомпілюйте код вразливості:
Розмістіть вразливість на спільному ресурсі та змініть його дозволи, підробивши uid:
Виконайте вразливість для отримання привілеїв root:
Бонус: NFShell для Прихованого Доступу до Файлів
Після отримання доступу до root, для взаємодії з NFS-ресурсом без зміни власності (щоб уникнути залишення слідів), використовується сценарій на Python (nfsh.py). Цей сценарій налаштовує uid так, щоб він відповідав uid файлу, до якого звертаються, що дозволяє взаємодіяти з файлами на спільному ресурсі без проблем з дозволами:
Виконайте так:
Посилання
Last updated