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

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

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

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

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

Категории

Все категории
Loading categories
vsftpd-cmds-denied-alias — vsftpd 3.0.5 — высокий уровень — удалённо — остаточная привилегия — cmds_denied пропускает псевдонимы RFC (XRMD) | Kitploit
Инструменты/GitHubGitHub/abraxas/vsftpd-cmds-denied-alias
Оборонительные ИнструментыАнализ уязвимостейЭксплуатацияАудит конфигурацииСетевая безопасностьТестирование на ПроникновениеСтатьи и ИсследованияЛаборатории и Практика

Популярное

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

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

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

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

Смотреть все инструменты →
GitHub
abraxas/vsftpd-cmds-denied-alias

vsftpd-cmds-denied-alias

vsftpd 3.0.5 — высокий уровень — удалённо — остаточная привилегия — cmds_denied пропускает псевдонимы RFC (XRMD)

Репозиторий
299 дней назадЕщё не проверено
Поделиться

Abraxas Labs - vsftpd-cmds-denied-alias

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vsftpd-cmds-denied-alias

Разбор: https://abraxaslabs.tech/research/vsftpd-cmds-denied-alias

vsftpd-cmds-denied-alias

Класс: Остаточные привилегии Доступ: Удалённый

vsftpd 3.0.5 - Chris Evans

Я зафиксировал официальный tarball, а не зеркало на GitHub и не форк из дистрибутива. SHA-256 26b602ae454b0ba6d99ef44a09b6b9e0dfa7f67228106736df1f278c70bc91d3. vsftpver.h VSF_VERSION "3.0.5".

cmds_denied — это точное совпадение токена в верхнем регистре в process_post_login (postlogin.c:140-184). Затем диспетчеризация объединяет через OR псевдонимы RFC 775 на те же обработчики: RMD||XRMD (:263-264), а также CWD||XCWD, MKD||XMKD, PASV||P@SW, плюс отдельные EPSV / STOU / APPE. Оператор, который вносит RMD в денилист (распространённый рецепт DELE,RMD), всё равно разрешает rmdir через XRMD.

Эта остаточная привилегия — нарушение целостности аутентифицированного FTP в рамках денилиста, который оператор считал закрытым. Это не unauth, не root, не побег из chroot и не RCE.

IDCVE пока нет
КлассОстаточные привилегии (cmds_denied точный токен)
ДоступУдалённый (аутентифицированный FTP)
CWECWE-863
CVSSВысокий: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
Продуктvsftpd (Chris Evans)
Затронутоvsftpd 3.0.5 официальный tarball
АутентификацияFTP USER/PASS (лаборатория: анонимный ftp)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:18720

Что может сделать атакующий

Кто: аутентифицированный FTP-пользователь (анонимный или локальный) на демоне, где оператор задал cmds_denied. По умолчанию не задано. Рецепты для виртуальных пользователей, упомянутые в man-странице, используют общий guest uid, поэтому Unix DAC не может их разделить. Сессия уже работает под сопоставленным uid внутри обычного chroot. cmds_denied был дополнительным контролем, который должен был отнять команду.

Целостность (доказано в лаборатории)

Метод + приёмникПривилегия
XRMD labdir после cmds_denied=RMDhandle_rmd -> str_rmdir каталога, который uid сессии может удалить через Unix-rmdir. Лаборатория: RMD labdir 550, XRMD labdir 250, CWD labdir 550 (каталог удалён). Последующий MKD labctrl по-прежнему 550 на RMD.

Целостность (выведено из того же точного совпадения токена; не проверено в лаборатории)

Метод + приёмникПривилегия
XMKD dir после cmds_denied=MKDhandle_mkd -> mkdir от имени uid сессии
XCWD path после cmds_denied=CWDhandle_cwd -> chdir. Затем RETR, если включён download_enable
STOU / APPE после cmds_denied=STORhandle_upload_common создание / дозапись. Требуется write_enable
EPSV / P@SW после cmds_denied=PASVhandle_pasv открывает слушатель данных, который денилист должен был остановить

В лаборатории доказан только XRMD после RMD. Остальные псевдонимы используют ту же проверку str_equal и тот же OR в диспетчеризации. Я их не проверял.

Разведка

Отсутствует как полноценная остаточная привилегия. cmds_denied — это не скрытие. XRMD не выводит имена.

Доступность

Не входит в рамки. Удаление каталога — это удар по целостности. Последующий CWD / RETR этого имени возвращает 550 как побочный эффект.

Чего эта остаточная привилегия не даёт

  • Неаутентифицированный cmds_denied (до входа игнорируется; USER/PASS/QUIT остаются в таблице до входа)
  • Root
  • Побег из Chroot (allow_writeable_chroot по умолчанию выключен; лаборатория пишет только в /incoming, поэтому запрет сохраняется)
  • cmds_allowed с отказом по умолчанию: не перечисленные команды, включая XRMD, остаются 550
  • write_enable=NO по-прежнему блокирует семейство записи (STOR/MKD/RMD/DELE/RNFR/RNTO/SITE/APPE/STOU)
  • Unix DAC, когда пользователи не имеют общего uid
  • Обход регистра SITE vs site (ftpcmdio.c str_upper)
  • cmds_denied=CHMOD никогда не совпадает; отключите chmod через chmod_enable=NO или cmds_denied=SITE

Как я это нашёл

Я искал hide/deny/cmds_denied в официальной версии 3.0.5. Проверка — это один проход по токенам, разделённым запятыми, и str_equal против команды в верхнем регистре. Внутри handle_rmd второй проверки нет. RFC 775 по-прежнему поставляет XRMD как RMD. Распространённый совет — cmds_denied=DELE,RMD. Эта строка никогда не называет XRMD.

Неверный путь: считать SITE vs site обходом. Команды приводятся к верхнему регистру. То же самое с cmds_allowed: этот список работает с отказом по умолчанию, поэтому псевдонимы, которые не перечислены, остаются запрещёнными.

Лаборатория

cd lab
./run.sh

Loopback 127.0.0.1:18720. Проект Compose vsftpd-cmds-denied-alias. Официальный tarball 3.0.5 в lab/ (SHA-256 выше). cmds_denied=RMD, write_enable=YES, анонимный доступ, запись только в /incoming. Свидетель VSFTPD-CMDS-DENIED-ALIAS-WITNESS. Последняя строка:

SUCCESS vsftpd-cmds-denied-alias rmd=550 xrmd=250 dir-gone=yes VSFTPD-CMDS-DENIED-ALIAS-WITNESS

Исправление

Запретите псевдонимы RFC при запрете современного глагола или сопоставьте псевдонимы в cmds_denied (XCWD / XMKD / XRMD / XPWD / XCUP / P@SW / EPSV / STOU / APPE). Предпочтите cmds_allowed (список разрешённых).

Приём сообщений об уязвимостях: [email protected] (vsftpd). Неоплачиваемо. Не открывайте публичный issue на GitHub в любом зеркале vsftpd.

Контакты

Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]

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