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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-1094-PoC-Postgre-SQLi — Эмуляция и анализ proof-of-concept для CVE-2025-1094, критической уязвимости SQL-инъекций в PostgreSQL. Включает Docker-лабораторию, эксплойт-скрипт, анализ первопричины и пошаговую демонстрацию для тестирования безопасности и обучения. | Kitploit
Инструменты/GitHubGitHub/ishwardeepp/cve-2025-1094-poc-postgre-sqli
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность Баз ДанныхЛаборатории и Практика
GitHub
ishwardeepp/cve-2025-1094-poc-postgre-sqli

CVE-2025-1094-PoC-Postgre-SQLi

Эмуляция и анализ proof-of-concept для CVE-2025-1094, критической уязвимости SQL-инъекций в PostgreSQL. Включает Docker-лабораторию, эксплойт-скрипт, анализ первопричины и пошаговую демонстрацию для тестирования безопасности и обучения.

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

Популярное

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

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

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

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

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

Анализ CVE-2025-1094 и настройка эмуляции

Этот детальный анализ, проведенный 14 марта 2025 года, исследует CVE-2025-1094 — гипотетическую уязвимость SQL-инъекции высокой степени серьезности в PostgreSQL, основанную на предоставленной настройке эмуляции и выполнении доказательства концепции (PoC). Анализ охватывает введение в уязвимость, первопричину, вклад файлов, шаги PoC и меры смягчения, включая все сложные детали процесса эмуляции.

Introduction to the Vulnerability

CVE-2025-1094 описывается как критическая ошибка SQL-инъекции в PostgreSQL, затрагивающая версии до 17.3, 16.7, 15.11, 14.16 и 13.19, с базовой оценкой CVSS 3.1 равной 8.1, что указывает на значительное влияние на конфиденциальность, целостность и доступность. Она позволяет злоумышленникам получать доступ к конфиденциальным данным или выполнять удаленный код (RCE) и была использована в реальных атаках, таких как инцидент с BeyondTrust, затронувший 17 корпоративных клиентов, о котором сообщалось на BleepingComputer, и утечка в Казначействе США, описанная в The Register. Эмуляция, проведенная 14 марта 2025 года, использовала Docker с server_encoding=EUC_TW и client_encoding=BIG5, что было критически важно для активации эксплойта. PoC включал внедрение блока DO для создания большого объекта, чтение /etc/passwd через , запись его в большой объект с помощью и экспорт в с использованием , что подтверждает роль несоответствия кодировок в обеспечении несанкционированного доступа к файлам.

pg_read_file
lo_put
/tmp/payload
lo_export

Root Cause Analysis

Первопричина классифицируется как CWE-149: Improper Neutralization of Quoting Syntax (неправильная нейтрализация синтаксиса кавычек), что связано с некорректной обработкой в функциях libpq PostgreSQL — PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() и PQescapeStringConn() — которые не нейтрализуют синтаксис кавычек, когда результаты используются для построения ввода для инструмента командной строки psql. Это усугубляется, когда client_encoding установлен в BIG5, а server_encoding — в EUC_TW, как в нашей настройке, что позволяет SQL-инъекцию. Для эмуляции требовались EUC_TW и zh_TW.EUC_TW для создания несоответствия, при этом проблемы, такие как отсутствие поддержки EUC_TW в psycopg2, решались подключением через UTF8 с последующим переключением на BIG5. Успех эксплойта зависел от выполнения необработанного SQL через subprocess.run(["psql", ...]), что обходило безопасную обработку запросов, как подробно описано в журналах.

File Explanations and Contributions

Каждый файл в настройке играет решающую роль в эмуляции CVE-2025-1094. Ниже приведен подробный разбор в табличной форме:

Таблица: Сводка вклада файлов

ФайлЧто он делаетВклад в PoCЗачем он нужен
exploit.pyОтправляет POST-запрос с блоком DO для создания и экспорта большого объекта, читая /etc/passwd.Запускает SQL-инъекцию, использует несоответствие кодировок для выполнения произвольных SQL-команд.Обеспечивает выполнение эксплойта, критично для воздействия PoC.
app.pyFlask-приложение, предоставляющее /vuln-endpoint, выполняет необработанный SQL через psql.Предоставляет уязвимую конечную точку для эксплойта.Точка входа для эксплойта, необходима для демонстрации уязвимости.
init.sqlСоздает тестовую таблицу с id VARCHAR(255) для строковых входных данных.Настраивает схему для инъекции, обеспечивает выполнение полезной нагрузки без ошибок типов.Настройка базы данных для эксплойта, необходима для SQL-инъекции.
DockerfileСоздает контейнер Flask-приложения с необходимыми зависимостями.Создает изолированный сервис приложения для развертывания конечной точки.Развертывает уязвимое приложение, критично для воспроизводимости PoC.
docker-compose.ymlОпределяет и связывает сервисы db и app с определенными конфигурациями.Оркестрирует настройку, обеспечивает несоответствие кодировок и зависимости сервисов.Связывает сервисы, необходим для настройки среды и изоляции.
Dockerfile.dbСоздает контейнер PostgreSQL с кодировкой EUC_TW.Создает уязвимую базу данных с требуемой кодировкой.Настраивает базу данных с требуемой кодировкой, критично для активации уязвимости.

Proof-of-Concept Steps

PoC, выполненный 14 марта 2025 года, демонстрирует воздействие эксплойта с помощью следующих шагов, каждый с подробным объяснением:

  1. sudo docker compose up --build

    • Что делает: Собирает и запускает сервисы Docker Compose (db и app), создавая контейнеры с обновленными образами при необходимости, и связывает их в сети postgre_default. Обеспечивает настройку уязвимой среды, где db использует кодировку EUC_TW, а app предоставляет /vuln-endpoint на порту 5000, что критически важно для несоответствия кодировок эксплойта и доступа к конечной точке.
    • Зачем это нужно: Настраивает необходимую среду для работы эксплойта, обеспечивая запуск и правильную конфигурацию всех сервисов.
  2. curl -X POST http://localhost:5000/vuln-endpoint -d "input=test"

    • Что делает: Отправляет POST-запрос к конечной точке Flask-приложения с input=test, проверяя связь и базовую функциональность, ожидая ответ "Executed". Подтверждает, что приложение запущено и может подключаться к базе данных, гарантируя готовность настройки к эксплойту.
    • Зачем это нужно: Убеждается, что конечная точка доступна и функциональна перед выполнением эксплойта, что соответствует шагам проверки PoC.
    • Проверка настройки
  3. python3 cve-2025-1094-exploit.py

    • Что делает: Запускает скрипт эксплойта, отправляя POST-запрос с блоком DO для создания большого объекта, записи в него /etc/passwd и экспорта в /tmp/payload, выводя статус выполнения. Запускает SQL-инъекцию, используя уязвимость для чтения /etc/passwd, что критически важно для демонстрации воздействия CVE-2025-1094, как видно из журналов с успешным экспортом файла.
    • Зачем это нужно: Выполняет основной эксплойт, показывая, как злоумышленники могут получить доступ к конфиденциальным данным, что соответствует цели PoC по эмуляции реальных атак.
    • Запуск эксплойта
  4. sudo docker ps

    • Что делает: Выводит список запущенных контейнеров, проверяя, что postgre-app-1 и postgre-db-1 работают. Подтверждает настройку перед запуском эксплойта, гарантируя активность обоих сервисов, что критически важно для надежности PoC. Предоставляет пользователю идентификатор контейнера, необходимый для последующих команд.
    • Зачем это нужно: Убеждается, что все необходимые сервисы работают, предоставляя контрольную точку перед дальнейшими шагами эксплуатации.
  5. sudo docker exec -it bash -c "LC_ALL=C ls -l /tmp/payload && LC_ALL=C cat /tmp/payload"

    • Что делает: Выполняет команду в контейнере postgre-db-1, выводя список и содержимое /tmp/payload на английском языке, проверяя результат эксплойта (должен отображать /etc/passwd). Подтверждает, что эксплойт сработал, проверяя файл, гарантируя, что /tmp/payload содержит конфиденциальные данные, что соответствует проверке PoC, и избегает искажения локали с помощью LC_ALL=C.
    • Зачем это нужно: Проверяет успех эксплойта, выводя результат, гарантируя, что конфиденциальные данные были получены как ожидалось.
    • Валидация эксплойта
  6. sudo docker exec -it psql -U postgres -d postgres -c "SELECT * FROM test;"

    • Что делает: Выполняет SQL-запрос в контейнере базы данных, выбирая все из таблицы test, проверяя INSERT из эксплойта (должен показывать "Exploit ran with loid ..."). Подтверждает модификацию базы данных эксплойтом, гарантируя выполнение блока DO, что соответствует проверке PoC и валидирует журналирование loid.
    • Зачем это нужно: Убеждается, что база данных была изменена как ожидалось, предоставляя дополнительную проверку воздействия эксплойта.
  7. sudo docker compose down

    • Что делает: Останавливает и удаляет контейнеры, сети и тома, очищая среду. Обеспечивает освобождение ресурсов, поддерживая чистоту системы, что необходимо для повторяемого выполнения PoC без остаточных данных.
    • Зачем это нужно: Очищает после тестирования, гарантируя, что остаточные сервисы или данные не повлияют на будущие тесты, поддерживая контролируемую среду.

Demonstration Video

Demonstration Video on Vimeo
Нажмите, чтобы посмотреть демонстрацию PoC на Vimeo.

Mitigations

Для смягчения CVE-2025-1094 рекомендуются следующие меры, основанные на результатах эмуляции и отраслевых рекомендациях:

  • Обновление до исправленных версий: Обновитесь до версий PostgreSQL 17.3, 16.7, 15.11, 14.16 или 13.19, доступных на странице загрузки PostgreSQL.
  • Проверка входных данных: Проверяйте все вводимые пользователем данные на соответствие кодировке UTF-8 для предотвращения инъекций, как рекомендовано в блоге Armosec.
  • Ограничение доступа к psql: Ограничьте доступ к psql только доверенными пользователями, уменьшая поверхность атаки.
  • Параметризованные запросы или ORM-фреймворки: Используйте параметризованные запросы или ORM-фреймворки для предотвращения SQL-инъекций, повышая безопасность.
  • Многофакторная аутентификация (MFA) и управление доступом на основе ролей (RBAC): Внедрите MFA и RBAC для усиления контроля доступа, согласно анализу Ox Security.
  • Мониторинг журналов: Регулярно отслеживайте журналы на предмет аномалий или подозрительной активности для раннего обнаружения потенциальных эксплойтов.
  • Надежное резервное копирование: Поддерживайте регулярное и надежное резервное копирование базы данных для восстановления после возможных утечек, обеспечивая целостность данных.
Скачать инструмент