(PT-2012-30) Positive Technologies Security Advisory
Получение привилегий администратора в OpenCart
Уязвимое ПО
OpenCart
Версия: 1.5.3.1 и более ранняя
Ссылка:
http://www.opencart.com/
Рейтинг опасности
Уровень опасности: Высокий
Воздействие: Получение привилегий администратора
Вектор атаки: Удаленный
CVSS v2:
Base Score: 9.3
Vector: (AV:N/AC:M/Au:N/C:C/I:C/A:C)
CVE: отсутствует
Описание программы
OpenCart - это программное обеспечение с открытым исходным кодом и дружественным пользователю интерфейсом и множеством функций, которое используется для создания виртуальных магазинов.
Описание уязвимости
Специалисты Исследовательского центра Positive Research компании Positive Technologies обнаружили уязвимость "Получение привилегий администратора" в OpenCart.
Из-за того, что в механизме восстановления пароля используется небезопасный способ генерирования случайных чисел, атакующий может получить пароль администратора или других пользователей форума:
1. Предсказуемость кода подтверждения на сброс пароля администратора
Уязвимый фрагмент кода: admin/controller/common/forgotten.php
$code = md5(mt_rand());
Для сброса пароля администратора требуется указать его электронный адрес. Если атакующему известен электронный адрес администратора, который зачастую имеет вид admin@host.com, то он может изменить пароль администратора.
Эксплуатация данной уязвимости возможна, т. к. OpenCart получает случайные числа с помощью PHP-функции mt_rand, реализующей алгоритм Mersenne Twister, при этом генератор случайных чисел не инициализируется с помощью функции mt_srand.
В этом случае PHP для инициализации генератора используется псевдо-случайное 32-битное целое число, полученное на основе данных окружения текущего процесса.
Получив вывод функции mt_rand, атакующий имеет возможность получить исходное значение, использованное для инициализации генератора, путем перебора всех значений (2^32).
В OpenCart возможно получение значения функции mt_rand в виде MD5-хэша:
POST /admin/index.php?route=user/user HTTP/1.0
Host: host
Content-Length: 0
Connection: keep-alive
HTTP/1.1 302
...
Location: http://host/admin/index.php?route=common/home&token=2ead018af57862dda59cb67b77f19075
Таким образом, расшифровав md5 и получив случайное число, атакующий может получить исходное значение, использованное для генерирования случайных чисел, а затем предугадать все последующие случайные числа.
Для реализации атаки необходимо отправить два keep-alive запроса. Сначала атакующий получает MD5-хэш от случайного числа, а затем запрашивает страницу сброса пароля администратора. С помощью действий, описанных выше, атакующий имеет возможность получить код для подтверждения смены пароля и изменить пароль администратора.
2. Предсказуемость сгенерированного пароля при сбросе пароля обычного зарегистрированного пользователя или партнера (affiliate)
Уязвимый фрагмент кода: catalog/controller/account/forgotten.php, catalog/controller/affiliate/forgotten.php
$password = substr(md5(mt_rand()), 0, 10);
Для сброса пароля пользователя требуется указать его электронный адрес. Если электронный адрес известен, то существует возможность смены пароля без какого-либо дополнительного подтверждения, новый пароль будет отправлен на электронный адрес пользователя.
Аналогично работе с учетной записью администратора, атакующий имеет возможность предугадать сгенерированный пароль пользователя.
Решение
Установите последнюю версию приложения
Статус уведомления
23.08.2012 - Производитель уведомлен
23.08.2012 - Производителю отправлены детали уязвимости
23.08.2012 - Производитель выпустил исправление
11.09.2012 - Публикация уязвимости
Благодарности
Уязвимость обнаружил Арсений Реутов (Исследовательcкий центр Positive Research компании Positive Technologies)
Ссылки
http://www.securitylab.ru/lab/PT-2012-30
Список отчетов о ранее обнаруженных уязвимостях Positive Research:
http://www.ptsecurity.ru/lab/advisory/
http://www.securitylab.ru/lab/
О Positive Technologies
Positive Technologies www.ptsecurity.ru - одна из ведущих российских компаний в области информационной безопасности.
Основные направления деятельности компании - разработка систем комплексного мониторинга информационной безопасности (XSpider, MaxPatrol); предоставление консалтинговых и сервисных услуг в области информационной безопасности; развитие специализированного портала Securitylab.ru.
Заказчиками Positive Technologies являются более 40 государственных учреждений, более 50 банков и финансовых структур, 20 телекоммуникационных компаний, более 40 промышленных предприятий, компании ИТ-индустрии, сервисные и ритейловые компании России, стран СНГ, Балтии, а также Великобритании, Германии, Голландии, Израиля, Ирана, Китая, Мексики, США, Таиланда, Турции, Эквадора, ЮАР, Японии.
Positive Technologies - это команда высококвалифицированных разработчиков, консультантов и экспертов, которые обладают большим практическим опытом, имеют профессиональные звания и сертификаты, являются членами международных организаций и активно участвуют в развитии отрасли.