В 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.

Источник