D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Источник: https://xakep.ru/2024/02/12/htb-keeper/
В этом райтапе я покажу, как можно восстановить мастер-пароль от базы данных парольного менеджера KeePass из дампа памяти процесса, чтобы получить учетные дан ные и ключи. На пути к этому по традиции попен тестим веб-сер вис и соберем данные для продвижения.
И запускаем сканирование портов.
Сканер нашел два открытых порта:
Новый поддомен тоже добавляем в файл
Теперь перейдем по ссылке. На новом сайте нас встречает страница авторизации системы заявок Request Tracker. Поиск эксплоитов ничего не дал, а типичная пара учетных данных оказалась невалидной. Однако всегда стоит проверять еще и учетные данные, заданные в том или ином ПО по умолчанию. Для Request Tracker это root
assword, что я узнал из официальной вики.
C дефолтными логином и паролем авторизуемся в Request Tracker, при этом, как оказалось, сразу от имени привилегированного пользователя.
В любых системах, связанных с тикетами и прочими заявками, первым делом нужно искать по словам вроде pass, secret, login, token. В данном случае при поиске подстроки pass отыскивается всего один тикет. Какие-то проблемы с клиентом KeePass для Windows.
К сожалению, ничего существенного не находим. Комментарии к заявке тоже никакой полезной информации не содержат.
Точка Опоры
В меню переходим по пути Admin → Users → Select и получаем список существующих в системе пользователей.
Как минимум уже нашли имя пользователя.
Теперь открываем профиль каждого пользователя и собираем информацию. Возможно, по ней получится сгенерировать список паролей для перебора, это тоже рабочий вектор.
В профиле пользователя lnorgaard мы находим не то что какую-то информацию, а целый пароль: Welcome2023!. С именем пользователя и паролем получается авторизоваться по SSH и забрать пользовательский флаг.
Локальное повышение привилегий
Теперь пора собрать информацию о системе, запущенных процессах, необычных файлах и прочих вещах, которые помогут нам найти возможность для повышения привилегий до рута. Я для этого использую скрипты PEASS.
Давай скачаем самую свежую версию скрипта для Linux
Теперь нужно загрузить его на удаленный хост. Для этого можно использовать стандартные средства SSH. После загрузки необходимо дать скрипту право на выполнение и выполнить его.
Код: Скопировать в буфер обмена
В выводе — масса информации, поэтому нужно отобрать только значимую.
К сожалению, интересного не так много. Разве что в домашнем каталоге пользователя нашелся какой-то архив RT30000.zip, оставленный рутом.
Также я всегда загружаю на хост утилиту pspy64, которая позволяет в реальном времени отслеживать выполняемые команды и процессы, запускаемые от имени любого, даже привилегированного пользователя. Увы, я прождал пять минут и ничего интересного не обнаружил.
Возвращаемся к найден ному архиву и скачиваем его на свой хост стандартными средствами SSH.
Внутри архива находим базу дан ных менеджера паролей KeePass passcodes.kdbx, а также, судя по названию, полный дамп работающего процесса этого менеджера паролей - KeePassDumpFull.dmp
На ум сразу приходит недавняя уязвимость CVE-2023-32784.
Дело в том, что в KeePass 2.x до вер сии 2.54 есть возможность восстановить мастер-пароль в открытом виде из дампа памяти, даже если рабочее пространство заблокировано. Также есть возможность восстановить пароль, если KeePass больше не работает. Дамп можно получить не только дампингом памяти процесса KeePass или всей системы, но и из файла подкачки(pagefile.sys) и файла гибернации (hiberfil.sys). Но есть и ограничение: пароль должен быть набран с клавиатуры, а не скопирован из буфера обмена.
О способе восстановления пароля из дампа я уже писал в своем канале. Давай повторим этот метод, для чего будем использовать KeePwn.
Код: Скопировать в буфер обмена
Спустя несколько минут работы программа завершает свое выполнение.
Мастер-пароль подобрать не удалось, однако мы получили 13 приблизительных кандидатов. Я загрузил последний вариант, так как он может навести нас на более полную информацию о пароле. Однако поисковый движок предложил другой вариант поиска.
Соглашаемся на измененный поиск и получаем похожую на нашу строку фразу rødgrød med fløde.
Из Google узнаём, что это название популяр ного в Дании киселя, но куда важнее, что это и есть мастер-пароль, который позволяет получить доступ к данным в базе KeePass. Видимо, из-за использования символа ø KeePwn не смог довести дело до конца.
В базе сохранен пароль рута и SSH-ключ в формате PuTTY. С паролем авторизоваться не вышло, поэтому кон вертируем ключ
Теперь с ключом авторизуемся по SSH и забираем последний флаг.
Машина захвачена!
В этом райтапе я покажу, как можно восстановить мастер-пароль от базы данных парольного менеджера KeePass из дампа памяти процесса, чтобы получить учетные дан ные и ключи. На пути к этому по традиции попен тестим веб-сер вис и соберем данные для продвижения.
Разведка
Сканирование портов
Добавляем IP-адрес машины в/etc/hosts
:10.10.11.227 keeper.htb
И запускаем сканирование портов.
Сканер нашел два открытых порта:
- 22 — служба OpenSSH 8.9p1;
- 80 — веб‑сервер Nginx 1.18.0.
Точка входа
На веб‑сервере нас встречает ссылка на службу поддержки, ведущая на другой поддомен: tickets.keeper.htb.Новый поддомен тоже добавляем в файл
/etc/hosts
10.10.11.227 keeper.htb tickets.keeper.htb
Теперь перейдем по ссылке. На новом сайте нас встречает страница авторизации системы заявок Request Tracker. Поиск эксплоитов ничего не дал, а типичная пара учетных данных оказалась невалидной. Однако всегда стоит проверять еще и учетные данные, заданные в том или ином ПО по умолчанию. Для Request Tracker это root
C дефолтными логином и паролем авторизуемся в Request Tracker, при этом, как оказалось, сразу от имени привилегированного пользователя.
В любых системах, связанных с тикетами и прочими заявками, первым делом нужно искать по словам вроде pass, secret, login, token. В данном случае при поиске подстроки pass отыскивается всего один тикет. Какие-то проблемы с клиентом KeePass для Windows.
К сожалению, ничего существенного не находим. Комментарии к заявке тоже никакой полезной информации не содержат.
Точка Опоры
В меню переходим по пути Admin → Users → Select и получаем список существующих в системе пользователей.
Как минимум уже нашли имя пользователя.
Теперь открываем профиль каждого пользователя и собираем информацию. Возможно, по ней получится сгенерировать список паролей для перебора, это тоже рабочий вектор.
В профиле пользователя lnorgaard мы находим не то что какую-то информацию, а целый пароль: Welcome2023!. С именем пользователя и паролем получается авторизоваться по SSH и забрать пользовательский флаг.
Локальное повышение привилегий
Теперь пора собрать информацию о системе, запущенных процессах, необычных файлах и прочих вещах, которые помогут нам найти возможность для повышения привилегий до рута. Я для этого использую скрипты PEASS.
Давай скачаем самую свежую версию скрипта для Linux
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh -O /tmp/linpeas.sh
Теперь нужно загрузить его на удаленный хост. Для этого можно использовать стандартные средства SSH. После загрузки необходимо дать скрипту право на выполнение и выполнить его.
Код: Скопировать в буфер обмена
Код:
scp /tmp/linpeas.sh lnorgaard@keeper.htb:~/
chmod +x ~/linpeas.sh
~/linpeas.sh
В выводе — масса информации, поэтому нужно отобрать только значимую.
К сожалению, интересного не так много. Разве что в домашнем каталоге пользователя нашелся какой-то архив RT30000.zip, оставленный рутом.
Также я всегда загружаю на хост утилиту pspy64, которая позволяет в реальном времени отслеживать выполняемые команды и процессы, запускаемые от имени любого, даже привилегированного пользователя. Увы, я прождал пять минут и ничего интересного не обнаружил.
Возвращаемся к найден ному архиву и скачиваем его на свой хост стандартными средствами SSH.
scp lnorgaard@keeper.htb:/home/lnorgaard/RT30000.zip ./
Внутри архива находим базу дан ных менеджера паролей KeePass passcodes.kdbx, а также, судя по названию, полный дамп работающего процесса этого менеджера паролей - KeePassDumpFull.dmp
На ум сразу приходит недавняя уязвимость CVE-2023-32784.
Дело в том, что в KeePass 2.x до вер сии 2.54 есть возможность восстановить мастер-пароль в открытом виде из дампа памяти, даже если рабочее пространство заблокировано. Также есть возможность восстановить пароль, если KeePass больше не работает. Дамп можно получить не только дампингом памяти процесса KeePass или всей системы, но и из файла подкачки(pagefile.sys) и файла гибернации (hiberfil.sys). Но есть и ограничение: пароль должен быть набран с клавиатуры, а не скопирован из буфера обмена.
О способе восстановления пароля из дампа я уже писал в своем канале. Давай повторим этот метод, для чего будем использовать KeePwn.
Код: Скопировать в буфер обмена
Код:
# install
git clone https://github.com/Orange-Cyberdefense/KeePwn.git
cd KeePwn
pip3 install -r requirements.txt
sudo python3 setup.py install
# run
KeePwn parse_dump --dump_file KeePassDumpFull.dmp --bruteforce
passcodes.kdbx
Спустя несколько минут работы программа завершает свое выполнение.
Мастер-пароль подобрать не удалось, однако мы получили 13 приблизительных кандидатов. Я загрузил последний вариант, так как он может навести нас на более полную информацию о пароле. Однако поисковый движок предложил другой вариант поиска.
Соглашаемся на измененный поиск и получаем похожую на нашу строку фразу rødgrød med fløde.
Из Google узнаём, что это название популяр ного в Дании киселя, но куда важнее, что это и есть мастер-пароль, который позволяет получить доступ к данным в базе KeePass. Видимо, из-за использования символа ø KeePwn не смог довести дело до конца.
В базе сохранен пароль рута и SSH-ключ в формате PuTTY. С паролем авторизоваться не вышло, поэтому кон вертируем ключ
puttygen key.putty -O private-openssh -o id_rsa_root
Теперь с ключом авторизуемся по SSH и забираем последний флаг.
Машина захвачена!