Проходим машину RootMe на TryHackMe

0
(0)

Есть много ресурсов для обучения тестированию на проникновение, один из них это TryHackMe.

Там в разделе Learn -> Practice есть бесплатные машины, разного уровня сложности, на которых можно потренироваться, улучшить навыки или приобрести их. Сегодня попробуем пройти популярную машину «RootMe», которая помечена как «Easy», то есть легкая. Это то, что нам нужно. Заранее скажу, что после прохождения машины можно будет приобрести навык работы с утилитами сканирования директорий веб-серверов, использования reverse shell для получения доступа на машину, а также один из способов повышения своих привилегий до root в системе.

Машинка выглядит так:

Скачиваем openvpn конфиг по ссылке и подключаемся:

Bash
openvpn --config /path/to/opevpncofnig

От нас ожидают выполнение 4 заданий, первое из которых просто запуск уязвимой ВМ. Запускаем и переходим ко второму пункту.

Задание 2. Сбор информации о ВМ:

Первый вопрос, сколько портов открыто на ВМ?

Используем nmap для сканирования, также укажем ключ V для получения версий запущенных на портах программ.

Bash
nmap -sV 10.10.196.133

Видим следующий вывод:

Ответ на первый вопрос — 2 порта.

Затем нас спрашивают, какая версия apache запущена на ВМ. Ответ — 2.4.29

Третий вопрос — что запущено на 22 порту? Ответ ssh.

Дальше уже интересней, нас просят ответить на вопрос, какая скрытая директория есть на сервере? Если нажать на подсказку, то увидим следующее:

Нам предлагают воспользоваться утилитой gobuster для сканирования директорий. В целом, можно использовать любую утилиту для этого, например dirsearch, но мы хотим узнать что-то новое поэтому идем в google за gobuster.

Забираем с github со странице релизов последнею версию.

Bash
wget https://github.com/OJ/gobuster/releases/download/v3.6.0/gobuster_Linux_x86_64.tar.gz

tar xvf gobuster_Linux_x86_64.tar.gz

cp gobuster /bin/

Далее забираем словарь для gobuster.

Bash
git clone https://github.com/aels/subdirectories-discover

Пробуем запустить с первым словарем из списка:

Bash
gobuster dir -u 10.10.196.133 -w ./gobuster-subdir-wordlist/dsplusleakypaths.txt

Из интересного видим /uploads, где пока ничего нет и /panel. Заходим в браузере на /panel.

Видим UI для загруки файлов. Отлично. Сдаем ответ о скрытой директории /panel/.

Мы прошли 2 пункт. Корректные ответы выглядят так:

Задание 3. Получить shell доступ на ВМ и забрать флаг user.txt:

Окей. У нас есть некая форма загрузки файлов, это означает, что мы можем загрузить туда reverse shell на php и получить доступ к shell от того пользователя, из под которого будет выполнен наш reverse shell, вероятно это будет www-data или nginx.

Для того, чтобы сгенерировать код для reverse shell есть отличный ресурс — https://www.revshells.com/. Для php там много разных вариаций, мне подошел вот этот:

В графе IP & Port мы указываем свой IP адрес и желаемый порт. Из «Listener» забираем команду для прослушивание подключения.

Сохраним скрипт в виде файла r.php и попробуем загрузить.

Похоже, что у нас ничего не вышло. Смотрим подсказку:

Про php reverse shell мы уже узнали, гуглим первую рекомендации и находим этот сайт — https://book.hacktricks.xyz/pentesting-web/file-upload

Можно пробовать ставить файлу разные расширения, я попробовал несколько, подошло .php5.

Загружаем файл еще раз и проверяем его наличие в /uploads:

Отлично, теперь осталось запустить netcat на нашей стороне и выполнить r.php5.

Bash
nc -lvnp 9001 

Нажимаем на r.php5 и мы внутри ВМ.

Нас пустило под пользователем www-data от которого запущен веб-сервер. Давайте найдем файл user.txt:

Bash
find / -name "user.txt" 2> /dev/null

Читаем его и сдаем.

Задание 4. Повышение привелегий:

Нас просят найти все файлы с битом SUID и спрашивают какой из них выглядит странно.

Bash
find / -user root -perm /4000 2> /dev/null

Напомню, что SUID это бит, который позволяем пользователю повысить привилегии до владельца файла. Например этот бит обязательно выставляется на утилите passwd, так как обычный пользователь должен мочь менять себе пароль, но при этом утилита passwd делаем запись в системные файлы, которые не доступны обычному пользователю. Бит SUID решает это проблему.

Подозрительным тут является интерпретатор python.

Чтобы повысить свои привилегии нас просят «загуглить» gtfobins:

GTFOBins — это тщательно подобранный список двоичных файлов Unix, которые можно использовать для обхода локальных ограничений безопасности в неправильно сконфигурированных системах.

Ищем на сайте gtfobins по слову python и находим то, что нам нужно.

Выполняем команду и проверяем повысились ли наши привилегии:

Bash
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
whoami

Отлично смотрим директорию /root и забираем оттуда файл.

Bash
ls /root
cat /root/root.txt

4 задание выполнено успешно.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий