Еще Один Пример Теста На Проникновение Из Нашей Собственной Практики.

Доброго времени суток, уважаемые читатели.

Давно я не писал примеры пентестов из собственной практики, пора это исправить.

Есть всего один заказ, после выполнения которого уже прошло достаточно времени, и клиент разрешил публикацию информации в сети, но, естественно, без упоминания названия компании, имен ее сотрудников и т.д. Чтобы не отнимать много времени, постараюсь изложить все кратко, без воды.

В один прекрасный день я получил заказ на проверку безопасности компании-провайдера 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-файлов, которые были переданы заказчику в качестве искомых доказательств.

Будьте внимательны при администрировании своих ресурсов и желаю вам хорошей рабочей недели :) Теги: #взлом #проникновение #пентест #пентест #информационная безопасность

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.