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

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

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

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

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

Категории

Все категории
Loading categories
proftpd-rewrite-utf8trans — ProFTPD 1.3.9d — высокий — удалённый — сбой — переполнение BSS в RewriteMap int:utf8trans | Kitploit
Инструменты/GitHubGitHub/abraxas/proftpd-rewrite-utf8trans
Анализ уязвимостейЭксплуатацияФаззингСетевая безопасностьТестирование на ПроникновениеАнализ Бинарных ФайловЛаборатории и Практика
GitHubabraxas/proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

ProFTPD 1.3.9d — высокий — удалённый — сбой — переполнение BSS в RewriteMap int:utf8trans

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

Популярное

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

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

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

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

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

Abraxas Labs - proftpd-rewrite-utf8trans

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  proftpd-rewrite-utf8trans

proftpd-rewrite-utf8trans

Класс: Crash Доступ: Удалённый

ProFTPD 1.3.9d (f59f248) - ProFTPD (proftpd.org)

contrib mod_rewrite поставляет RewriteMap int:utf8trans. Этот встроенный модуль копирует клиентский FTP-аргумент (до CommandBufferSize, 512 КиБ) в два BSS-буфера по 1024 слота без ограничения размера назначения. Длинное ASCII-имя STOR приводит к ASan global-buffer-overflow WRITE размером 8. Дочерний процесс сессии аварийно завершается. Демон продолжает работу. Класс Crash. Не RCE.

IDCVE пока нет
КлассCrash
ДоступУдалённый (FTP-аргумент, передаваемый в int:utf8trans)
CWECWE-120
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, если RewriteRule срабатывает до аутентификации. В лаборатории использовался STOR после входа, поэтому для этого запуска честным является PR:L (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).
ПродуктProFTPD
Затронуто1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d) contrib mod_rewrite
Аутентификацияв лаборатории — аутентифицированный STOR. RewriteRule до аутентификации на USER или аналогичном дал бы PR:N.
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

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

RewriteEngine выключен, пока не настроен. Документированный шаблон — RewriteRule (.*) ${map:$1}. Как только RewriteRule передаёт клиентский аргумент через int:utf8trans, ключ длиннее 1024 байт переполняет два статических буфера в дочернем процессе сессии.

МетодТочка срабатыванияПривилегия
FTP-команда, аргумент которой является ключом карты utf8trans, длиной > 1024rewrite_utf8_to_ucs4, затем utf8_val[i] = ucs4_longs[i]Доступность (доказано в лаборатории): аварийное завершение дочернего процесса сессии. ASan: global-buffer-overflow WRITE of size 8, затем ABORTING. Prefork: новый вход всё ещё работал; демон продолжал работу. Короткий STOR из 200 ASCII-байт выжил. Целостность соседних rewrite BSS предполагается и зависит от раскладки компилятора.
RIP / выполнение кодане заявленоЗакрыто. Нет полезной нагрузки. Класс Crash. Не RCE.
Подкладка RewriteMap через .ftpaccessCONF_DYNDIRЗакрыто. RewriteMap не разрешён в .ftpaccess.
prg: shellтакого типа карты нетЗакрыто. FIFO — это построчный ввод-вывод.

Доказано в лаборатории vs предполагается: ASan WRITE размером 8, аварийное завершение дочернего процесса сессии, выживание контроля с коротким аргументом и вход после срабатывания — доказаны в лаборатории. RIP/RCE не заявлено.

Issue 2173 исправил однобайтовый OOB в int:unescape на этом пине. Этот остаток — int:utf8trans. Другой встроенный модуль. Другой баг.

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

Я зафиксировал тег v1.3.9d в proftpd/proftpd. Урожай CVE 2026 года и публичные GitHub issues, всё ещё присутствующие в этом архиве (2170, 2173, 2175, 2180, 2095, 2256, 2286, 2319, 2330, 2301), были списком пропуска. Стандартный core FTP с примером basic.conf не дал мне неопубликованного Crit/High. Contrib rewrite дал.

rewrite_map_int_utf8trans (contrib/mod_rewrite.c) содержит:

static unsigned char utf8_val[PR_TUNABLE_BUFFER_SIZE];   /* 1024 */
static unsigned long ucs4_longs[PR_TUNABLE_BUFFER_SIZE]; /* 1024 */
ucs4strlen = rewrite_utf8_to_ucs4(ucs4_longs, strlen(key), (unsigned char *) key);

rewrite_utf8_to_ucs4 записывает один unsigned long на каждый ASCII-байт без ограничения. PR_TUNABLE_CMD_BUFFER_SIZE равен 512 КиБ. Issue 2173 уже исправил unescape. Эта карта не входила в то исправление.

Неверные повороты: считать 2173 этим багом; заявлять RIP, потому что ASan сказал WRITE размером 8; надеяться, что .ftpaccess сможет подложить RewriteMap. Первое — другая функция. Второе — всё ещё Crash. Третье — CONF_DYNDIR.

ASan вместе со стоковым libcrypt вызывает SIGSEGV на PASS до точки срабатывания rewrite. Лаборатория предзагружает крошечную заглушку crypt(3), чтобы вход работал. Эта заглушка не является эксплойтом.

Лаборатория

python3 proftpd-rewrite-utf8trans-Abraxas-Labs.py

или:

cd lab
./run.sh

Loopback 127.0.0.1:18740 плюс пассивный диапазон 18741-18750. Compose-проект proftpd-rewrite-utf8trans. Свидетель PROFTPD-REWRITE-UTF8TRANS-WITNESS. Образ — это ASan-сборка 1.3.9d mod_rewrite. Контрольный STOR из 200 ASCII-байт успешен. STOR из 2048 ASCII-байт — это ASan global-buffer-overflow WRITE размером 8, и дочерний процесс сессии аварийно завершается. Новый вход после срабатывания всё ещё работает.

SUCCESS PROFTPD-REWRITE-UTF8TRANS asan=global-buffer-overflow write=yes child-dead=yes PROFTPD-REWRITE-UTF8TRANS-WITNESS

Исправление

Ограничить длину назначения в rewrite_utf8_to_ucs4 значением PR_TUNABLE_BUFFER_SIZE-1. Прекратить запись за пределы ucs4_longs / utf8_val. Отклонять или усекать ключ карты, который не помещается.

Ссылки

  • github.com/proftpd/proftpd тег v1.3.9d (f59f248e26bdfa514443e42bf72a145641df635d)
  • contrib/mod_rewrite.c rewrite_utf8_to_ucs4 / rewrite_map_int_utf8trans
  • Рядом исправлено (не эта карта): Issue 2173 int:unescape
  • CWE-120

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только loopback-лаборатория. Без гарантий.

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