
POC-Django Vulnerabilidad de Inyección SQL en JSONField/HStoreField (CVE-2019-14234)
Django publicó una actualización de seguridad el 1 de agosto de 2019, que corrige una vulnerabilidad de inyección SQL en los dos campos de modelo JSONField y HStoreField.
Enlace de referencia:
https://www.djangoproject.com/weblog/2019/aug/01/security-releases/ https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html
La vulnerabilidad requiere que el desarrollador use JSONField/HStoreField; además, el nombre del campo del queryset puede ser controlado. La aplicación integrada de Django, Django-Admin, está afectada, lo que nos da una manera fácil de reproducir la vulnerabilidad.
Compila e inicia una versión vulnerable de Django 2.2.3 ejecutando el siguiente comando:
docker compose build
docker compose up -d
Después de iniciar el entorno, puedes ver la página principal de Django en http://your-ip:8000.
Primero, inicia sesión en Django-Admin http://your-ip:8000/admin/ con el nombre de usuario y la contraseña .
admina123123123Luego ve a la vista de lista http://your-ip:8000/admin/vuln/collection/ del modelo Collection:
Agrega detail__a'b=123 al parámetro GET, donde detail es el campo JSONField:
Puedes ver que la comilla simple se ha inyectado con éxito y la declaración SQL reporta un error: