PT-2012-28: Получение привилегий администратора в DataLife Engine

Уязвимое ПО

DataLife Engine
Версия: 9.6 и более ранняя

Ссылка:
http://dle-news.ru/

Рейтинг опасности

Уровень опасности: Высокий
Воздействие: Получение привилегий администратора
Вектор атаки: Удаленный

CVSS v2:
Base Score: 9.0
Vector: (AV:N/AC:L/Au:N/C:C/I:C/A:C)

CVE: отсутствует

Описание программы

DataLife Engine – система управления сайтами.

Описание уязвимости

Специалисты Исследовательского центра Positive Research компании Positive Technologies обнаружили уязвимость уязвимость предсказуемости кода подтверждения на сброс пароля администратора и предсказуемости впоследствии сгенерированного нового пароля.

Уязвимый фрагмент кода: engine/modules/lostpassword.php

$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand( ( double ) microtime() * 1000000 );

for($i = 0; $i < 15; $i ++) {
$rand_lost .= $salt{rand( 0, 33 )};
}

$lostid = sha1( md5( $lostname . $lostmail ) . time() . $rand_lost );

 

Уязвимый фрагмент кода: engine/modules/pm.php

$salt = "abchefghjkmnpqrstuvwxyz";
$random_key = "";

for($i = 0; $i < 8; $i ++) {
$random_key .= $salt{rand( 0, 23 )};
}

Для сброса пароля администратора необходимо указать его логин или email, определить существующий логин или email можно при попытке регистрации с проверяемым логином или email. Уязвимость возможна, так как DataLife Engine выводит значения вызовов функции генерации случайных числе rand, позволяя определить инициализационное значение функции srand (SEED) и с помощью этого определить всю последовательность случайно сгенерированных чисел, в т.ч. числа, используемые для генерации токена сброса пароля и генерации нового пароля. Так же, при установке на ОС Windows данный код обеспечивает всего 2^15 возможных вариантов генерируемых токенов. Для реализации атаки необходимо отправить два keep-alive запроса. С помощью первого аткующий получает sha-хэш от случайного числа, далее предугадав токен, вторым запросом атакующий запрашивает страницу сброса пароля администратора. С помощью действий описанных выше атакующий имеет возможность получить код для подтверждения смены пароля и изменить пароль администратора на свой собственный. Для этого так же необходимо знать следующие данные: id пользователя (для администратора он всегда равен 1), email и логин администратора (чаще всего admin@host.ru и admin).

Решение

Установите последнюю версию приложения.

Статус уведомления

17.08.2012 - Производитель уведомлен
17.08.2012 - Производителю отправлены детали уязвимости
12.09.2012 - Производитель выпустил исправление
04.02.2013 - Публикация уязвимости

Благодарности

Уязвимость обнаружили Тимур Юнусов, Арсений Реутов (Исследовательcкий центр Positive Research компании Positive Technologies)

Ссылки

http://www.securitylab.ru/lab/PT-2012-28

Список отчетов о ранее обнаруженных уязвимостях Positive Research:

http://www.ptsecurity.ru/lab/advisory/
http://www.securitylab.ru/lab/

Уязвимости