
POC-Django JSONField/HStoreField SQL-Injection-Schwachstelle (CVE-2019-14234)
Am 1. August 2019 veröffentlichte Django ein Sicherheitsupdate, das eine SQL-Injection-Sicherheitslücke in den beiden Modellfeldern JSONField und HStoreField behebt.
Referenzlink:
https://www.djangoproject.com/weblog/2019/aug/01/security-releases/ https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html
Die Sicherheitslücke setzt voraus, dass der Entwickler JSONField/HStoreField verwendet; darüber hinaus muss der Feldname des Querysets kontrolliert werden können. Die in Django integrierte Anwendung Django-Admin ist betroffen, was uns eine einfache Möglichkeit bietet, die Sicherheitslücke zu reproduzieren.
Kompilieren und starten Sie eine verwundbare Django-2.2.3-Instanz, indem Sie den folgenden Befehl ausführen:
docker compose build
docker compose up -d
Nachdem die Umgebung gestartet wurde, können Sie die Startseite von Django unter http://your-ip:8000 aufrufen.
Melden Sie sich zunächst mit dem Benutzernamen admin und dem Passwort a123123123 beim Django-Admin http://your-ip:8000/admin/ an.
Rufen Sie dann die Listenansicht http://your-ip:8000/admin/vuln/collection/ des Modells Collection auf:
Fügen Sie dem GET-Parameter detail__a'b=123 hinzu, wobei detail das JSONField ist:
http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123
Sie können sehen, dass das einfache Anführungszeichen erfolgreich injiziert wurde und die SQL-Anweisung einen Fehler meldet: