Как запустить mssqlclient py на linux
Обновлено: 06.07.2024
With the Impacket mssqlclient you will not need to do manual things such as building the query in SQL scripting language in order to activate the xp_cmdshell. Impacket makes the things easier for you.
You can connect to the database using this command
If you type help and you will get information like below
You need to run the enable_xp_cmdshell in order for you to run the remote execution.
There will out put like the above but actually you dont need to run the RECONFIGURE command since Impacket has done it for you.
The next thing is if you want to create reverse shell then you can just do the below command to connect back to your netcat server defined in the nishang powershell script
the above command is reverse shell using nishang framework. you can find the detail how to prepare nishang reverse shell in my previous tutorial.
Share this:
Like this:
Related
Leave a Reply Cancel reply
1. Penetration testing for banking industry such as Core Banking, SMS Banking, Transaction Switching, Payment Gateway, Mobile Banking, Online Banking, Online trading and Various Cards Application. Segmentation Test for PCI requirement
2. Malware and exploit research and analysis for common and targeted attack for Oil & Gas and Banking Industry.
4. Threat hunting in the oil & gas and banking industry environment. Analysis of several log such as WAF, Firewall, IDPS, Web Application Server, Windows/Linux security event log, Internet Proxy
5. Threat Modeling and threat use case for banking application using OWASP and PASTA framework
6. AWS platform design and security hardening
7. Technical team leader for CSOC team which consist of 8 personel from various background such as SIEM, Public Key Infrastructure, Network Security.
8. Project manager for cyber security software and hardware implementation.
9. SIEM QRadar log onboarding, CRE (Custome Rule Engine), Develop new building block and AQL. SPLUNK log index query.
10. Depth Understanding on below
Burpsuite, Acunetix, Kali Linux, IDA Pro, X64dbg, Cerbero Advance, JEB Android, Hex Editor, Visual Studio, PyCharm, Autopsy and Vmware ESXi
Firewall : Checkpoint, Palo Alto, PFSence, NGINX and F5 Web Application Firewall
Proxy : Bluecoat Proxy
Antivirus/EDR : Symantec and CrowdStrike
Привет, Хабр! Из этой статьи вы узнаете о способе атаки на удаленный сервер, используя особенности MsSQL, создания reverse shell для закрепления в системе и пример эксплуатации плохо сконфигурированной групповой политики в ОС Windows.
Под катом пойдет речь про свой опыт прохождения лабораторной машины 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.
Перечислим найденные порты.
Enumerate 139/445/tcp (smb)
Воспользуемся утилитой smbclient для доступа к SMB ресурсам сервера.
Пройдясь по всем ресурсам, находим в директории Reports файл “Currency Volume Report.xlsm”.
Если открыть этот файл стандартным Microsoft Excel, то он окажется на первый взгляд совершенно пустым.
Проанализируем файл, используя утилиту binwalk, которая поможет взглянуть на встроенные файлы xlsm- документа.
Из вывода binwalk обнаружили несколько интересных файлов, содержащихся в xlsm.
Используя флаг –e, распакуем его.
Теперь воспользуемся утилитой strings для вывода печатных символов. Пробежавшись по файлам, находим интересные данные в vbaProject.bin. Похоже, что мы нашли учетные данные для mssql server’а.
Подытожим полученную информацию на текущий момент:
- Мы знаем, что на порту 10.10.10.125:1433 крутится mssql server;
- У нас есть учетные данные от пользователя mssql server.
Получаем доступ к MsSQL.
Enumerate MsSQL
Перечислим полезную для нас информацию, используя команды из статьи.
Выполнив SQLi, получаем хеш от пароля пользователя mssql-svc.
Чтобы получить пароль в явном виде, необходимо его сбрутить, используя любой удобный для вас инструмент.
Получаем пароль от mssql-svc.
Подключаемся к SQL с новыми кредитами учетными данными.
Права этого пользователя позволяют нам выполнять xp_cmdshell
Получаем reverse shell
Пробуем получить оболочку через netcat, для этого нам необходимо загрузить его на атакуемый сервер.
Переходим в директорию на нашей машине, где находится netcat и запускаем:
В оболочке mssql для загрузки netcat (nc.exe) на удаленный сервер, выполняем команду powershell, указав путь сохранения.
Запускаем netcat на прослушивание порта 4444.
Запускаем на своей стороне netcat, указав ip и порт, атакуемого сервера и получаем оболочку.
В данной статье разберем прохождение не просто машины, а целой мини-лаборатории с площадки HackTheBox.
Как сказано в описании, P.O.O. предназначен для проверки навыков на всех стадиях атак в небольшой среде Active Directory. Цель состоит в том, чтобы скомпрометировать доступный хост, повысить привилегии и, в конечном итоге, скомпрометировать весь домен, собрав при этом 5 флагов.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Intro
Данный endgame состоит из двух машин, и содержит 5 флагов.
Так же дается описание и адрес доступного хоста.
Recon flag
Данная машина имеет IP адрес 10.13.38.11, который я добавляю в /etc/hosts.
10.13.38.11 poo.htb
Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
Таким образом, мы имеем службы IIS и MSSQL. При этом мы узнаем реальное DNS имя домена и компьютера. На веб сервере нас встречает домашняя страница IIS.
Давайте переберем директории. Я для этого использую gobuster. В параметрах указываем количество потоков 128 (-t), URL (-u), словарь (-w) и расширения, которые нас интересуют (-x).
Мы получаем содержимое каталога. Самое интересное здесь — это каталог /dev, из которого мы в двух ветках можем посмотреть исходники и файлы db. Но мы можем первые 6 символов имени файлов и директорий, если сервис уязвим к IIS ShortName. Проверить наличие данной уязвимости можно с помощью IIS shortname Scanner.
И на ходим один текстовый файл, который начинается с «poo_co». Не зная что делать дальше, я просто выбрал из словаря директорий все слова, начинающиеся на «co».
И переберем с помощью wfuzz.
И находим подходящее слово! Смотрим данный файл, сохраняем учетные данные (судя по параметру DBNAME, они от MSSQL).
Сдаем флаг, и мы продвигаемся на 20%.
Huh flag
Подключаемся к MSSQL, я использую DBeaver.
Ничего интересного в данной базе не находим, давайте создадим Редактор SQL и проверим, какие есть пользователи.
У нас два пользователя. Давайте проверим свои привилегии.
Таким образом, привилегий никаких нет. Давайте посмотрим связанные серверы, про данную методику я подробно писал здесь.
Так мы находим еще один SQL Server. Давайте проверим выполнение команд на этом сервере с помощью openquery().
И мы даже можем выстраивать дерево запросов.
Дело в том, что когда мы выполняем запрос на связанный сервер, то запрос выполняется в контексте другого пользователя! Давайте посмотрим, в контексте какого пользователя мы работаем на связанном сервере.
А теперь посмотрим в каком контексте выполняются запрос со связанного сервера на наш!
Таким образом, это контекст DBO, который должен обладать всеми привилегиями. Давайте проверим привилегии в случае запроса со связанного сервера.
Как можно заметить, у нас есть все привилегии! Давайте так создадим своего админа. Но через openquery не пускают, давайте сделаем это через EXECUTE AT.
И теперь подключаемся с учетными данными нового пользователя, наблюдаем новую базу данных flag.
Сдаем этот флаг и идем далее.
BackTrack flag
Получим шелл с помощью MSSQL, я использую mssqlclient из пакета impacket.
Нам нужно раздобыть пароли, и первое, что мы уже встречали, — это сайт. Таким образом нам нужен конфиг веб сервера (бросить удобный шелл не получается, видимо работает firewall).
Но доступ запрещен. Хотя мы можем прочитать файл из MSSQL, нужно лишь знать какие языки программирования настроены. И в директории MSSQL узнаем, что есть Python.
Тогда прочитать файл web.config нет никаких проблем.
С найденными учетными данными зайдем на /admin и забираем флаг.
Foothold flag
На самом деле от использования файервола есть некоторые неудобства, но просматривая настройки сети, замечаем, что также используется прокол IPv6!
Добавим данный адрес в /etc/hosts.
dead:babe::1001 poo6.htb
Давайте снова просканируем хост, но уже по протоколу IPv6.
И по IPv6 доступна служба WinRM. Подключимся с найденными учетными данными.
На рабочем столе есть флаг, сдаем его.
P00ned flag
Проведя разведку на хосте с помощью winpeas ничего особенного не находим. Тогда было принято решение снова искать учетные данные (на эту тему я тоже писал статью). Но получить все SPN из системы через WinRM у меня не вышло.
Давайте выполним команду через MSSQL.
Указанным способом мы получаем SPN пользователей p00_hr и p00_adm, а это означает, что они уязвим к такой атаке, как Kerberoasting. Если вкратце, то мы можем получить хеши их паролей.
Для начала нужно получить стабильный шелл от имени пользователя MSSQL. Но так как нас ограничивают в доступе, то мы имеем связь с хостом только через 80 и 1433 порт. Но есть возможность туннелирования трафика через 80 порт! Для этого воспользуемся следующим приложением. Загрузим файл tunnel.aspx в домашнюю директорию веб сервера — C:\inetpub\wwwroot\.
И теперь при обращении к tunnel.aspx получаем ответ, что все готово к работе.
Давайте запустим клиентскую часть приложения, которая будет заниматься ретранслированием трафика. Мы будем перенаправлять весь трафик с 5432 порта на сервер.
И используем proxychains, чтобы слать трафик любого приложения через наш прокси. Добавим данный прокси в файл конфигурации /etc/proxychains.conf.
Теперь загрузим на сервер программу netcat, с помощью которой сделаем стабильный bind шелл, и скрипт Invoke-Kerberoast, c помощью которого выполним атаку Kerberoasting.
Теперь через MSSQL запускаем листенер.
И подключаемся через наш прокси.
И давайте получим хеши.
Далее нужно перебрать эти хеши. Так как в rockyou словаре данных паролей не было, то я использовал ВСЕ словари passwords, предоставленные в Seclists. Для перебора используем hashcat.
И находим оба пароля, первый в словаре dutch_passwordlist.txt, а второй в Keyboard-Combinations.txt.
И так у нас есть три пользователя, идем на контроллер домена. Сначала узнаем его адрес.
Отлично, мы узнали IP адрес контроллера домена. Давайте узнаем всех пользователей домена, а также кто из них является администратором. Для загрузим скрипт для получения информации PowerView.ps1. Потом подключимся с помощью evil-winrm, указав в параметре -s директорию со скриптом. А потом просто загрузим скрипт PowerView.
Теперь нам доступны все его функции. Пользователь p00_adm похож на привилегированного, поэтому будем работать в его контексте. Создадим объект PSCredential для этого пользователя.
Теперь все команды Powershell, где мы укажем Creds, будут выполнены от имени p00_adm. Давайте выведем список пользователей и атрибут AdminCount.
И так, наш пользователь реально является привилегированным. Давайте глянем, в каких группах он состоит.
Окончательно утверждаемся, что пользователь является администратором домена. Это дает ему право удаленного входа на контроллер домена. Давайте попробуем войти через WinRM, используя наш туннель. Меня смутили ошибки, выдаваемые reGeorg’ом при использовании evil-winrm.
Тогда воспользуемся другим, более легким, скриптом для подключения к WinRM. Откроем и поменяем параметры для подключения.
Пробуем подключиться, и мы в системе.
Но флага нет. Тогда посмотри пользователе и проверим рабочие столы.
У mr3ks находим флаг и лаборатория пройдена на 100%.
Вот и все. В качестве обратной связи, прокомментируйте — узнали ли Вы что-то новое из данной статьи и была ли она Вам полезна.
Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
Довольно часто происходят ситуации, когда доступ к серверу нужен здесь и сейчас. Однако, не всегда подключение по SSH является наиболее удобным способом, потому что под рукой может не оказаться SSH клиента, адреса сервера или связки «пользователь/пароль». Конечно, есть Webmin, который упрощает администрирование, но он также не даёт моментальный доступ.
Поэтому я решил реализовать простое, но любопытное решение. А именно — написать Telegram-бота, который, запускаясь на самом сервере, будет выполнять присылаемые ему команды и возвращать результат. Изучив несколько статей на эту тему, я понял, что подобных реализаций ещё никто не описывал.
Данный проект я реализовывал на Ubuntu 16.04, но для беспроблемного запуска на других дистрибутивах я постарался сделать всё в общем виде.
Регистрируем нового бота у BotFather. Отправляем ему /newbot и далее по тексту. Нам понадобятся токен нового бота и ваш id (получить его можно, например, у @userinfobot).
Подготовка питона
Для запуска бота будем использовать библиотеку telebot ( pip install pytelegrambotapi ). С помощью библиотеки subprocess будем выполнять команды на сервере.
Запуск бота
На сервере создаем файл bot.py:
nano bot.py
И вставляем в него код:
Заменяем в нём токен бота на тот, который выдал BotFather, и user_id — на значение id вашего аккаунта. Проверка id юзера нужна для того, чтобы бот предоставлял доступ к вашему серверу только вам. Функция check_output() выполняет переданную команду и возвращает результат.
Осталось только запустить бота. Для запуска процессов на сервере я предпочитаю использовать screen ( sudo apt-get install screen ):
(где «ServerBot» — идентификатор процесса)
Процесс автоматически запустится в фоном режиме. Перейдем в диалог с ботом и проверим, что всё работает, как надо:
Сongratulations! Бот выполняет присылаемые ему команды. Теперь, чтобы получить доступ к серверу, вам достаточно открыть диалог с ботом.
Повторение команд
Зачастую, для мониторинга состояния сервера приходится выполнять одни и те же команды. Поэтому реализация повтора команд без их повторного отправления будет очень к месту.
Снова проверим, что всё работает корректно:
Читайте также: