Доброго времени суток, уважаемые читатели.
Давно я не писал примеры пентестов из собственной практики, пора это исправить.
Есть всего один заказ, после выполнения которого уже прошло достаточно времени, и клиент разрешил публикацию информации в сети, но, естественно, без упоминания названия компании, имен ее сотрудников и т.д. Чтобы не отнимать много времени, постараюсь изложить все кратко, без воды.
В один прекрасный день я получил заказ на проверку безопасности компании-провайдера X. Цель тестирования — попасть из внешней сети в локальную сеть кампании, а затем получить доступ к любой информации, представляющей хоть какую-то коммерческую ценность.
Исходные данные — сайт организации (представим его site.com).
Все началось с поиска машин, находящихся в той же подсети, что и официальный сайт. Таких хостов было найдено 10. Сразу копаться было не в чем: все «смотрящие» снаружи сервисы были последних версий, не поддавались брутфорсу по популярным словарям логина/пароля и не противодействовали ему (бан по IP, большая задержка между попытками входа), на веб-серверах при доступе Поисковик IP не обнаружил подозрительных каталогов или файлов.
Затем с помощью Google, Bing и пары поисковых систем был составлен список поддоменов site.com. Оказалось, что когда-то давно провайдер предоставлял услуги веб-хостинга на отдельном сервере.
Простые условия, небольшая комиссия, домен третьего уровня в подарок.
Многие из этих доменов работают до сих пор.
Просматривая эти сайты, один из них обнаружил форум phpBB с очень старой версией 2.0.15, содержащей уязвимость RCE (удаленное выполнение кода).
Уязвимость была немедленно использована, и в один из каталогов форума был добавлен шелл.
Однако в настройках PHP для каждого клиента была включена опция open_basedir с указанием его рабочего каталога, что ограничивало действия интерпретатора.
Safe_mode также был включен.
Но выход из этой ситуации был найден.
Покопавшись в phpinfo(), я нашел параметр Safe_mode_exec_dir с путем «/usr/bin/».
Как оказалось, администратор ввел это разрешение по запросу одного из клиентов, которому требовался доступ к бинарникам imagemagick. Конечно, в /usr/bin был Perl. Поэтому на хосте через system() сразу запускался перловый бэкдор, заливаемый в ту же директорию, что и шелл.
Внутри меня немного разочаровало — этот сервер не был подключен к локальной сети компании, но запустить на нем шелл — это уже что-то.
При этом особых ограничений в правах не было, и я легко бродил по веб-каталогам всех развернутых хостов.
Обработка информации с этого сервера заняла примерно 2 дня.
Были собраны все пароли от базы данных, администраторов размещенных сайтов, их пользователей и прочего, в надежде, что среди них окажется какой-нибудь тестовый проект, запущенный одним из администраторов и содержащий привилегированный логин и пароль.
Мои ожидания оправдались, и в итоге я нашел 2 проекта, оставленных админами.
Первый представлял собой копию старой версии основного сайта компании, а второй — бета-хостинг, на котором перед полноценным запуском размещалась новая версия того же сайта.
И там был форум, где сотрудники компании общались с пользователями, давали советы и размещали новости.
Все их хэши были тут же слиты и выложены на брут. Там же были найдены скрипты из старой версии личного кабинета, с помощью которых пользователи могли просматривать статистику своего аккаунта и менять тарифные планы.
Новая версия не наблюдалась на бета-хосте, но старая содержала текущие данные доступа к PostgreSQL, который был недоступен для подключения извне.
Клиент Pgsql не был установлен на хосте, где я находился.
Был только соответствующий модуль на Perl (на нём были написаны скрипты старого ЛК).
Пришлось написать на нем небольшую консольную утилиту, которая принимает sql-запрос от пользователя и отображает его результат в читаемом виде.
С его помощью мне удалось подключиться к базе данных и добраться до клиентской базы.
В частности, к таблице, содержащей логины и пароли пользователей для подключения к Интернету.
В нем я надеялся найти учетные записи администратора.
Теоретически они должны были быть самыми первыми в таблице.
Однако все оказалось гораздо проще.
Логины клиентов состояли из набора цифр, а для специальных аккаунтов они были буквенными.
Их было всего 10. К счастью, пароли хранились в открытом виде, и не нужно было ничего перебирать.
Собранные данные были добавлены к уже собранным паролям, и я получил список логинов/паролей привилегированных пользователей, которые могли бы помочь мне попасть на другие сервера.
Несколько административных аккаунтов с ранее найденных форумов подошли к админке форума текущего сайта.
Это был IPB3, и загрузить оболочку через админку не составило труда.
Текущий список счетов сотрудников был немедленно сверен с тем, что у меня было.
Всплыло 2 новых логина, хэши которых были сразу же проверены.
С теми хешами, которые не успели спариться за это время, я поступил проще.
В код форума был встроен бэкдор, записывающий вводимые пароли интересующих меня логинов, а сессии этих пользователей удалялись из базы данных, из-за чего каждому из них приходилось авторизоваться заново.
К концу следующего дня мой список эффективных логинов и паролей администратора увеличился еще на несколько записей.
Пришло время использовать его.
Для выбора целей на самом первом хосте, куда мне удалось получить шелл, был собран nmap, и он просканировал те же 10 хостов, доступных извне, но от имени сервера, находившегося с ними в одной сети.
Это дало результат – «появились» новые сервисы, недоступные из Интернета.
Затем была собрана Гидра и запущен SSH-брут (с него я решил начать) всех 10 серверов.
Это дало доступ к 3 дополнительным серверам.
Теперь я мог закрепиться на 5 из 10. Но мне не пришлось этого делать, поскольку один из них оказался подключен к локальной сети компании.
Развернув на нем тот же Nmap и Hydra, я начал исследовать местность.
Было обнаружено много интересного, но в первую очередь внимание привлек внутренний FTP-сервер и административная веб-панель Open-E NAS-XSR (файловое хранилище).
FTP сразу был установлен на Brute, а за Open-E NAS-XSR я пошёл в Google, так как раньше с этим продуктом не сталкивался.
Там, помимо общей информации, были найдены административные пароли по умолчанию, которые, как вы уже, наверное, догадались, соответствовали обнаруженной панели управления.
Он содержал список каталогов хранения SMB и имена пользователей, имевших к ним доступ.
Гидра в очередной раз удивила меня, сообщив, что доступ к smb по этим логинам осуществляется без паролей.
Используя 3proxy на сервере, доступном из внешней сети, я пробросил порты на «долю» и, подключившись к ней со своей машины, загрузил несколько случайно выбранных doc-файлов, которые были переданы заказчику в качестве искомых доказательств.
Будьте внимательны при администрировании своих ресурсов и желаю вам хорошей рабочей недели :) Теги: #взлом #проникновение #пентест #пентест #информационная безопасность
-
Мраморная Капля
19 Oct, 24 -
Результаты Тестов Geforce Gtx465
19 Oct, 24 -
Воздух Или Не Воздух?
19 Oct, 24