Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье я расскажу, как решать CTF-задачку Sunset: decoy, которую ты можешь скачать с VulnHub. Повторив прохождение этой виртуалки вместе со мной, ты потренируешься подбирать пароли по хешам, мониторить процессы Linux без прав root, эксплуатировать уязвимости и передавать файлы через бэк-шелл.
Об авторе
Автор этой статьи — пентестер из команды FBK CyberSecurity. Это часть крупнейшей российской аудиторско-консалтинговой группы ФБК (Финансовые и бухгалтерские консультанты). Компания специализируется на услугах в области практической информационной безопасности.
Автор задачки — whitecr0wz, а опубликована она была 7 июля 2020 года. Машина предназначена для начинающих, поэтому и прохождение будет недлинным. Зато по пути я постараюсь разъяснить все шаги и рассказать об используемых утилитах. Мы проэксплуатируем известную уязвимость, чтобы повысить привилегии и прочитать файл в каталоге root.
Загруженная виртуальная машина
Не буду описывать подключение и запуск виртуальной машины, это уже делали мои коллеги в статье «Захват Ваканды. Ломаем виртуальную машину с VulnHub». Начнем с разведки, а точнее — с запуска утилиты netdiscover.
Netdiscover — простой инструмент обнаружения (ARP-сканер), который удобно использовать для поиска «живых» хостов в сети без конфигурации IP-адреса сетевого интерфейса.
По умолчанию утилиту можно запустить без параметров и получить результат в виде списка устройств. Однако для более тонкой настройки рекомендую ознакомиться с разными опциями, которые можно указать при запуске.
Целевая машина decoy находится с нами в одной подсети, поэтому просто пишем netdiscover
.
Обнаруженные сетевые адреса
Теперь мы знаем целевой IP-адрес — это 192.168.1.123. Следующим шагом сканируем хост и ищем открытые порты и запущенные сервисы. Просканируем порты популярной утилитой Nmap.
nmap -sV -sC -O -p - 192.168.1.123
Вот что значат наши ключи:
-sV
— вывести версии обнаруженных служб;-sC
— использовать базовый набор скриптов для получения расширенной информации;-O
— определить версию ОС;-p
— сканировать весь диапазон портов от 0 до 65 535.Результат сканирования всех портов утилитой Nmap
После полного сканирования хоста мы получим два открытых порта:
Начнем изучать целевую машину с веб-службы Apache. Заглавная страница на 80-м порте выдает нам индекс каталога.
Содержимое индексной страницы веб-сайта
Скачиваем единственный файл save.zip и пытаемся распаковать его. В результате узнаем, что он защищен паролем.
Содержимое архива save.zip
Чтобы получить доступ к содержимому, нужно подобрать пароль. Для этого нам нужна хеш-сигнатура файла. На помощь приходит вспомогательная утилита zip2john из состава пакета John the Ripper.
Выполнение утилиты zip2john
К сожалению, программа выдает хеш, совместимый только с «Джоном» (формат PKZIP), использовать его в моем любимом hashcat не удастся — он любит формат WinZIP.
Кто-то предпочтет другие утилиты, но, по моему опыту, на реальных проектах с длинными паролями hashcat выручает чаще. В данном же случае взлом пароля не вызовет трудностей, поскольку он тривиален и с легкостью поддается перебору по универсальному словарю rockyou (он входит в любой современный наступательный дистрибутив Linux вроде Kali и Parrot).
Успешный подбор пароля по словарю
Если же рассуждать о буднях пентестера в реальных условиях, то рекомендую обратить внимание на более увесистые словари. Например, в crackstation.txt.gz содержится 15 Гбайт реальных утечек, а в hashkiller-dict.7z еще 1,5 Гбайт.
Теперь можем распаковать архив и ознакомиться с его содержимым.
Успешная распаковка архива при помощи пароля
Содержимое распакованной папки etc не представляет особого интереса, кроме файла shadow. В нем содержится наименование учетных записей системы и хеши паролей. Попробуем подобрать пароль для какого-либо пользователя и подключиться к ранее обнаруженному порту 22 по SSH.
Выведем командой cat содержимое файла shadow и отфильтруем при помощи grep пользователей для перебора.
Если написать grep -v "*"
, то увидим все строки, в которых нет звездочек, то есть пользовательские, а не служебные учетные записи.
Выводим хеши паролей пользователей
Учетная запись systemd-coredump к делу тоже не относится, поэтому остаются только пользователи root и некто с длинным буквенно-цифровым логином.
Источник: xakep.ru