- PVSM.RU - https://www.pvsm.ru -
Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox [1].
В данной статье мы получим хеши пользователей благодаря memcached, разбираемся с GIT репозиториями, пишем плагин с бэкдором на Java, анализируем трафик и повышаем привилегии благодаря RabbitMQ.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.
Данная машина имеет IP адрес 10.10.10.190, который я добавляю в /etc/hosts.
10.10.10.190 dyplesher.htb
Первым делом сканируем открытые порты. Я это делаю с помощью следующего скрипта, принимающего один аргумент — адрес сканируемого хоста:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)
nmap -p$ports -A $1
Так видим много открытых портов и работающих служб. При этом два порта предназначены для веб-сервера — 80 и 3000. Давайте посмотрим их. Так порт 3000 отведен для Gogs и без учетных данных тут нич его не сделать.
А вот порт 80 сразу дает наводку — поддомен test.
Добавим его в /etc/hosts.
10.10.10.190 test.dyplesher.htb
Посмотрим, что нам может предложить найденный сайт.
Давайте переберем директории на обоих сайтах. Я делаю это с помощью gobuster. В параметрах указываем количество потоков 128 (-t), URL (-u), словарь (-w), нужные нам коды ответа и расширения, которые нас интересуют (-x).
gobuster dir -t 128 -u http://dyplesher.htb/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,html --timeout 60s -s 200,204,301,302,307,401
gobuster dir -t 128 -u http://test.dyplesher.htb/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,html --timeout 60s -s 200,204,301,302,307,401
Находим страницу авторизации на первом и доступный git репозиторий на втором. Давайте скачаем весь .git с помощью скрипта rip-git.pl [5].
./rip-git.pl -v -u http://test.dyplesher.htb/.git/
И в рабочей директории обнаружим файл index.php, в котором имеются учетные данные.
Видим использование memcached, который доступный на порте 11211.
Мы можем взаимодействовать с ним благодаря memcached-cli. Установим данное программное обеспечение.
sudo apt install npm
sudo npm install -g memcached-cli
И теперь подключимся с найденными учетными данными.
memcached-cli felamos:zxcvbnm@dyplesher.htb:11211
Давайте попробуем получиться логины и пароли.
И у нас есть три логина и три хеша. Давайте глянем, что это за хеши.
hashcat --example | grep -A2 -B2 $2a
И это bcrypt, что означает слишком долгий перебор.
hashcat -a 0 -m 3200 hashes tools/rockyou.txt
И с полученными учетными данными получается зайти на Gogs.
У пользователя имеется два репозитория, при этом второй мы уже получили. А вот у первого есть релиз.
Скачаем и посмотрим на содержимое.
Таким образом, мы имеем 4 bundle репозитория. Давайте разархивируем их.
И среди новых файлов, внимание привлекает следующий проект.
В нем видим users.db базу данных (на данном этапе благодарен за оказание помощи Sergey Klevogin и ex0dus: оказалось, что на разных серверах разные учетные данные, и подобрать данные на US сервере не вышло, но это успешно получилось выполнить на сервере EU). Откроем данным файл в DB Browser.
Это снова bcrypt, давайте его переберем.
hashcat -a 0 -m 3200 db.hash tools/rockyou.txt
И мы получаем еще один пароль для нашего пользователя.
Пробуя полученные учетные данные, получается зайти на самый первый сайт.
Осмотревшись на сайте, ничего особенного не находим, но понимаем, что сайт нужен для загрузки и активации плагинов. Ex0dus поделился статьей [6], где очень подробно описано как это сделать. Я приведу лишь код основного класса, в котором мы создаем и записываем php бэкдор.
После сборки, загрузим JAR файл на сайт, и активируем, его по имени, указанном в plugin.yml.
И проверяем. Все успешно работает.
Создать бэкконнект шелл не получилось, но можно попробовать записать SSH ключ. Сначала сгенерируем его с помощью ssh-keygen, а потом запишем.
Но подключившись по SSH, не находим файла user.txt, значит нам нужно захватить другого пользователя.
Давайте загрузим на хост скрипт базового перечисления системы linPEAS и запустим его.
В информации о пользователе замечаем группу wireshark. Так же отметим информацию о сетевых интерфейсах.
Но tcpdump использовать нельзя, давайте глянем, что нам даст группа wireshark. И находим dumpcap.
Я запустил его на 2 минуты собрать трафик, вдруг попадутся учетные данные других пользователей.
Далее скачем файл на локальную машину. Я попробовал поискать в нем строку “pass”, и это дало свои плоды.
Более удобно посмотреть логины и пароли можно немного отфильтровав вывод. И в конце списка видим пользователей из системы.
strings out.pcap | grep -oP '{.+}' | jq "{user: .email, pass: .password}"
И авторизуемся под последним пользователем в службе SSH.
Так в списке представлена еще строка PASSWORDS, ее тоже нужно проверить. Для этого открываем посмотрим строки рядом и для уверенности найдем тоже самое в wireshark.
Это логин и пароль для подключения к RabbitMQ по протоколу AMQP, работающему на 5672 порте (из скана nmap). Я загрузил на хост pspy64 и определил, что служба запускается от имени рута.
Таким образом, при помощи pika python мы можем выполнить LUA скрипт от имени рута. Давайте в данном скрипте запишем уже сгенерированный публичный ключ SSH руту.
Теперь запустим локальный веб сервер с помощью python. А потом выполним скрипт ниже.
import pika
creds = pika.PlainCredentials('yuntao', 'EashAnicOc3Op')
params = pika.ConnectionParameters('dyplesher.htb', 5672, '/', creds)
conn = pika.BlockingConnection(params)
chan = conn.channel()
chan.basic_publish(exchange='', routing_key='plugin_data', body='http://127.0.0.1:5432/ralf.lua')
conn.close()
И теперь мы можем подключиться по SSH от имени root.
Вы можете присоединиться к нам в Telegram [2]. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
Автор: Ральф Фаилов
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/358218
Ссылки в тексте:
[1] HackTheBox: https://www.hackthebox.eu
[2] канал в Telegram: https://t.me/RalfHackerChannel
[3] группу для обсуждения любых вопросов: https://t.me/RalfHackerPublicChat
[4] рассмотрю лично и отвечу всем: https://t.me/hackerralf8
[5] rip-git.pl: https://github.com/kost/dvcs-ripper/blob/master/rip-git.pl
[6] статьей: https://www.justdave.net/dave/2015/05/04/how-to-write-a-minecraftbukkit-plugin-for-spigot-1-8/
[7] Источник: https://habr.com/ru/post/524852/?utm_source=habrahabr&utm_medium=rss&utm_campaign=524852
Нажмите здесь для печати.