Приветствую всех любителей CTF и этичного хакинга на стороне Red Team! В этой статье мы рассмотрим прохождение легкого таска «СМС», разработанного пентестерами из команды Codeby.Games.
Справка: codeby.games — отечественный условно бесплатный веб-проект, где каждый может попрактиковаться в оттачивании навыков наступательной кибербезопасности. Таски (задания) представлены в широком спектре: начиная от использования методов OSINT и заканчивая компрометацией учебного домена Active Directory. CTF разделяются на три группы — «Легкий», «Средний», «Сложный» в различных категориях. Но подробнее об этом — на официальном сайте проекта.
Итак, приступим. Задание «СМС» находится в категории «Квесты».

Общий план решения CTF выглядит так:
-
Сканируем порты.
-
Проводим брутфорс эндпоинтов.
-
Изучаем логику работы Web API
-
Внедряем SQL-инъекцию и дампим БД.
-
Проводим брутфорс хэшей.
-
Подключаемся по SSH.
-
Повышаем привилегии в системе.
-
Получаем флаг.
1. Сканируем порты
Подключаемся к VPN и начинаем сканировать порты c помощью nmap, чтобы получить информацию о запущенных сервисах и версиях установленного ПО.

На сервере открыто всего два порта — tcp\22 (OpenSSH) и tcp\80 (Apache httpd). Не очень-то много, для того, чтобы понять вектор атаки. Идем дальше.
2. Проводим брутфорс эндпоинтов
У каждого пентестера свой набор инструментов для перебора эндпоинтов Web API. Я предпочитаю использовать gobuster из-за его достаточно широкого и гибкого функционала.

Нас интересует эндпоинт «/admin», который обычно свидетельствует о наличии точки входа в панель администратора. Однако новичкам я настоятельно рекомендую всегда вручную проверять каждый веб-каталог. Иногда там встречается очень много полезной информации, о которой забыл разработчик.
Нас автоматически редиректит на страницу авторизации веб-сервиса «Stock Management System».

И тут начинается самое интересное, потому что задачу можно решить двумя способами: легким и сложным. Суть легкого заключается в том, чтобы внимательно изучить Web API, а после — тщательно погуглить. Описывать легкий путь (а он на самом деле крайне легкий) я не буду, т.к. это не совсем педагогично:) Вместо этого, опишу «сложный», потому что он позволит лучше понять суть уязвимости, а также способы ее эксплуатации.
3. Изучаем работу Web API
Приложение принимает пользовательский ввод, в частности — логин и пароль. Вывод: приложение возможно работает с локальной базой данных. Намеренно вызываем ошибку и перехватываем POST-запрос его с помощью Burp Suite.


Мы видим ошибку в формировании SQL-запроса к локальной базе данных. Такой ответ свидетельствует об уязвимости к внедрению SQL-инъекции.
4. Внедряем SQL-инъекцию и дампим БД
Для этого лучше всего использовать утилиту sqlmap. Сохраняем POST-запрос в отдельный файл и формируем синтаксис команды (поскольку для защиты Web API используется WAF, следует использовать тамперы). Оговорюсь сразу: внедрять SQLi будет непросто, нужно поиграть с ключами. Подробнее об sqlmap и его опциях читай здесь
В результате эксплуатации уязвимости к SQL-инъекции, мы получим дамп таблицы

5. Проводим брутфорс хэшей
В данном таске есть два способа это сделать — с помощью самого sqlmap или с помощью утилиты hashcat. Как вам удобнее — выбирайте сами. К тому же, тип шифрования нам уже известен (см. п. 3)
Если используем hashcat, то синтаксис команды следующий: hashcat -a 3 -m 0 hash /path/to/custom/wordlist
6. Подключение по SSH
В результате перебора хэшей по словарю мы получаем пароль от учетной записи, которую можно использоваться для подключения по SSH. Кто эот пользователь — вы узнаете сами, когда завершите п. 5.
Переходим в каталог /home/<cutrrent_user> мы видим файл «first_part», но читать его может только root-пользователь

7. Повышаем привилегии в системе
Выполняем команду sudo -l, чтобы понять, какими правами обладает локальный пользователь. Вывод выглядит следующим образом:

Что с этим делать дальше? А дальше рекомендую ознакомиться с интересной фичей под названием GTFOBINS.
8. Получаем флаг
Изучив, как работает GTFOBINS, вы с легкостью получите root-права и сможете прочитать первую часть флага. Вторая же часть находится в каталоге /root. Соединив части вместе, впишите ответ в консоль и получите баллы за выполнение.
На этом все)
P.s.
Я намеренно не раскрывал весь путь решения от А до Я. На мой взгляд, лучше научиться самому видеть вектор атаки, понять способы ее проведения и как работать с доступными инструментами.
ссылка на оригинал статьи https://habr.com/ru/articles/893092/
Добавить комментарий