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

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

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

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

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

Категории

Все категории
Loading categories
proftpd-sftp-copy-file-write — ProFTPD 1.3.9d — высокий — удалённый — остаточные привилегии / запись файла — SFTP copy-file пропускает проверку WRITE для назначения | Kitploit
Инструменты/GitHubGitHub/abraxas/proftpd-sftp-copy-file-write
Аутентификация и авторизацияАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВиртуализация для безопасностиТестирование на ПроникновениеСтатьи и ИсследованияЛаборатории и Практика

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHubabraxas/proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

ProFTPD 1.3.9d — высокий — удалённый — остаточные привилегии / запись файла — SFTP copy-file пропускает проверку WRITE для назначения

Репозиторий
2818 дней назадЕщё не проверено

Abraxas Labs - proftpd-sftp-copy-file-write

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-sftp-copy-file-write

Разбор: https://abraxaslabs.tech/research/proftpd-sftp-copy-file-write

proftpd-sftp-copy-file-write

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

ProFTPD 1.3.9d (f59f248) - proftpd.org

contrib-модуль mod_sftp объявляет copy-file, как только включён SFTPEngine (SFTP_FXP_EXT_DEFAULT). fxp_handle_ext_copy_file выполняет WRITE для назначения плюс AllowOverwrite только если pr_fsio_stat(dst) завершается успешно. Если назначение ещё не существует, эта проверка пропускается. Затем pr_fs_copy_file2 создаёт файл от имени UID сессии, в том числе в рамках <Limit WRITE> DenyAll.

FTP STOR и SFTP OPEN-write по-прежнему проходят через xfer_pre_stor, который всегда выполняет dir_check для WRITE перед созданием. Публичный Issue 2095 — обратный случай: SITE COPY пропускал READ источника. Эта остаточная уязвимость — WRITE для назначения под новым именем.

IDCVE пока нет
КлассОстаточная привилегия / запись файла
ДоступУдалённый (аутентифицированный SFTP)
CWECWE-863
CVSSВысокий: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ПродуктProFTPD
Затронуто1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_sftp
Аутентификацияаутентифицированный SFTP (SFTPEngine on)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Я зафиксировал тег v1.3.9d и изучил fxp_handle_ext_copy_file. Он выполняет диспетчеризацию PRE_CMD поддельной команды SITE COPY. mod_copy регистрирует copy_copy как CMD, а не PRE_CMD, поэтому проверка WRITE для назначения в FTP на этом пути никогда не выполняется. READ источника всегда проходит через dir_check. WRITE для назначения — нет, если только назначение уже не существует. Лаборатория — это loopback SFTP на 127.0.0.1:18710.

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

МетодТочка срабатыванияПривилегия
SFTP EXTENDED copy-file из читаемого источника в имя назначения, которое ещё не существует, в рамках <Directory> с <Limit WRITE> DenyAllpr_fs_copy_file2Целостность (подтверждено в лаборатории): создание этого файла от имени UID сессии. Разведка (подтверждено в лаборатории): SFTP READ назначения возвращает байты источника, когда READ для назначения разрешён.
То же назначение уже существуетdir_check WRITE + AllowOverwriteЗакрыто (подтверждено в лаборатории): перезапись через copy-file возвращает permission denied.
SFTP OPEN / STOR / SCP-загрузка того же назначенияxfer_pre_storЗакрыто (подтверждено в лаборатории): OPEN write/create возвращает SSH_FX_PERMISSION_DENIED (статус 3).
Неаутентифицированный copy-fileАутентификация SFTPЗакрыто. Без шелла. Unix DAC по-прежнему применяется.

Подтверждено в лаборатории vs выведено логически: создание назначения, READ назначения-свидетеля, отказ OPEN-write и отказ перезаписи существующего назначения подтверждены в лаборатории. Неаутентифицированный доступ и Unix DAC остаются выведенными из модели аутентификации/chroot.

Требуется: загруженный contrib mod_sftp, SFTPEngine on. Типичный SFTP vhost из дистрибутива. SFTPExtensions -copyFile отключает расширение.

Лаборатория

cd lab
./run.sh

Loopback 127.0.0.1:18710 сопоставляется с контейнером 2222. Проект Compose proftpd-sftp-copy-file-write. Тег образа proftpd-sftp-copy-file-write:1.3.9d. Свидетель PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS. Последняя строка:

SUCCESS PROFTPD-SFTP-COPY-FILE-WRITE dest-exists=yes open-write=denied copy-file=ok overwrite-denied=yes PROFTPD-SFTP-COPY-FILE-WRITE-WITNESS

Исправление

dir_check dest WRITE даже если dest ещё не существует, до pr_fs_copy_file2. Либо отключите расширение: SFTPExtensions -copyFile.

Ссылки

  • github.com/proftpd/proftpd тег v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • fxp_handle_ext_copy_file в contrib/mod_sftp/fxp.c
  • SFTP_FXP_EXT_DEFAULT включает copy-file
  • Обратный случай (пропуск READ для источника при FTP SITE COPY, а не этот остаточный WRITE для dest): Issue 2095
  • CWE-863
Скачать инструмент