Получение флага SSH — корпоративная лаборатория Pentestit.ru v9

Alexandr Vishniakov
Hackerstan CTF Team
5 min readNov 24, 2016

--

Теперь настало время для продвижения далее. Через найденные в прошлых частях уязвимости мы только лишь получали данные и не получили доступ внутрь сети организации. Настало время попробовать на прочность 22 порт ssh, который открыт. Для этого нам необходимо просто попробовать законнектиться без указания пользователя, пусть будет текущий root. Выполняем команду ssh 192.168.101.8 и видим следующую картину:

Видим интересный баннер с информацией, что используется пам модуль для авторизации. Кстати многие пишут такие модули для того, чтобы упростить доступ для людей извне, и при этом как бы ограничить какими бы то ни было условиями время пребывания человека в сети. К примеру могут ограничить срок действия некоего простого пароля, который генерируется на основании каких-либо факторов.

Пароль, естественно, мы не знаем и тут нужно искать, получать информацию, которая бы могла пролить свет на кастомный механизм PAM модуля для SSH.

В первую очередь, бросается в глаза (c) krakenwaffe , похоже что автор оставил копирайт. Это очень интересно. В дело подключается фаза сбора информации - recon, как говорится. Предполагаем, что раз это разработчик модуля, то можно попробовать поискать информацию о нем на github.com.

В этом поможет утилитка gitrob, при помощи которой можно искать сенситив информацию на GitHub, в ней есть много паттернов, по которым она может маркировать файлы, чтобы обратить на них внимание.

Скармливаем программе команду gitrob analyze krakenwaffe и ждем, что же она нам отыщет. А отыскала она репозиторий, принадлежащий пользователю под этим ником.

Смотрим, что же интересного можно почерпнуть из найденных исходных файлов.

Видим, что присутствует какой то mypam.c и из названия понимаем, что возможно это то, что мы ищем. Начинаем с анализа исходного кода.

Видим, что этот пам модуль опирается на учетные записи, расположенные в /etc/passwd, а также обращаем внимание на то, что запрещен вход под root ом.

Также видим, что в случае срабатывания PAM модуля, нам будет выдано приглашение ввести пароль "The password: " - как видите это необычно. Такого приглашения мы не видели, когда коннектились под рутом к ssh cybear32c организации, что подтверждает блокировку входа под рутом.

Видим, что в качестве пароля используется фраза daypass + число текущего дня в месяце + число текущего часа. В итоге у нас должно получиться что-то типа daypassDDHH. Стоит заметить, что тут важен момент того, что если текущее число дня в месяце < 10, то ноль перед числом не ставится, так как это целое число, а не строка, как мы привыкли указывать в дате.

Но тут встает проблема, так как у нас множество временных зон и нужно как-то подобрать значение часа. Но это не проблема, я выбрал следующую стратегию: взять текущее число и текущее значение часа, отнимать по одному часу назад и пробовать входить. Таким образом, если текущие сутки в тайм зоне на сервере не отличаются от моих, то число попыток будет равно 24 или того меньше.

Но есть еще проблема — мы не знаем по каким пользователем собственно входить то! root заблокирован, а как же нам найти список пользователей или получить дополнительную информацию. Вот тут конечно мы можем взять инициалы пользователя из github и как-то с ними поиграться, нащупывая паттерн по которому формируются корпоративные логины, но я выбрал другой путь. Посмотрев в код PAM модуля стало ясно, что он использует список /etc/passwd , а это значит, что любой стандартный пользователь, который присутствует в этом файле сможет войти в систему через PAM, но не сможет ничего сделать в ней, так как прав естественно не будет нужных, но нам для начала этого и не надо. Нам нужна разведка.

Пробуем залогиниться взяв к примеру учетку backup - она должна присутствовать в системе.

Так и есть логинимся, используя команду ssh backup@192.168.101.8, вводим пароль дня и вуаля! Мы в системе. Теперь самое время осмотреться и определить какие пользователи присуствуют в системе. Смотрим в папку /home и видим три пользователя d.hash, e.grant, t.alvarez. Таким образом, у нас есть три учетки пользователей. Но мы возьмем конечно же учетку d.hash, так как это автор PAM модуля и его учетка, думаю, будет очень интересна.

Как видите под учеткой backup нам ничего не доступно. Просмореть содержимое папок для трех пользователей не можем. Не беда — логинимся под d.hash — ssh d.nash@192.168.101.8 и после ввода пароля дня успешно входим в учетку.

Сразу же осматриваемся, выполняем команду ls — пусто! Тогда выполняем комаду ls -al и видим скрытые папки. Нас естественно интересует папка .ssh, переходим внутрь папки.

И видим файл token.txt и это конечно не может ни радовать! Бежим фиксировать наш успех в профиле. Также тут есть ssh файлы пользователя, но для доступа, во внутреннюю сеть они нам не помощники, так как используется PAM модуль. Теперь у нас есть доступ во внутреннюю сеть, и это означает что мы идем в правильном направлении!.

--

--

«Переписывание с нуля гарантирует лишь одно — ноль!» — Мартин Фаулер