stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу, как использовать команду setfacl, чтобы закрепиться на машине с Linux и повысить привилегии. Но сначала нам надо будет получить к ней доступ. Сделаем мы это при помощи бага в системе Chamilo, а для перехода в контекст безопасности пользователя разберемся с веб‑приложением и получим учетные данные.
Наша цель — получение прав суперпользователя на машине PermX с учебной площадки Для просмотра ссылки Войдиили Зарегистрируйся. Уровень задания — легкий.
И запускаем сканирование портов.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Скрипт нашел два открытых порта:
Главная страница сайта
или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся. Я предпочитаю Для просмотра ссылки Войди или Зарегистрируйся.
При запуске указываем следующие параметры:
Результат сканирования каталогов
Ничего интересного не обнаружено, однако мы знаем реальный домен — permx.htb. Давай просканируем поддомены с помощью ffuf. При запуске используем следующие параметры:
Результат сканирования поддоменов
В вывод сканера попадают все варианты из словаря, поэтому установим фильтр по коду ответа (параметр -mc). Нас интересуют только варианты с кодом ответа 200.
Результат сканирования поддоменов
Находим два новых поддомена, поэтому обновляем /etc/hosts.
Теперь посмотрим новые сайты. На Для просмотра ссылки Войдиили Зарегистрируйся получаем тот же лендинг, а на lms.permx.htb нас встречает форма авторизации Chamilo LMS.
Главная страница сайта lms.permx.htb
Учетные данные вроде admin:admin не прошли, попробуем найти другой вариант.
Поиск эксплоитов в Google
Почти все первые ссылки указывают на уязвимость Для просмотра ссылки Войдиили Зарегистрируйся. Chamilo LMS версии v1.11.24 и ниже позволяет без аутентификации загружать файлы через следующий эндпоинт:
Это можно использовать: загрузить веб‑шелл и получить удаленное выполнение кода. Все это уже реализовано в Для просмотра ссылки Войдиили Зарегистрируйся, который также может определить наличие уязвимости.
Определение наличия уязвимости
Так как мы будем ловить реверс‑шелл, то предварительно активируем листенер:
Теперь выполняем эксплоит.
Настройка эксплоита
Результат выполнения эксплоита
Эксплоит отработал, а в листенере появилась сессия пользователя www-data.
Сессия пользователя www-data
Результат поиска подстроки
Находим файл app/config/configuration.php, в котором хранятся все настройки веб‑приложения.
Содержимое файла configuration.php
Поиск учетных данных в самой базе ничего не дал, однако нередки случаи использования одного пароля в разных сервисах. Возможно, он подойдет и для какого‑то пользователя. Получить пользователей с активной консолью можно из файла /etc/passwd.
Содержимое файла /etc/passwd
Авторизуемся под пользователем mtz и забираем первый флаг.
Флаг пользователя
или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Загрузим на удаленный хост скрипт для Linux, дадим право на выполнение и запустим сканирование. В выводе будет много информации, но из значимой только настройки sudoers.
Настройки sudoers
Таким образом, текущий пользователь может выполнить скрипт /opt/acl.sh от имени пользователя root без ввода пароля. Просмотрим исходный код /opt/acl.sh.
Содержимое файла /opt/acl.sh
Самой последней командой в привилегированном режиме выполняется файл setfacl, а для него есть Для просмотра ссылки Войдиили Зарегистрируйся.
или Зарегистрируйся — это подборка способов злоупотреблять возможностями популярных программ для Unix. Используя собранные здесь рецепты, можно быстро получить доступ к командным оболочкам, повысить привилегии или передать файлы при помощи легитимных приложений.
Описания GTFOBins для /opt/acl.sh
Мы можем установить право записи для любого файла в системе. Так, новая строчка mtz ALL=(ALL:ALL) ALL в файле /etc/sudoers позволит нам выполнить через sudo любую команду.
Первым делом дадим пользователю mtz все права на файл /etc/sudoers. Чтобы обойти ограничения в скрипте /opt/acl.sh, будем использовать ссылку.
Теперь можно дополнить этот файл.
Эксплуатация техники
А теперь просто меняем пользователя на root и читаем второй флаг.
Флаг рута
Машина захвачена!
Наша цель — получение прав суперпользователя на машине PermX с учебной площадки Для просмотра ссылки Войди
warning
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.23 permx.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Код:
#!/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
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).

Скрипт нашел два открытых порта:
- 22 — служба OpenSSH 8.9p1;
- 80 — веб‑сервер Apache 2.4.52.

Точка входа
Ничего интересного найти не удалось, поэтому приступим к сканированию.Справка: сканирование веба c feroxbuster
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде Для просмотра ссылки ВойдиПри запуске указываем следующие параметры:
- -u — URL;
- -w — словарь (я использую словари из набора Для просмотра ссылки Войди
или Зарегистрируйся); - -t — количество потоков;
- -d — глубина сканирования.
feroxbuster -u [URL]http://permx.htb/[/URL] -w directory_2.3_medium_lowercase.txt -d 1 -t 128

Ничего интересного не обнаружено, однако мы знаем реальный домен — permx.htb. Давай просканируем поддомены с помощью ffuf. При запуске используем следующие параметры:
- -w — словарь (тот же);
- -t — количество потоков;
- -u — URL;
- -H — HTTP-заголовок.
ffuf -u [URL]http://permx.htb[/URL] -H 'Host: FUZZ.permx.htb' -w subdomains-bitquark-top100000.txt -t 128

В вывод сканера попадают все варианты из словаря, поэтому установим фильтр по коду ответа (параметр -mc). Нас интересуют только варианты с кодом ответа 200.
ffuf -u [URL]http://permx.htb[/URL] -H 'Host: FUZZ.permx.htb' -w subdomains-bitquark-top100000.txt -t 128 -mc 200

Находим два новых поддомена, поэтому обновляем /etc/hosts.
10.10.11.23 permx.htb [URL='http://www.permx.htb']www.permx.htb[/URL] lms.permx.htb
Теперь посмотрим новые сайты. На Для просмотра ссылки Войди

Учетные данные вроде admin:admin не прошли, попробуем найти другой вариант.
Точка опоры
Первым делом стоит проверить, есть ли для обнаруженной системы готовые эксплоиты. Для этого чаще всего достаточно поискать в Google.
Почти все первые ссылки указывают на уязвимость Для просмотра ссылки Войди
/main/inc/lib/javascript/bigupload/inc/bigUpload.php
Это можно использовать: загрузить веб‑шелл и получить удаленное выполнение кода. Все это уже реализовано в Для просмотра ссылки Войди
python3 main.py -u [URL]http://lms.permx.htb[/URL] -a scan

Так как мы будем ловить реверс‑шелл, то предварительно активируем листенер:
pwncat-cs -lp 4321
Теперь выполняем эксплоит.
python3 main.py -u [URL]http://lms.permx.htb[/URL] -a revshell


Эксплоит отработал, а в листенере появилась сессия пользователя www-data.

Продвижение
Так как мы работаем в контексте учетной записи веб‑сервера, а на хосте развернуто веб‑приложение, самое время поискать учетные данные. Обычно приложения используют какую‑нибудь базу данных, а учетные данные для нее хранятся в переменных окружения или файлах с настройками. Переменные окружения ничего интересного не содержат, поэтому найдем файл по наличию в нем строки, например dp_password.grep -iR db_password ./

Находим файл app/config/configuration.php, в котором хранятся все настройки веб‑приложения.

Поиск учетных данных в самой базе ничего не дал, однако нередки случаи использования одного пароля в разных сервисах. Возможно, он подойдет и для какого‑то пользователя. Получить пользователей с активной консолью можно из файла /etc/passwd.
cat /etc/passwd | grep bash

Авторизуемся под пользователем mtz и забираем первый флаг.

Локальное повышение привилегий
Теперь нам необходимо собрать информацию. Я рекомендую использовать для этого скрипты PEASS.Справка: скрипты PEASS
Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки ВойдиЗагрузим на удаленный хост скрипт для Linux, дадим право на выполнение и запустим сканирование. В выводе будет много информации, но из значимой только настройки sudoers.

Таким образом, текущий пользователь может выполнить скрипт /opt/acl.sh от имени пользователя root без ввода пароля. Просмотрим исходный код /opt/acl.sh.

Самой последней командой в привилегированном режиме выполняется файл setfacl, а для него есть Для просмотра ссылки Войди
Справка: GTFOBins
Для просмотра ссылки Войди
Мы можем установить право записи для любого файла в системе. Так, новая строчка mtz ALL=(ALL:ALL) ALL в файле /etc/sudoers позволит нам выполнить через sudo любую команду.
Справка: sudoers
Файл /etc/sudoers в Linux содержит списки команд, которые разные группы пользователей могут выполнять от имени администратора системы. Можно просмотреть его как напрямую, так и при помощи команды sudo -l.Первым делом дадим пользователю mtz все права на файл /etc/sudoers. Чтобы обойти ограничения в скрипте /opt/acl.sh, будем использовать ссылку.
Код:
ln -s /etc/sudoers ./sudoers
sudo /opt/acl.sh mtz rwx /home/mtz/sudoers
echo "mtz ALL=(ALL:ALL) ALL" >> /home/mtz/sudoers

А теперь просто меняем пользователя на root и читаем второй флаг.

Машина захвачена!