PoC for CVE-2019-19844 ( https://www.djangoproject.com/weblog/2019/dec/18/security-releases/ )# django_cve_2019_19844_poc
PoC for [CVE-2019-19844](https://www.djangoproject.com/weblog/2019/dec/18/security-releases/)

# Requirements
- Python 3.7.x
- PostgreSQL 9.5 or higher
## Setup
1. Create database(e.g. `django_cve_2019_19844_poc`)
1. Set the database name to the environment variable `DJANGO_DATABASE_NAME`(e.g. `export DJANGO_DATABASE_NAME=django_cve_2019_19844_poc`)
1. Run `pip install -r requirements.txt && ./manage.py migrate --noinput`
1. Create the following user with `shell` command:
```python
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> User.objects.create_user('mike123', 'mike@example.org', 'test123')
```
## Procedure For Reproducing
1. Run `./manage.py runserver`
1. Open `http://127.0.0.1:8000/accounts/password-reset/`
1. Input `mıke@example.org` (Attacker's email), and click send button
1. Receive email (Check console), and reset password
1. Login as `mike123` user

[4.0K] /data/pocs/ec22d603c7dfc6e365036924fbb68f4c1a163e83
├── [4.0K] accounts
│ ├── [ 63] admin.py
│ ├── [ 91] apps.py
│ ├── [ 345] forms.py
│ ├── [ 57] models.py
│ ├── [4.0K] templates
│ │ ├── [ 349] login.html
│ │ ├── [4.0K] mails
│ │ │ └── [4.0K] password_reset
│ │ │ ├── [ 155] body.txt
│ │ │ └── [ 15] subject.txt
│ │ ├── [ 221] password_reset_complete.html
│ │ ├── [ 265] password_reset_confirm.html
│ │ ├── [ 164] password_reset_done.html
│ │ ├── [ 299] password_reset.html
│ │ └── [ 218] profile.html
│ ├── [2.5K] tests.py
│ ├── [1.5K] urls.py
│ └── [1.0K] views.py
├── [4.0K] django_cve_2019_19844_poc
│ ├── [ 427] asgi.py
│ ├── [3.8K] settings.py
│ ├── [ 825] urls.py
│ └── [ 427] wsgi.py
├── [4.0K] images
│ └── [139K] email.jpg
├── [1.0K] LICENSE
├── [ 645] manage.py
├── [1.0K] README.md
├── [ 81] requirements.txt
└── [ 619] SECURITY.md
6 directories, 25 files