Организация «XXX» заключила соглашение с «ITFB.com.ua» на проведение теста на проникновение для определения склонности сайтов https://XXX.tools и https://XXX2.tools к уязвимостям.
Все действия были проведены таким образом, чтобы имитировать внешнего злоумышленника, который совершил целевую атаку на сайты с последующей целью:
● Раскрыть базу данных пользователей и получить возможность влиять на количество голосов при проведении голосования за проекты.
Также была поставлена дополнительная цель:
● Убедиться в надежности защиты ресурсов перед их запуском в рабочую эксплуатацию.
Были предприняты усилия по выявлению и использованию слабых мест безопасности, которые могут позволить удаленным злоумышленникам получить несанкционированный доступ к данным расположенных на ресурсах.
Атаки проводились с уровнем доступа, который должен иметь обычный пользователь Интернета.
Все испытания и действия проводились в контролируемых условиях.
Инициация атаки
Исследование
Получение информации и определения векторов атаки.
В попытке определить потенциальную поверхность атаки мы исследовали общие записи DNS для доменов xxx.tools и xxx2.tools
Намерение состояло в том, чтобы тщательно симулировать поведение злоумышленника без какой-либо внутренней информации.
Рисунок 1. Идентификация DNS записей
После идентификации серверов имен, мы попытались выполнить трансфер DNS зон и обнаружили, что сервер имен правильно настроен и запрещает осуществлять полную и неограниченную передачу DNS зон.
Рисунок 2. Проверка конфигурации зон DNS.
Далее мы проверили наличие уязвимостей в веб-окружении сервера https://xxx.tools и обнаружили использование устаревшей и склонной к уязвимостей версии «Rails», которая позволяет с помощью удаленного использования произвольного кода — читать конфиденциальную информацию из файлов расположенных на сервере любому не авторизованному в системе пользователю.
Рисунок 3. Пример HTTP запроса для получения списка системных учетных записей
Рисунок 4. Ответ сервера содержит список системных учетных записей
Веб-окружение сервера https://ххх.tools использует уязвимую версию библиотеки Javascript «jQuery» 1.12.4 в следующем скрипте.
Рисунок 5. Проверка версии jQuery.
Страница входа на ресурс https://ххх.ua/users/sign_in была протестирована многочисленными попытками входа под одним и тем же пользователем. Мы обнаружили, что страница не защищена от попыток подбора пароля (brute force). Дополнительно рекомендуется реализовать блокировку учетной записи после определенного количества попыток ввода неверного пароля.
Рисунок 6. Многочисленные попытки авторизации
Ресурс https://ххх.tools содержит * .css файлы, содержание которых раскрывает конфиденциальную информацию о внутренней файловой структуры сервера.
Рисунок 7. Раскрытие внутренней структуры сервера
По этой информации злоумышленник получает точное расположение web-приложения в файловой системе на сервере и может использовать это для дальнейших атак.
Попытки выполнить различные типы «XSS» или «CSRF» на ресурсах — не дали удовлетворительного результата. Ресурсы не склонны к этому типу уязвимостей.
Рейтинг безопасности
Каждой уязвимости, которая была обнаружена во время тестирования, назначается определенная степень риска. Критерии этой классификации приведены ниже.
Высокая степень
Высокая степень риска назначается, если эксплуатация уязвимости может привести к компрометации данных, доступности сервера или услуги, произвольного выполнения кода, манипулирования данными. Сюда входит отказ службы, слабые или стандартные пароли, отсутствие шифрования, доступ к произвольным файлам или конфиденциальных данных
Средняя степень
Уязвимость среднего риска не приводит непосредственно к компрометации или несанкционированному доступу, но предоставляет возможность или информацию, которая может быть использована потенциальным злоумышленником для дальнейшего использования совместно с другими уязвимыми ситуациями для компрометации ресурса. Например, открытый доступ к некритическим файлам, перечень некритичных каталогов, раскрытия полных путей. Все остальные уязвимости, которые не могут привести к компрометации ресурса, но которые могут быть использованы потенциальным злоумышленником для сбора информации и формирования векторов атак.
На данный момент состояние сервиса оценивается как средне критическое, поскольку было обнаружено несколько уязвимых ситуаций со средней степенью риска, позволяющие удаленный доступ к конфиденциальным данным. Рекомендации по их исправлению приведены ниже.
Рекомендации
- Обновить «jQuery» до актуальной версии или применить патч https://github.com/jquery/jquery/issues/2432
- Обновить» Ruby on Rails «до актуальной версии или применить патч
https://groups.google.com/forum/#!topic/rubyonrails-security/pFRKI96Sm8Q - Запретить отображение конфиденциальной информации в css файлах для пользователей ресурса
Вывод
Конкретные цели теста на проникновение были сформулированы следующим образом:
Проверить возможность раскрытия базы пользователей, возможность влияния на изменение количества голосов и убедиться в надежности защиты ресурсов перед их запуском в рабочую эксплуатацию.
Цели теста на проникновение не были достигнуты, потому что ресурсы имеют достаточную степень защиты на данный момент от подобных атак.
Важно отметить, что несмотря на достаточную степень защиты ресурсов на данный момент, мы настоятельно рекомендуем вам перед запуском системы в рабочую эксплуатацию принять соответствующие усилия для устранения выявленных недостатков.