
POC-Django JSONField/HStoreField Vulnerabilità di SQL Injection (CVE-2019-14234)
Django ha rilasciato un aggiornamento di sicurezza il 1 agosto 2019, che corregge una vulnerabilità di SQL injection nei due campi del modello JSONField e HStoreField.
Link di riferimento:
https://www.djangoproject.com/weblog/2019/aug/01/security-releases/ https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html
La vulnerabilità richiede che lo sviluppatore utilizzi JSONField/HStoreField; inoltre, il nome del campo del queryset può essere controllato. L'applicazione integrata di Django, Django-Admin, è interessata, il che ci fornisce un modo semplice per riprodurre la vulnerabilità.
Compila e avvia un Django 2.2.3 vulnerabile eseguendo il seguente comando:
docker compose build
docker compose up -d
Dopo aver avviato l'ambiente, puoi vedere la home page di Django all'indirizzo http://your-ip:8000.
Prima, effettua l'accesso a Django-Admin http://your-ip:8000/admin/ con nome utente admin e password a123123123.
Poi vai alla vista elenco http://your-ip:8000/admin/vuln/collection/ del modello Collection:
Aggiungi detail__a'b=123 al parametro GET, dove detail è il JSONField:
http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123
Puoi vedere che l'apostrofo è stato iniettato con successo, e l'istruzione SQL segnala un errore: