Hack The Box є популярною платформою для пентестерів і фахівців з кібербезпеки, що пропонує навчальні машини для відпрацювання навичок. У цій статті розглянемо, як пройти машину Compromised, використовуючи реальні техніки зламу.
Публікуємо рішення задач, направлених на доробку, із платформи HackTheBox. Ці матеріали спрямовані на підтримку розвитку навичок у сфері інформаційної безпеки.
Доступ до лабораторії здійснюється через VPN. Для підключення рекомендується використовувати пристрій, на якому відсутні важливі дані, оскільки підключення здійснюється до приватної мережі з учасниками, які мають значний досвід у галузі інформаційної безпеки.
Ця машина має IP адресу 10.10.10.204, яку я додаємо в /etc/hosts.
10.10.10.207 compromised.htb
Спочатку виконується сканування відкритих портів. Для цього використовується скрипт, який приймає один аргумент — адресу хоста, що сканується:
#!/bin/bash ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) nmap -p$ports -A $1
Давайте подивимося на сайт.
Виявлено лише CMS LiteCart. Далі виконується сканування директорій за допомогою інструмента gobuster.
gobuster dir -t 128 -u http://compromised.htb/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -x html,php
Знаходимо цікаву директорію backup, а в ній архів.
Цей архів містить вихідні коди сайту.
Серед даних файлів, знаходимо згадку прихованого на сервері файлу.
Файл містить облікові дані адміністратора.
Авторизуємося.
Після вивчення даної CMS, знаходимо RCE експлоїт.
Проте інструмент не спрацьовує належним чином.
Аналізується код експлоїту, який використовує системну функцію, імовірно, заблоковану.
Для перевірки блокуємої функціональності змінюється навантаження та викликається phpinfo, щоб отримати список заборонених функцій.
Бачимо великий список таких функцій. Для обходу даних блокувань можемо використовувати цей код.
Змінимо код експлоїту так, щоб рахувати та відправити новий PHP код.
І цей код працює.
Подивимося на користувачів і помітимо, що у mysql є bash.
Для отримання зручного шелу використовується інструмент webwrap.
Оскільки MySQL підтримує виконання команд через командну оболонку, службу можна використовувати від імені звичайного користувача. Для цього виконуються команди безпосередньо через MySQL. Облікові дані для доступу до бази даних зазвичай зберігаються в конфігураційних файлах системи.
Тепер, коли були отримані облікові дані, перевіримо функції mysql.
Генеруються SSH-ключі, після чого публічний ключ додається до домашньої директорії служби. Для цього використовується команда exec cmd
, яка дозволяє виконати необхідні дії безпосередньо з MySQL.
mysql -u root --password=changethis -e "select execcmd('echo ssh-rsa AAAAB3NzaC1yc2EAAAADA/ ... 6GuPNZGryVNovs= ralf@ralf-PC > ~/.ssh/authorizedkeys');"
Заходимо по SSH.
Також можна переглянути журнали системи, де часто зберігаються або фігурують паролі. Аналіз логів може виявити облікові дані, які можна використовувати для подальшого доступу до системи.
Спробуємо змінити користувача зі знайденим паролем.
find . -mtime -100 2>/dev/null
Виявлено приховану бібліотеку pamunix.so, яка, ймовірно, є бекдором. У системі також присутня схожа легітимна версія цієї бібліотеки. Для подальшого аналізу підозрілий файл завантажується для перевірки його вмісту та функціональності.
scp [email protected]:/lib/x8664-linux-gnu/security/.pamunix.so ~/tmp/
Закидаємо в дизасемблер (я використовував Cutter).
Подивимося, де цей рядок використовується.
Під час аналізу бібліотеки спостерігається порівняння пароля з шістнадцятковими значеннями, що представляють половину рядка.
Спроба використати знайдений рядок як пароль для користувача root виявляється успішною, що дозволяє отримати повний доступ до системи з правами суперкористувача. Це підтверджує наявність бекдора, інтегрованого в систему через підозрілу бібліотеку.