Sploitus

Exploit for ForgottenButNotGone

kitploit · 2026-08-27

Exploit Code

MARKDOWN43 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SAFEBREACH-LABS-FORGOTTENBUTNOTGONE
# Забытые, но не исчезнувшие

В этом репозитории содержатся proof-of-concept скрипты для уязвимостей, представленных в докладе «Forgotten but Not Gone: Unauthenticated RCEs and LPEs in Legacy Linux Services» на Black Hat USA 2026 и DEF CON 34.

## CVE-2026-28372

Локальное повышение привилегий в TelnetD: непривилегированные атакующие могут использовать функцию переменных окружения TelnetD для получения shell с правами root. Согласно проектной документации и RFC, протокол Telnet позволяет клиентам задавать переменные окружения для shell-сессии. С точки зрения безопасности эта функция была спроектирована плохо. Сервис позволял неаутентифицированным клиентам задавать переменные окружения как для самого процесса telnetd, так и для всех его дочерних процессов. Один из дочерних процессов — /usr/bin/login. Установка переменных окружения удалённым telnet-клиентом позволила нам запустить /usr/bin/login с переменной окружения «CREDENTIALS_DIRECTORY». Это заставляет процесс login искать файл с именем «login.noauth» в каталоге, указанном в «CREDENTIALS_DIRECTORY». Если файл содержит строку «yes», процесс login пропускает аутентификацию и предоставляет shell клиенту, работающий от имени пользователя, указанного клиентом. Это может быть любой пользователь, даже root.

## CVE-2026-4408

Неаутентифицированное удалённое выполнение кода в Samba через SAMR: Samba полагается на shell-команды, заданные в её конфигурационном файле (smb.conf), для выполнения различных операций по запросам клиентов, таких как добавление новой сетевой шары, добавление нового принтера и т.д. Некоторые из этих shell-команд получают параметры на основе запроса, отправленного клиентом. В большинстве случаев параметры санитизируются, а специальные символы экранируются перед выполнением команды для предотвращения внедрения в shell.

Уязвимость находится в функции «check_password_complexity», которая форматирует строку, заданную клиентом, в shell-команду без санитизации. Для возникновения уязвимости требуются два условия:

  1. «check password script» настроен на выполнение команды с параметром «%u»
  2. сервис настроен на использование последовательности протокола NCACN_IP_TCP для приёма RPC-запросов по TCP

Когда вызов достигает функции «check_password_complexity», поле «UserAccountName» из структуры «SAM_VALIDATE_PASSWORD_CHANGE_INPUT_ARG» будет использовано в качестве имени пользователя, подставляемого в параметр «%u» команды «check password script». Полная командная строка затем передаётся функции «smbrunsecret», которая выполняет её без вызова «escape_shell_string». 

Чтобы настроить RPC-демон Samba (samba-dcerpcd) на использование NCACN_IP_TCP, его необходимо запускать как отдельную системную службу, а не как часть основной службы Samba. Кроме того, параметр «rpc start on demand helpers» в конфигурационном файле должен быть установлен в «no».

## CVE-2026-4480

Неаутентифицированное удалённое выполнение кода в Samba через SPOOLSS: функция generic_job_submit также форматирует управляемую клиентом строку в shell-команду без санитизации. Комбинация следующих настроек приводит к этой уязвимости:

  1. Сервер предоставляет общий доступ к принтеру (printer share)
  2. Параметр «printing» установлен в любое значение, отличное от IPRINT или CUPS
  3. Параметр «print command» содержит «%J» для подстановки имени задания



Неаутентифицированный клиент может запросить доступ к принтеру через RPC-интерфейс spoolss. Затем можно отправить задание печати через функцию RpcStartDocPrinter. Имя документа, указанное в запросе, будет использовано как имя задания, подставляемое в параметр «%J» команды. Вызов hRpcEndDocPrinter запускает generic_job_submit, которая выполнит «print command» из конфигурации после подстановки имени задания без санитизации. Код, отправленный эксплойтом, будет выполнен от имени пользователя «nobody». Если в секцию общего доступа к принтеру добавлена конфигурация «valid users = @users», эксплуатация по-прежнему возможна, но требуются действительные учётные данные. Если была выполнена аутентификация, код, отправленный эксплойтом, будет выполнен от имени аутентифицированного пользователя, а не «nobody».

## Благодарности

  * Ron Ben Yizhak



## Ссылки

  * CVE-2026-24061