
POC-Vulnérabilité d'injection SQL Django JSONField/HStoreField (CVE-2019-14234)
Django a publié une mise à jour de sécurité le 1er août 2019, corrigeant une vulnérabilité d'injection SQL dans les deux champs de modèle JSONField et HStoreField.
Lien de référence :
https://www.djangoproject.com/weblog/2019/aug/01/security-releases/ https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html
Cette vulnérabilité nécessite que le développeur utilise JSONField/HStoreField ; de plus, le nom du champ du queryset doit pouvoir être contrôlé. L'application intégrée de Django, Django-Admin, est affectée, ce qui nous offre un moyen simple de reproduire la vulnérabilité.
Compilez et démarrez un Django 2.2.3 vulnérable en exécutant la commande suivante :
docker compose build
docker compose up -d
Une fois l'environnement démarré, vous pouvez voir la page d'accueil de Django à http://your-ip:8000.
Tout d'abord, connectez-vous à Django-Admin avec le nom d'utilisateur et le mot de passe .
http://your-ip:8000/admin/admina123123123Ensuite, allez dans la vue liste http://your-ip:8000/admin/vuln/collection/ du modèle Collection :
Ajoutez detail__a'b=123 au paramètre GET, où detail est le JSONField :
Vous pouvez voir que le guillemet simple a été injecté avec succès, et la requête SQL génère une erreur :