Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2023-0386-OverlayFS — Копирование фейковых файлов из памяти на диск с использованием overlayFS | Kitploit
Инструменты/GitHubGitHub/pwncone/cve-2023-0386-overlayfs
Повышение привилегийАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubpwncone/cve-2023-0386-overlayfs

CVE-2023-0386-OverlayFS

Копирование фейковых файлов из памяти на диск с использованием overlayFS

Репозиторий
32 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2023-0386 - OverlayFS / FUSE

Оригинальный источник CVE, написанный xkaneiki: https://github.com/xkaneiki/CVE-2023-0386/tree/main

Переписано так, чтобы эксплойт можно было запустить в одной оболочке (оригинальный эксплойт требует двух оболочек).

root@kitploit:~
# Compile
make all
# Create mount point for fuse filesystem
mkdir -p /tmp/fusepwn/lower
# Start fuse (which serves a SUID binary)
./fuse /tmp/fusepwn/lower
# Run exploit (which copies fuse's fake SUID binary onto disk with real SUID privs via overlayfs)
./exp
# Run shell
/tmp/fusepwn/upper/bin

Очистка

root@kitploit:~
# unmount fuse filesystem
fusermount -u /tmp/fusepwn/lower
# remove all 
rm -rf /tmp/fusepwn
# unmount overlayfs (root only. not required)
umount /tmp/fusepwn/merge

Примечания

  • Используйте findmnt для просмотра смонтированных файловых систем
  • Монтирование overlayfs видно только root (непонятно почему)

Как это работает

fuse.c создаёт файловую систему FUSE, смонтированную в /tmp/fusepwn/lower, и предоставляет поддельный SUID-бинарь, принадлежащий root. Это файловая система в памяти, поэтому мы можем указывать любые права доступа.

exp.c затем создаёт монтирование overlayfs в /tmp/fusepwn и открывает поддельный SUID-бинарь (/tmp/fusepwn/lower/bin). При открытии это вызывает в overlayfs операцию copy-up, которая записывает поддельный SUID-бинарь на диск с реальными SUID-привилегиями и владельцем root.

Уязвимость существует в overlayfs, поскольку он слепо доверяет правам доступа к файлам, которые предоставляет нижележащая файловая система. Если нижняя файловая система — это ядро, то это нормально (поскольку ею нельзя манипулировать без root-прав). Если же нижняя файловая система может изменяться пользователем, это уже проблема, потому что мы можем сообщать ложную информацию о том, какие файлы там находятся (например, используя FUSE).

Патч

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f11ada10d0ad3fd53e2bd67806351de63a4f9c3

Патч проверяет, действителен ли UID/GID файла внутри пользовательского пространства имён (user namespace). Если нет, операция copy-up завершается неудачей.

т.е.

  • мы — bob
  • мы создаём новое пространство имён, будучи root, сопоставляя 1000 (UID пользователя bob) с 0 (root) в proc/self/uid_map
  • мы пытаемся вызвать copy-up для файла, принадлежащего root
  • overlayfs проверяет сопоставление bob и видит, что пользовательское пространство имён на самом деле имеет UID 1000 (bob), а не 0 (root), как у файла, и операция copy-up завершается неудачей

Полезные ресурсы

  • Полезный блог: https://engineering.facile.it/blog/eng/write-filesystem-fuse/
  • Пример реализации FUSE: https://man.openbsd.org/fuse_main.3

Диаграмма

diagram

Скачать инструмент