Codeby.Games. CTF TASK «СМС»/«SMS»

от автора

Приветствую всех любителей CTF и этичного хакинга на стороне Red Team! В этой статье мы рассмотрим прохождение легкого таска «СМС», разработанного пентестерами из команды Codeby.Games.

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

Итак, приступим. Задание «СМС» находится в категории «Квесты».

Тем, кто решает CTF впервые, следует знать, что подсказка к решению задачи нередко скрывается в самом описании задания. Как ее отыскать - однозначно ответить трудно. Многое зависит от опыта участия в CTF, работы в IТ-отрасли, личной внимательности и - самое главное -  практики в области наступательной кибербезопасности. Но если ты нашел подсказку, напиши в комментариях :)

Тем, кто решает CTF впервые, следует знать, что подсказка к решению задачи нередко скрывается в самом описании задания. Как ее отыскать — однозначно ответить трудно. Многое зависит от опыта участия в CTF, работы в IТ-отрасли, личной внимательности и — самое главное — практики в области наступательной кибербезопасности. Но если ты нашел подсказку, напиши в комментариях 🙂

Общий план решения CTF выглядит так:

  1. Сканируем порты.

  2. Проводим брутфорс эндпоинтов.

  3. Изучаем логику работы Web API

  4. Внедряем SQL-инъекцию и дампим БД.

  5. Проводим брутфорс хэшей.

  6. Подключаемся по SSH.

  7. Повышаем привилегии в системе.

  8. Получаем флаг.

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.

POST-запрос с преднамеренно неверными идентификаторами

POST-запрос с преднамеренно неверными идентификаторами
Ответ сервера на POST-запрос

Ответ сервера на POST-запрос

Мы видим ошибку в формировании 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *