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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-12356 — Недestructive детектор неаутентифицированного RCE в BeyondTrust Remote Support и PRA, объединяющий инъекцию аргументов и обход экранирования PostgreSQL для проверки эксплуатируемости через дифференциальный анализ по времени. | Kitploit
Инструменты/GitHubGitHub/skraft9/cve-2024-12356
Сканеры уязвимостейАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed Teaming
GitHubskraft9/cve-2024-12356

CVE-2024-12356

Недestructive детектор неаутентифицированного RCE в BeyondTrust Remote Support и PRA, объединяющий инъекцию аргументов и обход экранирования PostgreSQL для проверки эксплуатируемости через дифференциальный анализ по времени.

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

Популярное

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

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

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

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

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

Неаутентифицированное удалённое выполнение кода в BeyondTrust Remote Support и Privileged Remote Access через внедрение аргументов и обход экранирования строк PostgreSQL

Этическое предупреждение: Только для исследовательских, образовательных и авторизованных целей тестирования. Пожалуйста, не используйте против систем без разрешения.


BeyondTrust Remote Support (RS) и Privileged Remote Access (PRA) — это устройства, которые выступают посредниками при привилегированных удалённых сеансах во внутренние системы организации, поэтому они часто доступны из интернета и занимают доверенное положение в сети.

Неаутентифицированный злоумышленник, имеющий доступ к WebSocket-конечной точке устройства, может выполнять команды операционной системы от имени пользователя site, объединив две уязвимости: внедрение аргументов в скрипте thin-scc-wrapper устройства (CVE-2024-12356) и обход экранирования строк PostgreSQL, превращающий недопустимый байт UTF-8 в преждевременный разрыв SQL-литерала (CVE-2025-1094). Уязвимый путь достигается до любой аутентификации.

bt_rs_rce_check.py в этом репозитории — это неразрушающий детектор для этой цепочки. Он проходит ровно по тому же неаутентифицированному пути кода, который использует реальная эксплойтация, но останавливается на доказательстве достижимости: единственное, что он когда-либо просит выполнить цель, — это безвредный sleep (временная дифференциальная проверка) или безвредный запрос имени хоста/HTTP к внешнему коллектору, которым вы управляете. Он никогда не открывает оболочку, не записывает файлы, не читает данные, не закрепляется и не перемещается латерально.

  • Идентификаторы CVE:
    • CVE-2024-12356 — внедрение команд/аргументов в BeyondTrust RS и PRA
    • CVE-2025-1094 — уязвимость SQL-инъекции PostgreSQL psql через недопустимый UTF-8, объединённая для завершения RCE
  • Тип уязвимости:
    • Корневая причина: CWE-88 Внедрение аргументов (BeyondTrust классифицировала CVE-2024-12356 как CWE-77; анализ Rapid7 утверждает, что CWE-88 точнее)
    • Объединённая уязвимость: CWE-89 SQL-инъекция из-за некорректной обработки недопустимого UTF-8 (CVE-2025-1094)
    • Итоговое воздействие: CWE-78 Внедрение команд ОС (неаутентифицированное RCE)
  • Затронутое ПО: BeyondTrust Remote Support (RS) и Privileged Remote Access (PRA).
  • Затронутые версии: 24.3.1 и более ранние (все незапатченные локальные и, на момент раскрытия, облачные сборки).
  • Исправление: патч BeyondTrust BT24-10 (BT24-10-ONPREM1 / BT24-10-ONPREM2 для самостоятельно размещённых устройств; облачные экземпляры были пропатчены BeyondTrust).
  • Оценка: 9.8 (Critical) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Статус эксплуатации: активно эксплуатируется в дикой природе; включена в каталог CISA KEV.

Воздействие

Цепочка обеспечивает неаутентифицированное удалённое выполнение кода от имени пользователя site на устройстве, чьё единственное назначение — выступать посредником при привилегированном доступе во внутренние системы, поэтому один анонимный запрос превращает открытый хост RS или PRA в плацдарм и точку опоры для продвижения к каждой нижестоящей системе, которую обслуживает устройство.

Для этого не требуются учётные данные, взаимодействие с пользователем или предварительный доступ: злоумышленник внешний и анонимный, а единственное предусловие — сетевая достижимость WebSocket-конечной точки устройства.

Уязвимость была раскрыта после обнаружения её эксплуатации в дикой природе, была добавлена в каталог CISA Known Exploited Vulnerabilities 19 декабря 2024 года и публично связана с взломом Министерства финансов США в декабре 2024 года, приписываемым спонсируемому государством актору.


Цепочка уязвимостей

Уязвимая логика находится в shell-скрипте thin-scc-wrapper устройства, который читает контролируемый злоумышленником ключ сеанса (gskey) из неаутентифицированного WebSocket-кадра и передаёт его к базе данных. Полное RCE — это цепочка из трёх отдельных проблем.

1. Внедрение аргументов в thin-scc-wrapper (CVE-2024-12356). Обёртка передаёт недоверенный gskey вспомогательной программе без кавычек, поэтому оболочка разделяет его на аргументы по пробелам до выполнения echo:

quoted=$(export PHPRC="$BG_app_root/config/php-cli.ini"; echo $gskey | $ingrediRoot/app/dbquote)

Ключ, начинающийся с -e, превращает echo в echo -e, который интерпретирует escape-последовательности с обратной косой чертой и позволяет злоумышленнику выдавать произвольные сырые байты — прежде всего \xC0 — в данные, поступающие на следующий этап. Злоумышленник контролирует флаг существующей команды, а не внедряет новую команду, поэтому это внедрение аргументов (CWE-88), а не классическое внедрение команд.

2. Обход экранирования PostgreSQL через недопустимый UTF-8 (CVE-2025-1094). dbquote экранирует значение с помощью PHP-функции pg_escape_string(), которая вызывает PQescapeStringInternal() из libpq. Для многобайтового символа она доверяет длине, сообщаемой pg_encoding_mblen(), и копирует байты символа дословно, без их проверки:

len = pg_encoding_mblen(encoding, source);
for (i = 0; i < len; i++)   /* copy the character */
    *target++ = *source++;

Байт типа 0xC0 объявляет двухбайтовый символ, поэтому экранировщик проглатывает следующий байт как его «продолжение» — даже если этот байт является одинарной кавычкой (0x27). Таким образом, последовательность 0xC0 0x27 проходит с неэкранированным байтом одинарной кавычки, всё ещё встроенным в «экранированную» строку.

3. psql выходит за пределы литерала и выполняет \! (CVE-2025-1094). «Экранированная» строка передаётся в psql, который не рассматривает 0xC0 0x27 как один символ, поэтому 0x27 преждевременно закрывает SQL-строковый литерал, и всё после него анализируется как новый ввод. Злоумышленник использует это для доступа к мета-команде \! в psql, которая выполняет команду оболочки от имени пользователя site:

<0xC0>'; \! <cmd> #

Rapid7 обнаружила, что RCE на практике всегда опирается на CVE-2025-1094 и что её достаточно самой по себе: доставка сырого байта 0xC0 внутри бинарного WebSocket-кадра (а не текстового, где проверка UTF-8 удалила бы его) достигает gskey без изменений и запускает SQL-прорыв вообще без этапа echo -e. Этот детектор использует подход с бинарным кадром.


Достижимость

Вся цепочка достижима до аутентификации через один WebSocket:

  1. Конечная точка — неаутентифицированный WebSocket к /nw (обработчик Tornado на устройстве).
  2. Выбор приложения — уязвимое «тонкое» приложение выбирается заголовком Sec-WebSocket-Protocol: ingredi support desk customer thin, отправляемым в URL-кодированном виде как ingredi%20support%20desk%20customer%20thin.
  3. Разрешение компании — целевой тенант определяется из HTTP-заголовка Host (сопоставляется с установленной компанией) или, как запасной вариант, из заголовка X-Ns-Company. Если ни один из них не сопоставляется с установленной компанией, устройство закрывает сокет до обработки gskey.
  4. Полезная нагрузка — разделённый переводами строк бинарный кадр, несущий версию протокола 1, UUID thinMint, authType 0 (аутентификация gskey), затем вредоносный gskey (версия 1 означает отсутствие строки locale_code):
1
<UUID thinMint>
0
<0xC0>'; \! <cmd> #

Обнаружение

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