
POC-ثغرة حقن SQL في Django JSONField/HStoreField (CVE-2019-14234)
أصدرت Django تحديثًا أمنيًا في 1 أغسطس 2019، يُصلح ثغرة حقن SQL في حقلي النموذج JSONField وHStoreField.
الرابط المرجعي:
https://www.djangoproject.com/weblog/2019/aug/01/security-releases/ https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html
تتطلب الثغرة أن يستخدم المطوّر JSONField/HStoreField؛ علاوةً على ذلك، يجب أن يكون اسم حقل queryset قابلاً للتحكم. يتأثر تطبيق Django المدمج Django-Admin، مما يمنحنا طريقة سهلة لإعادة إنتاج الثغرة.
قم بترجمة وتشغيل Django 2.2.3 المستضعف عن طريق تنفيذ الأمر التالي:
docker compose build
docker compose up -d
بعد بدء البيئة، يمكنك رؤية الصفحة الرئيسية لـ Django على http://your-ip:8000.
أولاً، سجّل الدخول إلى Django-Admin على الرابط http://your-ip:8000/admin/ باستخدام اسم المستخدم admin وكلمة المرور a123123123.
ثم انتقل إلى عرض القائمة http://your-ip:8000/admin/vuln/collection/ الخاص بالنموذج Collection:
أضف detail__a'b=123 إلى معامل GET، حيث detail هو JSONField:
http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123
يمكنك ملاحظة أن علامة الاقتباس المفردة تم حقنها بنجاح، ويقوم بيان SQL بالإبلاغ عن خطأ: